{
  "contractName": "CompoundVotingMachine",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract Avatar",
          "name": "avatar_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "rep_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "votingPeriodBlocks_",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "ProposalCanceled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "proposer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "targets",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "string[]",
          "name": "signatures",
          "type": "string[]"
        },
        {
          "indexed": false,
          "internalType": "bytes[]",
          "name": "calldatas",
          "type": "bytes[]"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "startBlock",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "endBlock",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "description",
          "type": "string"
        }
      ],
      "name": "ProposalCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "ProposalExecuted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "eta",
          "type": "uint256"
        }
      ],
      "name": "ProposalQueued",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "support",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "votes",
          "type": "uint256"
        }
      ],
      "name": "VoteCast",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "BALLOT_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DOMAIN_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "controller",
      "outputs": [
        {
          "internalType": "contract Controller",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "guardian",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "latestProposalIds",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proposalCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "proposals",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "proposer",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "eta",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "startBlock",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "endBlock",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "forVotes",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "againstVotes",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "canceled",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "executed",
          "type": "bool"
        },
        {
          "internalType": "uint256",
          "name": "quoromRequired",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rep",
      "outputs": [
        {
          "internalType": "contract ReputationInterface",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "votingPeriodBlocks",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "quorumVotes",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        }
      ],
      "name": "proposalThreshold",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proposalMaxOperations",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "votingDelay",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "votingPeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "queuePeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "gameChangerPeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "gracePeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "targets",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        },
        {
          "internalType": "string[]",
          "name": "signatures",
          "type": "string[]"
        },
        {
          "internalType": "bytes[]",
          "name": "calldatas",
          "type": "bytes[]"
        },
        {
          "internalType": "string",
          "name": "description",
          "type": "string"
        }
      ],
      "name": "propose",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "execute",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "cancel",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "getActions",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "targets",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        },
        {
          "internalType": "string[]",
          "name": "signatures",
          "type": "string[]"
        },
        {
          "internalType": "bytes[]",
          "name": "calldatas",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        }
      ],
      "name": "getReceipt",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "hasVoted",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "support",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "votes",
              "type": "uint256"
            }
          ],
          "internalType": "struct CompoundVotingMachine.Receipt",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "state",
      "outputs": [
        {
          "internalType": "enum CompoundVotingMachine.ProposalState",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "support",
          "type": "bool"
        }
      ],
      "name": "castVote",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "bool",
              "name": "support",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "internalType": "struct CompoundVotingMachine.VoteSig[]",
          "name": "votesFor",
          "type": "tuple[]"
        },
        {
          "components": [
            {
              "internalType": "bool",
              "name": "support",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "internalType": "struct CompoundVotingMachine.VoteSig[]",
          "name": "votesAgainst",
          "type": "tuple[]"
        }
      ],
      "name": "ecRecoverTest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "support",
          "type": "bool"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "castVoteBySig",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getChainId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract Avatar\",\"name\":\"avatar_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rep_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"votingPeriodBlocks_\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ProposalCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"string[]\",\"name\":\"signatures\",\"type\":\"string[]\"},{\"indexed\":false,\"internalType\":\"bytes[]\",\"name\":\"calldatas\",\"type\":\"bytes[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endBlock\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"name\":\"ProposalCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"}],\"name\":\"ProposalQueued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"votes\",\"type\":\"uint256\"}],\"name\":\"VoteCast\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BALLOT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"cancel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"}],\"name\":\"castVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"castVoteBySig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controller\",\"outputs\":[{\"internalType\":\"contract Controller\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct CompoundVotingMachine.VoteSig[]\",\"name\":\"votesFor\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct CompoundVotingMachine.VoteSig[]\",\"name\":\"votesAgainst\",\"type\":\"tuple[]\"}],\"name\":\"ecRecoverTest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gameChangerPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"getActions\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"string[]\",\"name\":\"signatures\",\"type\":\"string[]\"},{\"internalType\":\"bytes[]\",\"name\":\"calldatas\",\"type\":\"bytes[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"}],\"name\":\"getReceipt\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"hasVoted\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"votes\",\"type\":\"uint256\"}],\"internalType\":\"struct CompoundVotingMachine.Receipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gracePeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guardian\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"latestProposalIds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposalMaxOperations\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"proposalThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"proposals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"eta\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"forVotes\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"againstVotes\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"canceled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"executed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"quoromRequired\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"string[]\",\"name\":\"signatures\",\"type\":\"string[]\"},{\"internalType\":\"bytes[]\",\"name\":\"calldatas\",\"type\":\"bytes[]\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"name\":\"propose\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"queuePeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"quorumVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rep\",\"outputs\":[{\"internalType\":\"contract ReputationInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"state\",\"outputs\":[{\"internalType\":\"enum CompoundVotingMachine.ProposalState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"votingDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"votingPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"votingPeriodBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"cancel(uint256)\":{\"details\":\"could be cheating trying to bypass the single proposal per address by delegating to another address or when delegators do not concur with the proposal done in their name, they can withdraw\"},\"castVote(uint256,bool)\":{\"params\":{\"proposalId\":\"the proposal to vote on\",\"support\":\"for or against\"}},\"execute(uint256)\":{\"details\":\"anyone can call this once its ETA has arrived\"},\"propose(address[],uint256[],string[],bytes[],string)\":{\"params\":{\"calldatas\":\"the list of parameters to pass to each function\",\"signatures\":\"the list of functions to execute\",\"targets\":\"list of contracts to be excuted on\",\"values\":\"list of eth value to be used in each contract call\"},\"returns\":{\"_0\":\"uint256 proposal id\"}}},\"version\":1},\"userdoc\":{\"events\":{\"ProposalCanceled(uint256)\":{\"notice\":\"An event emitted when a proposal has been canceled\"},\"ProposalCreated(uint256,address,address[],uint256[],string[],bytes[],uint256,uint256,string)\":{\"notice\":\"An event emitted when a new proposal is created\"},\"ProposalExecuted(uint256)\":{\"notice\":\"An event emitted when a proposal has been executed\"},\"ProposalQueued(uint256,uint256)\":{\"notice\":\"An event emitted when a proposal has been queued\"},\"VoteCast(address,uint256,bool,uint256)\":{\"notice\":\"An event emitted when a vote has been cast on a proposal\"}},\"kind\":\"user\",\"methods\":{\"BALLOT_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the ballot struct used by the contract\"},\"DOMAIN_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for the contract's domain\"},\"cancel(uint256)\":{\"notice\":\"cancel a proposal in case proposer no longer holds the votes that were required to propose\"},\"castVote(uint256,bool)\":{\"notice\":\"cast your vote on a proposal\"},\"castVoteBySig(uint256,bool,uint8,bytes32,bytes32)\":{\"notice\":\"helper to cast a vote for someone else by using eip712 signatures\"},\"controller()\":{\"notice\":\"The address of the DAO controller\"},\"execute(uint256)\":{\"notice\":\"execute the proposal list of transactions\"},\"gameChangerPeriod()\":{\"notice\":\"During the queue period if vote decision has changed, we extend queue period so that at least gameChangerPeriod is left\"},\"getActions(uint256)\":{\"notice\":\"get the actions to be done in a proposal\"},\"getReceipt(uint256,address)\":{\"notice\":\"get the receipt of a single voter in a proposal\"},\"gracePeriod()\":{\"notice\":\"the time a succeeded proposal has to be executed on the blockchain\"},\"guardian()\":{\"notice\":\"The address of the Governor Guardian\"},\"latestProposalIds(address)\":{\"notice\":\"The latest proposal for each proposer\"},\"name()\":{\"notice\":\"The name of this contract\"},\"proposalCount()\":{\"notice\":\"The total number of proposals\"},\"proposalMaxOperations()\":{\"notice\":\"The maximum number of actions that can be included in a proposal\"},\"proposalThreshold(uint256)\":{\"notice\":\"The number of votes required in order for a voter to become a proposer\"},\"proposals(uint256)\":{\"notice\":\"The official record of all proposals ever proposed\"},\"propose(address[],uint256[],string[],bytes[],string)\":{\"notice\":\"make a proposal to be voted on\"},\"queuePeriod()\":{\"notice\":\"The duration of time after proposal passed thershold before it can be expected\"},\"quorumVotes()\":{\"notice\":\"The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed\"},\"rep()\":{\"notice\":\"The address of the DAO reputation token\"},\"state(uint256)\":{\"notice\":\"get the current status of a proposal\"},\"votingDelay()\":{\"notice\":\"The delay before voting on a proposal may take place, once proposed\"},\"votingPeriod()\":{\"notice\":\"The duration of voting on a proposal, in blocks\"},\"votingPeriodBlocks()\":{\"notice\":\"the number of blocks a proposal is open for voting (before passing quorum)\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/governance/CompoundVotingMachine.sol\":\"CompoundVotingMachine\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/DAOStackInterfaces.sol\":{\"keccak256\":\"0xec80b6f0ad18a184cc23b1e172a0d6bf1f1bb5404b086fef56d5beafc46aad04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ccc376680a6b45520d6158996e9c0e634c05cb374de1c6a27796afa3356bdb2\",\"dweb:/ipfs/QmZEUGR5HjF4Me6U9oXsEBeJ5PTvXe1HNNiVjVZbmhYf29\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/governance/CompoundVotingMachine.sol\":{\"keccak256\":\"0x43b69b6603e1b53e8c8e2e9eef79ef0ab3deb8a63f514507ba9067455099fe73\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40d533de44be36f547fcc47d94848533c7e0a0e989ca43a579b4a6939cf1d0b8\",\"dweb:/ipfs/QmbBRcnhfgvts4c6jwAATFg1fSyEdfMBeXTkMSejvJYxEi\"]},\"@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol\":{\"keccak256\":\"0xe9ecc18d06bcc5aa48c40a98333540248b6c1c18ecb6262329c06d3f0cbb45ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a81bcbe4f867a4eaf7ec375508a9901ea7517b9854c9a542c242050beda5127\",\"dweb:/ipfs/QmS499VRDhAgMg1pK96PiyRpP3gJZzzMcoNBbe8AV3JNw3\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b50604051620038fe380380620038fe83398101604081905262000034916200010b565b826001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200007057600080fd5b505af115801562000085573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ab9190620000e5565b600180546001600160a01b039283166001600160a01b0319918216179091556002805494909216931692909217909155600055506200016b565b600060208284031215620000f7578081fd5b8151620001048162000152565b9392505050565b60008060006060848603121562000120578182fd5b83516200012d8162000152565b6020850151909350620001408162000152565b80925050604084015190509250925092565b6001600160a01b03811681146200016857600080fd5b50565b613783806200017b6000396000f3fe6080604052600436106101b75760003560e01c8063739f1c6c116100ec578063d2895d161161008a578063deaaa7cc11610064578063deaaa7cc14610487578063e23a9a521461049c578063f77c4791146104c9578063fe0d94c1146104de576101b7565b8063d2895d161461043d578063da35c66414610452578063da95691a14610467576101b7565b80638b5d4b2c116100c65780638b5d4b2c146103e9578063a06db7dc146103fe578063b24b7ffd14610413578063ccc0795914610428576101b7565b8063739f1c6c146103945780637629a4ac146103b45780637bdbe4d0146103d4576101b7565b8063328dd982116101595780633e4f49e6116101335780633e4f49e61461030557806340e58ee514610332578063452a9320146103525780634634c61f14610374576101b7565b8063328dd982146102ab5780633408e470146102db5780633932abb1146102f0576101b7565b806315373e3d1161019557806315373e3d1461023f57806317977c611461026157806320606b701461028157806324bc1a6414610296576101b7565b8063013cf08b146101bc57806302a251a3146101fb57806306fdde031461021d575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046129e5565b6104f1565b6040516101f29a999897969594939291906135f3565b60405180910390f35b34801561020757600080fd5b50610210610553565b6040516101f29190612dc0565b34801561022957600080fd5b50610232610559565b6040516101f29190612e37565b34801561024b57600080fd5b5061025f61025a366004612aae565b61058b565b005b34801561026d57600080fd5b5061021061027c366004612858565b610639565b34801561028d57600080fd5b5061021061064b565b3480156102a257600080fd5b5061021061066f565b3480156102b757600080fd5b506102cb6102c63660046129e5565b610712565b6040516101f29493929190612d0c565b3480156102e757600080fd5b506102106109a1565b3480156102fc57600080fd5b506102106109a5565b34801561031157600080fd5b506103256103203660046129e5565b6109aa565b6040516101f29190612e23565b34801561033e57600080fd5b5061025f61034d3660046129e5565b610af4565b34801561035e57600080fd5b50610367610c48565b6040516101f29190612c7b565b34801561038057600080fd5b5061025f61038f366004612ad2565b610c57565b3480156103a057600080fd5b5061025f6103af366004612a44565b610e95565b3480156103c057600080fd5b506102106103cf3660046129e5565b611497565b3480156103e057600080fd5b506102106114f4565b3480156103f557600080fd5b506102106114f9565b34801561040a57600080fd5b50610210611500565b34801561041f57600080fd5b50610210611507565b34801561043457600080fd5b5061036761150d565b34801561044957600080fd5b5061021061151c565b34801561045e57600080fd5b50610210611523565b34801561047357600080fd5b50610210610482366004612874565b611529565b34801561049357600080fd5b5061021061196a565b3480156104a857600080fd5b506104bc6104b7366004612a15565b61197c565b6040516101f29190613536565b3480156104d557600080fd5b506103676119dd565b61025f6104ec3660046129e5565b6119ec565b6005602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b880154600d9098015496976001600160a01b03909616969495939492939192909160ff8082169261010090920416908a565b60005490565b60405180604001604052806016815260200175476f6f6444414f20566f74696e67204d616368696e6560501b81525081565b60008281526005602052604080822060025460078201549251635132dd2360e11b81529193926001600160a01b039091169163a265ba46916105d4913391600191600401612c8f565b60206040518083038186803b1580156105ec57600080fd5b505afa158015610600573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062491906129fd565b905061063233858584611c55565b50505b5050565b60066020526000908152604090205481565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b600061070d60646107076003600260009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106c957600080fd5b505afa1580156106dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070191906129fd565b90611dd5565b90611e16565b905090565b6060806060806000600560008781526020019081526020016000209050806003018160040182600501836006018380548060200260200160405190810160405280929190818152602001828054801561079457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610776575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156107e657602002820191906000526020600020905b8154815260200190600101908083116107d2575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156108b95760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156108a55780601f1061087a576101008083540402835291602001916108a5565b820191906000526020600020905b81548152906001019060200180831161088857829003601f168201915b50505050508152602001906001019061080e565b50505050915080805480602002602001604051908101604052809291908181526020016000905b8282101561098b5760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156109775780601f1061094c57610100808354040283529160200191610977565b820191906000526020600020905b81548152906001019060200180831161095a57829003601f168201915b5050505050815260200190600101906108e0565b5050505090509450945094509450509193509193565b4690565b600190565b600081600454101580156109be5750600082115b6109e35760405162461bcd60e51b81526004016109da9061333b565b60405180910390fd5b6000828152600560205260409020600b81015460ff1615610a08576003915050610aef565b80600701544311610a1d576000915050610aef565b600b810154610100900460ff1615610a39576007915050610aef565b60008160020154118015610a505750806002015442105b15610a5f576002915050610aef565b6002810154158015610a75575080600801544311155b15610a84576001915050610aef565b80600a01548160090154111580610aa2575080600d01548160090154105b15610ab1576004915050610aef565b60008160020154118015610ada5750610ad6610acb611500565b600283015490611e58565b4210155b15610ae9576006915050610aef565b60059150505b919050565b6000610aff826109aa565b90506007816007811115610b0f57fe5b1415610b2d5760405162461bcd60e51b81526004016109da9061338c565b60008281526005602052604090206007810154610b4990611497565b6002546001838101546001600160a01b039283169263a265ba4692911690610b714382611e7d565b6040518463ffffffff1660e01b8152600401610b8f93929190612c8f565b60206040518083038186803b158015610ba757600080fd5b505afa158015610bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdf91906129fd565b10610bfc5760405162461bcd60e51b81526004016109da90612e4a565b600b8101805460ff191660011790556040517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c90610c3b908590612dc0565b60405180910390a1505050565b6003546001600160a01b031681565b604080518082019091526016815275476f6f6444414f20566f74696e67204d616368696e6560501b60209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667ff0e8bb1b9036884fc34b9b811b9c0948f4a374ea4f5429d4533b8ab3c9fa3734610cd16109a1565b30604051602001610ce59493929190612dc9565b604051602081830303815290604052805190602001209050600060008051602061370e8339815191528787604051602001610d2293929190612ded565b60405160208183030381529060405280519060200120905060008282604051602001610d4f929190612c60565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610d8c9493929190612e05565b6020604051602081039080840390855afa158015610dae573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610de15760405162461bcd60e51b81526004016109da906130c4565b60008981526005602052604080822060025460078201549251635132dd2360e11b81529193926001600160a01b039091169163a265ba4691610e2a918791600191600401612c8f565b60206040518083038186803b158015610e4257600080fd5b505afa158015610e56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7a91906129fd565b9050610e88838c8c84611c55565b5050505050505050505050565b604080518082019091526016815275476f6f6444414f20566f74696e67204d616368696e6560501b60209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667ff0e8bb1b9036884fc34b9b811b9c0948f4a374ea4f5429d4533b8ab3c9fa3734610f0f6109a1565b30604051602001610f239493929190612dc9565b604051602081830303815290604052805190602001209050600060008051602061370e833981519152856001604051602001610f6193929190612ded565b604051602081830303815290604052805190602001209050600060008051602061370e833981519152866000604051602001610f9f93929190612ded565b60405160208183030381529060405280519060200120905060008383604051602001610fcc929190612c60565b60405160208183030381529060405280519060200120905060008483604051602001610ff9929190612c60565b60408051601f19818403018152918152815160209283012060008b8152600590935290822090925090805b89518163ffffffff16101561121457600085905060006001828d8563ffffffff168151811061104f57fe5b6020026020010151602001518e8663ffffffff168151811061106d57fe5b6020026020010151604001518f8763ffffffff168151811061108b57fe5b602002602001015160600151604051600081526020016040526040516110b49493929190612e05565b6020604051602081039080840390855afa1580156110d6573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166111095760405162461bcd60e51b81526004016109da906130c4565b8b8363ffffffff168151811061111b57fe5b6020026020010151600001511515600115151461114a5760405162461bcd60e51b81526004016109da90612ea7565b6002546007860154604051635132dd2360e11b81526001600160a01b039092169163a265ba4691611182918591600191600401612c8f565b60206040518083038186803b15801561119a57600080fd5b505afa1580156111ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d291906129fd565b6001600160a01b03919091166000908152600c8601602052604090208054610100600160ff19909216821761ff00191617909155930192919091019050611024565b508851156112595760008960405160200161122f9190612d64565b6040516020818303038152906040528051906020012060001c9050611257818c600185611c55565b505b506000805b88518163ffffffff16101561144857600084905060006001828c8563ffffffff168151811061128957fe5b6020026020010151602001518d8663ffffffff16815181106112a757fe5b6020026020010151604001518e8763ffffffff16815181106112c557fe5b602002602001015160600151604051600081526020016040526040516112ee9493929190612e05565b6020604051602081039080840390855afa158015611310573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113435760405162461bcd60e51b81526004016109da906130c4565b8a8363ffffffff168151811061135557fe5b6020908102919091010151511561137e5760405162461bcd60e51b81526004016109da906134c4565b6002546007860154604051635132dd2360e11b81526001600160a01b039092169163a265ba46916113b6918591600191600401612c8f565b60206040518083038186803b1580156113ce57600080fd5b505afa1580156113e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140691906129fd565b6001600160a01b03919091166000908152600c8601602052604090208054610100600160ff19909216821761ff0019161790915593019291909101905061125e565b5087511561148b576000886040516020016114639190612d64565b6040516020818303038152906040528051906020012060001c9050610e88818c600085611c55565b50505050505050505050565b600254604051630981b24d60e41b81526000916114ee91606491610707916001916001600160a01b03169063981b24d0906114d6908990600401612dc0565b60206040518083038186803b1580156106c957600080fd5b92915050565b600a90565b6202a30090565b6203f48090565b60005481565b6002546001600160a01b031681565b6201518090565b60045481565b60006115396103cf436001611e7d565b6002546001600160a01b031663a265ba463360016115574382611e7d565b6040518463ffffffff1660e01b815260040161157593929190612c8f565b60206040518083038186803b15801561158d57600080fd5b505afa1580156115a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c591906129fd565b116115e25760405162461bcd60e51b81526004016109da90613227565b845186511480156115f4575083518651145b8015611601575082518651145b61161d5760405162461bcd60e51b81526004016109da906133e9565b855161163b5760405162461bcd60e51b81526004016109da906132f9565b6116436114f4565b865111156116635760405162461bcd60e51b81526004016109da90613086565b3360009081526006602052604090205480156116f8576000611684826109aa565b9050600181600781111561169457fe5b141580156116ae575060028160078111156116ab57fe5b14155b6116ca5760405162461bcd60e51b81526004016109da90612f67565b60008160078111156116d857fe5b14156116f65760405162461bcd60e51b81526004016109da90613449565b505b600061170c6117056109a5565b4390611e58565b9050600061172261171b610553565b8390611e58565b600480546001019055905061173561229a565b604051806101c001604052806004548152602001336001600160a01b03168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581526020016117ab61066f565b9052805160009081526005602090815260409182902083518155818401516001820180546001600160a01b0319166001600160a01b0390921691909117905591830151600283015560608301518051939450849361180f9260038501920190612316565b506080820151805161182b91600484019160209091019061237b565b5060a082015180516118479160058401916020909101906123c2565b5060c0820151805161186391600684019160209091019061241b565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff0219169083151502179055506101a082015181600d015590505080600001516006600083602001516001600160a01b03166001600160a01b03168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e6040516119549998979695949392919061355b565b60405180910390a1519998505050505050505050565b60008051602061370e83398151915281565b611984612474565b5060009182526005602090815260408084206001600160a01b03939093168452600c9092018152918190208151606081018352815460ff8082161515835261010090910416151593810193909352600101549082015290565b6001546001600160a01b031681565b60056119f7826109aa565b6007811115611a0257fe5b14611a1f5760405162461bcd60e51b81526004016109da90613010565b600081815260056020526040902060020154421015611a505760405162461bcd60e51b81526004016109da90613282565b6000818152600560205260408120600b8101805461ff001916610100179055905b6003820154811015611c1957611c10826003018281548110611a8f57fe5b6000918252602090912001546004840180546001600160a01b039092169184908110611ab757fe5b9060005260206000200154846005018481548110611ad157fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611b5f5780601f10611b3457610100808354040283529160200191611b5f565b820191906000526020600020905b815481529060010190602001808311611b4257829003601f168201915b5050505050856006018581548110611b7357fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611c015780601f10611bd657610100808354040283529160200191611c01565b820191906000526020600020905b815481529060010190602001808311611be457829003601f168201915b50505050508660020154611ebf565b50600101611a71565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f82604051611c499190612dc0565b60405180910390a15050565b6001611c60846109aa565b6007811115611c6b57fe5b1480611c8a57506002611c7d846109aa565b6007811115611c8857fe5b145b611ca65760405162461bcd60e51b81526004016109da90612f15565b60008381526005602090815260408083206001600160a01b0388168452600c8101909252909120805460ff1615611cef5760405162461bcd60e51b81526004016109da90613191565b600a8201546009830154118415611d19576009830154611d0f9085611e58565b6009840155611d2e565b600a830154611d289085611e58565b600a8401555b600a8301546009840180548454600160ff19909116811761ff0019166101008a1515021786558501879055600d86015491549210921515929092141591111580611d80575082600d015483600a015410155b15611d8f57611d8f868261216e565b7f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4687878787604051611dc49493929190612ce4565b60405180910390a150505050505050565b600082611de4575060006114ee565b82820282848281611df157fe5b0414611e0f5760405162461bcd60e51b81526004016109da906131e6565b9392505050565b6000611e0f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612237565b600082820183811015611e0f5760405162461bcd60e51b81526004016109da90612fd9565b6000611e0f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061226e565b606080845160001415611ed3575082611eff565b848051906020012084604051602001611eed929190612c13565b60405160208183030381529060405290505b6001546000906060906001600160a01b038a811691161415611f8157886001600160a01b03168884604051611f349190612c44565b60006040518083038185875af1925050503d8060008114611f71576040519150601f19603f3d011682016040523d82523d6000602084013e611f76565b606091505b509092509050612145565b600160009054906101000a90046001600160a01b03166001600160a01b0316635aef7de66040518163ffffffff1660e01b815260040160206040518083038186803b158015611fcf57600080fd5b505afa158015611fe3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200791906129c9565b6001600160a01b03166108fc899081150290604051600060405180830381858888f1935050505015801561203f573d6000803e3d6000fd5b5060015460408051632d77bef360e11b815290516001600160a01b039092169163d1b7089a918c9187918591635aef7de691600480820192602092909190829003018186803b15801561209157600080fd5b505afa1580156120a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c991906129c9565b8c6040518563ffffffff1660e01b81526004016120e99493929190612cb0565b600060405180830381600087803b15801561210357600080fd5b505af1158015612117573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261213f9190810190612940565b90925090505b816121625760405162461bcd60e51b81526004016109da90613121565b98975050505050505050565b600082815260056020526040902060028101546121a1576121976121906114f9565b4290611e58565b6002820155612202565b81156121fc5760028101546000906121b99042611e7d565b90506121f16121c661151c565b82116121e3576121de826121d861151c565b90611e7d565b6121e6565b60005b600284015490611e58565b600283015550612202565b50610635565b7f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda2892838260020154604051610c3b929190613645565b600081836122585760405162461bcd60e51b81526004016109da9190612e37565b50600083858161226457fe5b0495945050505050565b600081848411156122925760405162461bcd60e51b81526004016109da9190612e37565b505050900390565b604051806101c001604052806000815260200160006001600160a01b03168152602001600081526020016060815260200160608152602001606081526020016060815260200160008152602001600081526020016000815260200160008152602001600015158152602001600015158152602001600081525090565b82805482825590600052602060002090810192821561236b579160200282015b8281111561236b57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612336565b50612377929150612494565b5090565b8280548282559060005260206000209081019282156123b6579160200282015b828111156123b657825182559160200191906001019061239b565b506123779291506124b3565b82805482825590600052602060002090810192821561240f579160200282015b8281111561240f57825180516123ff9184916020909101906124c8565b50916020019190600101906123e2565b50612377929150612535565b828054828255906000526020600020908101928215612468579160200282015b8281111561246857825180516124589184916020909101906124c8565b509160200191906001019061243b565b50612377929150612552565b604080516060810182526000808252602082018190529181019190915290565b5b808211156123775780546001600160a01b0319168155600101612495565b5b8082111561237757600081556001016124b4565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061250957805160ff19168380011785556123b6565b828001600101855582156123b657918201828111156123b657825182559160200191906001019061239b565b80821115612377576000612549828261256f565b50600101612535565b80821115612377576000612566828261256f565b50600101612552565b50805460018160011615610100020316600290046000825580601f1061259557506125b3565b601f0160209004906000526020600020908101906125b391906124b3565b50565b600082601f8301126125c6578081fd5b81356125d96125d48261367a565b613653565b8181529150602080830190848101818402860182018710156125fa57600080fd5b60005b84811015612622578135612610816136ea565b845292820192908201906001016125fd565b505050505092915050565b600082601f83011261263d578081fd5b813561264b6125d48261367a565b818152915060208083019084810160005b8481101561262257612673888484358a01016127f9565b8452928201929082019060010161265c565b600082601f830112612695578081fd5b81356126a36125d48261367a565b818152915060208083019084810160005b84811015612622576126cb888484358a01016127f9565b845292820192908201906001016126b4565b600082601f8301126126ed578081fd5b81356126fb6125d48261367a565b818152915060208083019084810160808085028701830188101561271e57600080fd5b6000805b868110156127835782848b031215612738578182fd5b61274183613653565b61274b8b866127ee565b81526127598b878701612847565b81870152604085810135908201526060808601359082015286529484019492820192600101612722565b5050505050505092915050565b600082601f8301126127a0578081fd5b81356127ae6125d48261367a565b8181529150602080830190848101818402860182018710156127cf57600080fd5b60005b84811015612622578135845292820192908201906001016127d2565b80356114ee816136ff565b600082601f830112612809578081fd5b81356128176125d48261369a565b915080825283602082850101111561282e57600080fd5b8060208401602084013760009082016020015292915050565b803560ff811681146114ee57600080fd5b600060208284031215612869578081fd5b8135611e0f816136ea565b600080600080600060a0868803121561288b578081fd5b853567ffffffffffffffff808211156128a2578283fd5b6128ae89838a016125b6565b965060208801359150808211156128c3578283fd5b6128cf89838a01612790565b955060408801359150808211156128e4578283fd5b6128f089838a01612685565b94506060880135915080821115612905578283fd5b61291189838a0161262d565b93506080880135915080821115612926578283fd5b50612933888289016127f9565b9150509295509295909350565b60008060408385031215612952578182fd5b825161295d816136ff565b602084015190925067ffffffffffffffff811115612979578182fd5b8301601f81018513612989578182fd5b80516129976125d48261369a565b8181528660208385010111156129ab578384fd5b6129bc8260208301602086016136be565b8093505050509250929050565b6000602082840312156129da578081fd5b8151611e0f816136ea565b6000602082840312156129f6578081fd5b5035919050565b600060208284031215612a0e578081fd5b5051919050565b60008060408385031215612a27578182fd5b823591506020830135612a39816136ea565b809150509250929050565b600080600060608486031215612a58578081fd5b83359250602084013567ffffffffffffffff80821115612a76578283fd5b612a82878388016126dd565b93506040860135915080821115612a97578283fd5b50612aa4868287016126dd565b9150509250925092565b60008060408385031215612ac0578182fd5b823591506020830135612a39816136ff565b600080600080600060a08688031215612ae9578283fd5b853594506020860135612afb816136ff565b9350612b0a8760408801612847565b94979396509394606081013594506080013592915050565b6000815180845260208085019450808401835b83811015612b5a5781516001600160a01b031687529582019590820190600101612b35565b509495945050505050565b6000815180845260208085018081965082840281019150828601855b85811015612bab578284038952612b99848351612be7565b98850198935090840190600101612b81565b5091979650505050505050565b6000815180845260208085019450808401835b83811015612b5a57815187529582019590820190600101612bcb565b60008151808452612bff8160208601602086016136be565b601f01601f19169290920160200192915050565b6001600160e01b0319831681528151600090612c368160048501602087016136be565b919091016004019392505050565b60008251612c568184602087016136be565b9190910192915050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b039390931683529015156020830152604082015260600190565b600060018060a01b03808716835260806020840152612cd26080840187612be7565b94166040830152506060015292915050565b6001600160a01b03949094168452602084019290925215156040830152606082015260800190565b600060808252612d1f6080830187612b22565b8281036020840152612d318187612bb8565b90508281036040840152612d458186612b65565b90508281036060840152612d598185612b65565b979650505050505050565b602080825282518282018190526000919060409081850190868401855b82811015612bab5781518051151585528681015160ff168786015285810151868601526060908101519085015260809093019290850190600101612d81565b90815260200190565b938452602084019290925260408301526001600160a01b0316606082015260800190565b92835260208301919091521515604082015260600190565b93845260ff9290921660208401526040830152606082015260800190565b6020810160088310612e3157fe5b91905290565b600060208252611e0f6020830184612be7565b60208082526037908201527f436f6d706f756e64566f74696e674d616368696e653a3a63616e63656c3a207060408201527f726f706f7365722061626f7665207468726573686f6c64000000000000000000606082015260800190565b60208082526048908201527f436f6d706f756e64566f74696e674d616368696e653a3a63617374566f74654260408201527f795369673a20696e76616c696420737570706f72742076616c756520696e20666060820152670dee440c4c2e8c6d60c31b608082015260a00190565b60208082526032908201527f436f6d706f756e64566f74696e674d616368696e653a3a5f63617374566f74656040820152710e881d9bdd1a5b99c81a5cc818db1bdcd95960721b606082015260800190565b6020808252606090820181905260008051602061372e83398151915260408301527f6f6e65206c6976652070726f706f73616c207065722070726f706f7365722c20908201527f666f756e6420616e20616c7265616479206163746976652070726f706f73616c608082015260a00190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526050908201527f436f6d706f756e64566f74696e674d616368696e653a3a657865637574653a2060408201527f70726f706f73616c2063616e206f6e6c7920626520657865637574656420696660608201526f081a5d081a5cc81cdd58d8d95959195960821b608082015260a00190565b602080825260309082015260008051602061372e83398151915260408201526f746f6f206d616e7920616374696f6e7360801b606082015260800190565b60208082526037908201527f436f6d706f756e64566f74696e674d616368696e653a3a63617374566f74654260408201527f795369673a20696e76616c6964207369676e6174757265000000000000000000606082015260800190565b6020808252604a908201527f436f6d706f756e64566f74696e674d616368696e653a3a65786563757465547260408201527f616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e606082015269103932bb32b93a32b21760b11b608082015260a00190565b60208082526035908201527f436f6d706f756e64566f74696e674d616368696e653a3a5f63617374566f74656040820152740e881d9bdd195c88185b1c9958591e481d9bdd1959605a1b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b602080825260479082015260008051602061372e83398151915260408201527f70726f706f73657220766f7465732062656c6f772070726f706f73616c2074686060820152661c995cda1bdb1960ca1b608082015260a00190565b60208082526051908201527f436f6d706f756e64566f74696e674d616368696e653a3a657865637574653a2060408201527f70726f706f73616c2063616e206f6e6c79206265206578656375746564206966606082015270206e6f2067616d65206368616e6765727360781b608082015260a00190565b602080825260349082015260008051602061372e8339815191526040820152736d7573742070726f7669646520616374696f6e7360601b606082015260800190565b60208082526031908201527f436f6d706f756e64566f74696e674d616368696e653a3a73746174653a20696e6040820152701d985b1a59081c1c9bdc1bdcd85b081a59607a1b606082015260800190565b6020808252603e908201527f436f6d706f756e64566f74696e674d616368696e653a3a63616e63656c3a206360408201527f616e6e6f742063616e63656c2065786563757465642070726f706f73616c0000606082015260800190565b6020808252604c9082015260008051602061372e83398151915260408201527f70726f706f73616c2066756e6374696f6e20696e666f726d6174696f6e20617260608201526b0d2e8f240dad2e6dac2e8c6d60a31b608082015260a00190565b602080825260619082015260008051602061372e83398151915260408201527f6f6e65206c6976652070726f706f73616c207065722070726f706f7365722c2060608201527f666f756e6420616e20616c72656164792070656e64696e672070726f706f73616080820152601b60fa1b60a082015260c00190565b6020808252604c908201527f436f6d706f756e64566f74696e674d616368696e653a3a63617374566f74654260408201527f795369673a20696e76616c696420737570706f72742076616c756520696e206160608201526b0cec2d2dce6e840c4c2e8c6d60a31b608082015260a00190565b8151151581526020808301511515908201526040918201519181019190915260600190565b8981526001600160a01b0389166020820152610120604082018190526000906135868382018b612b22565b9050828103606084015261359a818a612bb8565b905082810360808401526135ae8189612b65565b905082810360a08401526135c28188612b65565b90508560c08401528460e08401528281036101008401526135e38185612be7565b9c9b505050505050505050505050565b998a526001600160a01b039890981660208a015260408901969096526060880194909452608087019290925260a086015260c0850152151560e084015215156101008301526101208201526101400190565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561367257600080fd5b604052919050565b600067ffffffffffffffff821115613690578081fd5b5060209081020190565b600067ffffffffffffffff8211156136b0578081fd5b50601f01601f191660200190565b60005b838110156136d95781810151838201526020016136c1565b838111156106325750506000910152565b6001600160a01b03811681146125b357600080fd5b80151581146125b357600080fdfe8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee436f6d706f756e64566f74696e674d616368696e653a3a70726f706f73653a20a2646970667358221220b5400a6cfac6911007e632b49254f16abfb3468a163b1b8b6cfd135f33be0e3564736f6c634300060c0033",
  "deployedBytecode": "0x6080604052600436106101b75760003560e01c8063739f1c6c116100ec578063d2895d161161008a578063deaaa7cc11610064578063deaaa7cc14610487578063e23a9a521461049c578063f77c4791146104c9578063fe0d94c1146104de576101b7565b8063d2895d161461043d578063da35c66414610452578063da95691a14610467576101b7565b80638b5d4b2c116100c65780638b5d4b2c146103e9578063a06db7dc146103fe578063b24b7ffd14610413578063ccc0795914610428576101b7565b8063739f1c6c146103945780637629a4ac146103b45780637bdbe4d0146103d4576101b7565b8063328dd982116101595780633e4f49e6116101335780633e4f49e61461030557806340e58ee514610332578063452a9320146103525780634634c61f14610374576101b7565b8063328dd982146102ab5780633408e470146102db5780633932abb1146102f0576101b7565b806315373e3d1161019557806315373e3d1461023f57806317977c611461026157806320606b701461028157806324bc1a6414610296576101b7565b8063013cf08b146101bc57806302a251a3146101fb57806306fdde031461021d575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046129e5565b6104f1565b6040516101f29a999897969594939291906135f3565b60405180910390f35b34801561020757600080fd5b50610210610553565b6040516101f29190612dc0565b34801561022957600080fd5b50610232610559565b6040516101f29190612e37565b34801561024b57600080fd5b5061025f61025a366004612aae565b61058b565b005b34801561026d57600080fd5b5061021061027c366004612858565b610639565b34801561028d57600080fd5b5061021061064b565b3480156102a257600080fd5b5061021061066f565b3480156102b757600080fd5b506102cb6102c63660046129e5565b610712565b6040516101f29493929190612d0c565b3480156102e757600080fd5b506102106109a1565b3480156102fc57600080fd5b506102106109a5565b34801561031157600080fd5b506103256103203660046129e5565b6109aa565b6040516101f29190612e23565b34801561033e57600080fd5b5061025f61034d3660046129e5565b610af4565b34801561035e57600080fd5b50610367610c48565b6040516101f29190612c7b565b34801561038057600080fd5b5061025f61038f366004612ad2565b610c57565b3480156103a057600080fd5b5061025f6103af366004612a44565b610e95565b3480156103c057600080fd5b506102106103cf3660046129e5565b611497565b3480156103e057600080fd5b506102106114f4565b3480156103f557600080fd5b506102106114f9565b34801561040a57600080fd5b50610210611500565b34801561041f57600080fd5b50610210611507565b34801561043457600080fd5b5061036761150d565b34801561044957600080fd5b5061021061151c565b34801561045e57600080fd5b50610210611523565b34801561047357600080fd5b50610210610482366004612874565b611529565b34801561049357600080fd5b5061021061196a565b3480156104a857600080fd5b506104bc6104b7366004612a15565b61197c565b6040516101f29190613536565b3480156104d557600080fd5b506103676119dd565b61025f6104ec3660046129e5565b6119ec565b6005602052600090815260409020805460018201546002830154600784015460088501546009860154600a870154600b880154600d9098015496976001600160a01b03909616969495939492939192909160ff8082169261010090920416908a565b60005490565b60405180604001604052806016815260200175476f6f6444414f20566f74696e67204d616368696e6560501b81525081565b60008281526005602052604080822060025460078201549251635132dd2360e11b81529193926001600160a01b039091169163a265ba46916105d4913391600191600401612c8f565b60206040518083038186803b1580156105ec57600080fd5b505afa158015610600573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062491906129fd565b905061063233858584611c55565b50505b5050565b60066020526000908152604090205481565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b600061070d60646107076003600260009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106c957600080fd5b505afa1580156106dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070191906129fd565b90611dd5565b90611e16565b905090565b6060806060806000600560008781526020019081526020016000209050806003018160040182600501836006018380548060200260200160405190810160405280929190818152602001828054801561079457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610776575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156107e657602002820191906000526020600020905b8154815260200190600101908083116107d2575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156108b95760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156108a55780601f1061087a576101008083540402835291602001916108a5565b820191906000526020600020905b81548152906001019060200180831161088857829003601f168201915b50505050508152602001906001019061080e565b50505050915080805480602002602001604051908101604052809291908181526020016000905b8282101561098b5760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156109775780601f1061094c57610100808354040283529160200191610977565b820191906000526020600020905b81548152906001019060200180831161095a57829003601f168201915b5050505050815260200190600101906108e0565b5050505090509450945094509450509193509193565b4690565b600190565b600081600454101580156109be5750600082115b6109e35760405162461bcd60e51b81526004016109da9061333b565b60405180910390fd5b6000828152600560205260409020600b81015460ff1615610a08576003915050610aef565b80600701544311610a1d576000915050610aef565b600b810154610100900460ff1615610a39576007915050610aef565b60008160020154118015610a505750806002015442105b15610a5f576002915050610aef565b6002810154158015610a75575080600801544311155b15610a84576001915050610aef565b80600a01548160090154111580610aa2575080600d01548160090154105b15610ab1576004915050610aef565b60008160020154118015610ada5750610ad6610acb611500565b600283015490611e58565b4210155b15610ae9576006915050610aef565b60059150505b919050565b6000610aff826109aa565b90506007816007811115610b0f57fe5b1415610b2d5760405162461bcd60e51b81526004016109da9061338c565b60008281526005602052604090206007810154610b4990611497565b6002546001838101546001600160a01b039283169263a265ba4692911690610b714382611e7d565b6040518463ffffffff1660e01b8152600401610b8f93929190612c8f565b60206040518083038186803b158015610ba757600080fd5b505afa158015610bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdf91906129fd565b10610bfc5760405162461bcd60e51b81526004016109da90612e4a565b600b8101805460ff191660011790556040517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c90610c3b908590612dc0565b60405180910390a1505050565b6003546001600160a01b031681565b604080518082019091526016815275476f6f6444414f20566f74696e67204d616368696e6560501b60209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667ff0e8bb1b9036884fc34b9b811b9c0948f4a374ea4f5429d4533b8ab3c9fa3734610cd16109a1565b30604051602001610ce59493929190612dc9565b604051602081830303815290604052805190602001209050600060008051602061370e8339815191528787604051602001610d2293929190612ded565b60405160208183030381529060405280519060200120905060008282604051602001610d4f929190612c60565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610d8c9493929190612e05565b6020604051602081039080840390855afa158015610dae573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610de15760405162461bcd60e51b81526004016109da906130c4565b60008981526005602052604080822060025460078201549251635132dd2360e11b81529193926001600160a01b039091169163a265ba4691610e2a918791600191600401612c8f565b60206040518083038186803b158015610e4257600080fd5b505afa158015610e56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7a91906129fd565b9050610e88838c8c84611c55565b5050505050505050505050565b604080518082019091526016815275476f6f6444414f20566f74696e67204d616368696e6560501b60209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667ff0e8bb1b9036884fc34b9b811b9c0948f4a374ea4f5429d4533b8ab3c9fa3734610f0f6109a1565b30604051602001610f239493929190612dc9565b604051602081830303815290604052805190602001209050600060008051602061370e833981519152856001604051602001610f6193929190612ded565b604051602081830303815290604052805190602001209050600060008051602061370e833981519152866000604051602001610f9f93929190612ded565b60405160208183030381529060405280519060200120905060008383604051602001610fcc929190612c60565b60405160208183030381529060405280519060200120905060008483604051602001610ff9929190612c60565b60408051601f19818403018152918152815160209283012060008b8152600590935290822090925090805b89518163ffffffff16101561121457600085905060006001828d8563ffffffff168151811061104f57fe5b6020026020010151602001518e8663ffffffff168151811061106d57fe5b6020026020010151604001518f8763ffffffff168151811061108b57fe5b602002602001015160600151604051600081526020016040526040516110b49493929190612e05565b6020604051602081039080840390855afa1580156110d6573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166111095760405162461bcd60e51b81526004016109da906130c4565b8b8363ffffffff168151811061111b57fe5b6020026020010151600001511515600115151461114a5760405162461bcd60e51b81526004016109da90612ea7565b6002546007860154604051635132dd2360e11b81526001600160a01b039092169163a265ba4691611182918591600191600401612c8f565b60206040518083038186803b15801561119a57600080fd5b505afa1580156111ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d291906129fd565b6001600160a01b03919091166000908152600c8601602052604090208054610100600160ff19909216821761ff00191617909155930192919091019050611024565b508851156112595760008960405160200161122f9190612d64565b6040516020818303038152906040528051906020012060001c9050611257818c600185611c55565b505b506000805b88518163ffffffff16101561144857600084905060006001828c8563ffffffff168151811061128957fe5b6020026020010151602001518d8663ffffffff16815181106112a757fe5b6020026020010151604001518e8763ffffffff16815181106112c557fe5b602002602001015160600151604051600081526020016040526040516112ee9493929190612e05565b6020604051602081039080840390855afa158015611310573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113435760405162461bcd60e51b81526004016109da906130c4565b8a8363ffffffff168151811061135557fe5b6020908102919091010151511561137e5760405162461bcd60e51b81526004016109da906134c4565b6002546007860154604051635132dd2360e11b81526001600160a01b039092169163a265ba46916113b6918591600191600401612c8f565b60206040518083038186803b1580156113ce57600080fd5b505afa1580156113e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140691906129fd565b6001600160a01b03919091166000908152600c8601602052604090208054610100600160ff19909216821761ff0019161790915593019291909101905061125e565b5087511561148b576000886040516020016114639190612d64565b6040516020818303038152906040528051906020012060001c9050610e88818c600085611c55565b50505050505050505050565b600254604051630981b24d60e41b81526000916114ee91606491610707916001916001600160a01b03169063981b24d0906114d6908990600401612dc0565b60206040518083038186803b1580156106c957600080fd5b92915050565b600a90565b6202a30090565b6203f48090565b60005481565b6002546001600160a01b031681565b6201518090565b60045481565b60006115396103cf436001611e7d565b6002546001600160a01b031663a265ba463360016115574382611e7d565b6040518463ffffffff1660e01b815260040161157593929190612c8f565b60206040518083038186803b15801561158d57600080fd5b505afa1580156115a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c591906129fd565b116115e25760405162461bcd60e51b81526004016109da90613227565b845186511480156115f4575083518651145b8015611601575082518651145b61161d5760405162461bcd60e51b81526004016109da906133e9565b855161163b5760405162461bcd60e51b81526004016109da906132f9565b6116436114f4565b865111156116635760405162461bcd60e51b81526004016109da90613086565b3360009081526006602052604090205480156116f8576000611684826109aa565b9050600181600781111561169457fe5b141580156116ae575060028160078111156116ab57fe5b14155b6116ca5760405162461bcd60e51b81526004016109da90612f67565b60008160078111156116d857fe5b14156116f65760405162461bcd60e51b81526004016109da90613449565b505b600061170c6117056109a5565b4390611e58565b9050600061172261171b610553565b8390611e58565b600480546001019055905061173561229a565b604051806101c001604052806004548152602001336001600160a01b03168152602001600081526020018b81526020018a815260200189815260200188815260200184815260200183815260200160008152602001600081526020016000151581526020016000151581526020016117ab61066f565b9052805160009081526005602090815260409182902083518155818401516001820180546001600160a01b0319166001600160a01b0390921691909117905591830151600283015560608301518051939450849361180f9260038501920190612316565b506080820151805161182b91600484019160209091019061237b565b5060a082015180516118479160058401916020909101906123c2565b5060c0820151805161186391600684019160209091019061241b565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555061018082015181600b0160016101000a81548160ff0219169083151502179055506101a082015181600d015590505080600001516006600083602001516001600160a01b03166001600160a01b03168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e6040516119549998979695949392919061355b565b60405180910390a1519998505050505050505050565b60008051602061370e83398151915281565b611984612474565b5060009182526005602090815260408084206001600160a01b03939093168452600c9092018152918190208151606081018352815460ff8082161515835261010090910416151593810193909352600101549082015290565b6001546001600160a01b031681565b60056119f7826109aa565b6007811115611a0257fe5b14611a1f5760405162461bcd60e51b81526004016109da90613010565b600081815260056020526040902060020154421015611a505760405162461bcd60e51b81526004016109da90613282565b6000818152600560205260408120600b8101805461ff001916610100179055905b6003820154811015611c1957611c10826003018281548110611a8f57fe5b6000918252602090912001546004840180546001600160a01b039092169184908110611ab757fe5b9060005260206000200154846005018481548110611ad157fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611b5f5780601f10611b3457610100808354040283529160200191611b5f565b820191906000526020600020905b815481529060010190602001808311611b4257829003601f168201915b5050505050856006018581548110611b7357fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611c015780601f10611bd657610100808354040283529160200191611c01565b820191906000526020600020905b815481529060010190602001808311611be457829003601f168201915b50505050508660020154611ebf565b50600101611a71565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f82604051611c499190612dc0565b60405180910390a15050565b6001611c60846109aa565b6007811115611c6b57fe5b1480611c8a57506002611c7d846109aa565b6007811115611c8857fe5b145b611ca65760405162461bcd60e51b81526004016109da90612f15565b60008381526005602090815260408083206001600160a01b0388168452600c8101909252909120805460ff1615611cef5760405162461bcd60e51b81526004016109da90613191565b600a8201546009830154118415611d19576009830154611d0f9085611e58565b6009840155611d2e565b600a830154611d289085611e58565b600a8401555b600a8301546009840180548454600160ff19909116811761ff0019166101008a1515021786558501879055600d86015491549210921515929092141591111580611d80575082600d015483600a015410155b15611d8f57611d8f868261216e565b7f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c4687878787604051611dc49493929190612ce4565b60405180910390a150505050505050565b600082611de4575060006114ee565b82820282848281611df157fe5b0414611e0f5760405162461bcd60e51b81526004016109da906131e6565b9392505050565b6000611e0f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612237565b600082820183811015611e0f5760405162461bcd60e51b81526004016109da90612fd9565b6000611e0f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061226e565b606080845160001415611ed3575082611eff565b848051906020012084604051602001611eed929190612c13565b60405160208183030381529060405290505b6001546000906060906001600160a01b038a811691161415611f8157886001600160a01b03168884604051611f349190612c44565b60006040518083038185875af1925050503d8060008114611f71576040519150601f19603f3d011682016040523d82523d6000602084013e611f76565b606091505b509092509050612145565b600160009054906101000a90046001600160a01b03166001600160a01b0316635aef7de66040518163ffffffff1660e01b815260040160206040518083038186803b158015611fcf57600080fd5b505afa158015611fe3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200791906129c9565b6001600160a01b03166108fc899081150290604051600060405180830381858888f1935050505015801561203f573d6000803e3d6000fd5b5060015460408051632d77bef360e11b815290516001600160a01b039092169163d1b7089a918c9187918591635aef7de691600480820192602092909190829003018186803b15801561209157600080fd5b505afa1580156120a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c991906129c9565b8c6040518563ffffffff1660e01b81526004016120e99493929190612cb0565b600060405180830381600087803b15801561210357600080fd5b505af1158015612117573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261213f9190810190612940565b90925090505b816121625760405162461bcd60e51b81526004016109da90613121565b98975050505050505050565b600082815260056020526040902060028101546121a1576121976121906114f9565b4290611e58565b6002820155612202565b81156121fc5760028101546000906121b99042611e7d565b90506121f16121c661151c565b82116121e3576121de826121d861151c565b90611e7d565b6121e6565b60005b600284015490611e58565b600283015550612202565b50610635565b7f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda2892838260020154604051610c3b929190613645565b600081836122585760405162461bcd60e51b81526004016109da9190612e37565b50600083858161226457fe5b0495945050505050565b600081848411156122925760405162461bcd60e51b81526004016109da9190612e37565b505050900390565b604051806101c001604052806000815260200160006001600160a01b03168152602001600081526020016060815260200160608152602001606081526020016060815260200160008152602001600081526020016000815260200160008152602001600015158152602001600015158152602001600081525090565b82805482825590600052602060002090810192821561236b579160200282015b8281111561236b57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612336565b50612377929150612494565b5090565b8280548282559060005260206000209081019282156123b6579160200282015b828111156123b657825182559160200191906001019061239b565b506123779291506124b3565b82805482825590600052602060002090810192821561240f579160200282015b8281111561240f57825180516123ff9184916020909101906124c8565b50916020019190600101906123e2565b50612377929150612535565b828054828255906000526020600020908101928215612468579160200282015b8281111561246857825180516124589184916020909101906124c8565b509160200191906001019061243b565b50612377929150612552565b604080516060810182526000808252602082018190529181019190915290565b5b808211156123775780546001600160a01b0319168155600101612495565b5b8082111561237757600081556001016124b4565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061250957805160ff19168380011785556123b6565b828001600101855582156123b657918201828111156123b657825182559160200191906001019061239b565b80821115612377576000612549828261256f565b50600101612535565b80821115612377576000612566828261256f565b50600101612552565b50805460018160011615610100020316600290046000825580601f1061259557506125b3565b601f0160209004906000526020600020908101906125b391906124b3565b50565b600082601f8301126125c6578081fd5b81356125d96125d48261367a565b613653565b8181529150602080830190848101818402860182018710156125fa57600080fd5b60005b84811015612622578135612610816136ea565b845292820192908201906001016125fd565b505050505092915050565b600082601f83011261263d578081fd5b813561264b6125d48261367a565b818152915060208083019084810160005b8481101561262257612673888484358a01016127f9565b8452928201929082019060010161265c565b600082601f830112612695578081fd5b81356126a36125d48261367a565b818152915060208083019084810160005b84811015612622576126cb888484358a01016127f9565b845292820192908201906001016126b4565b600082601f8301126126ed578081fd5b81356126fb6125d48261367a565b818152915060208083019084810160808085028701830188101561271e57600080fd5b6000805b868110156127835782848b031215612738578182fd5b61274183613653565b61274b8b866127ee565b81526127598b878701612847565b81870152604085810135908201526060808601359082015286529484019492820192600101612722565b5050505050505092915050565b600082601f8301126127a0578081fd5b81356127ae6125d48261367a565b8181529150602080830190848101818402860182018710156127cf57600080fd5b60005b84811015612622578135845292820192908201906001016127d2565b80356114ee816136ff565b600082601f830112612809578081fd5b81356128176125d48261369a565b915080825283602082850101111561282e57600080fd5b8060208401602084013760009082016020015292915050565b803560ff811681146114ee57600080fd5b600060208284031215612869578081fd5b8135611e0f816136ea565b600080600080600060a0868803121561288b578081fd5b853567ffffffffffffffff808211156128a2578283fd5b6128ae89838a016125b6565b965060208801359150808211156128c3578283fd5b6128cf89838a01612790565b955060408801359150808211156128e4578283fd5b6128f089838a01612685565b94506060880135915080821115612905578283fd5b61291189838a0161262d565b93506080880135915080821115612926578283fd5b50612933888289016127f9565b9150509295509295909350565b60008060408385031215612952578182fd5b825161295d816136ff565b602084015190925067ffffffffffffffff811115612979578182fd5b8301601f81018513612989578182fd5b80516129976125d48261369a565b8181528660208385010111156129ab578384fd5b6129bc8260208301602086016136be565b8093505050509250929050565b6000602082840312156129da578081fd5b8151611e0f816136ea565b6000602082840312156129f6578081fd5b5035919050565b600060208284031215612a0e578081fd5b5051919050565b60008060408385031215612a27578182fd5b823591506020830135612a39816136ea565b809150509250929050565b600080600060608486031215612a58578081fd5b83359250602084013567ffffffffffffffff80821115612a76578283fd5b612a82878388016126dd565b93506040860135915080821115612a97578283fd5b50612aa4868287016126dd565b9150509250925092565b60008060408385031215612ac0578182fd5b823591506020830135612a39816136ff565b600080600080600060a08688031215612ae9578283fd5b853594506020860135612afb816136ff565b9350612b0a8760408801612847565b94979396509394606081013594506080013592915050565b6000815180845260208085019450808401835b83811015612b5a5781516001600160a01b031687529582019590820190600101612b35565b509495945050505050565b6000815180845260208085018081965082840281019150828601855b85811015612bab578284038952612b99848351612be7565b98850198935090840190600101612b81565b5091979650505050505050565b6000815180845260208085019450808401835b83811015612b5a57815187529582019590820190600101612bcb565b60008151808452612bff8160208601602086016136be565b601f01601f19169290920160200192915050565b6001600160e01b0319831681528151600090612c368160048501602087016136be565b919091016004019392505050565b60008251612c568184602087016136be565b9190910192915050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b039390931683529015156020830152604082015260600190565b600060018060a01b03808716835260806020840152612cd26080840187612be7565b94166040830152506060015292915050565b6001600160a01b03949094168452602084019290925215156040830152606082015260800190565b600060808252612d1f6080830187612b22565b8281036020840152612d318187612bb8565b90508281036040840152612d458186612b65565b90508281036060840152612d598185612b65565b979650505050505050565b602080825282518282018190526000919060409081850190868401855b82811015612bab5781518051151585528681015160ff168786015285810151868601526060908101519085015260809093019290850190600101612d81565b90815260200190565b938452602084019290925260408301526001600160a01b0316606082015260800190565b92835260208301919091521515604082015260600190565b93845260ff9290921660208401526040830152606082015260800190565b6020810160088310612e3157fe5b91905290565b600060208252611e0f6020830184612be7565b60208082526037908201527f436f6d706f756e64566f74696e674d616368696e653a3a63616e63656c3a207060408201527f726f706f7365722061626f7665207468726573686f6c64000000000000000000606082015260800190565b60208082526048908201527f436f6d706f756e64566f74696e674d616368696e653a3a63617374566f74654260408201527f795369673a20696e76616c696420737570706f72742076616c756520696e20666060820152670dee440c4c2e8c6d60c31b608082015260a00190565b60208082526032908201527f436f6d706f756e64566f74696e674d616368696e653a3a5f63617374566f74656040820152710e881d9bdd1a5b99c81a5cc818db1bdcd95960721b606082015260800190565b6020808252606090820181905260008051602061372e83398151915260408301527f6f6e65206c6976652070726f706f73616c207065722070726f706f7365722c20908201527f666f756e6420616e20616c7265616479206163746976652070726f706f73616c608082015260a00190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526050908201527f436f6d706f756e64566f74696e674d616368696e653a3a657865637574653a2060408201527f70726f706f73616c2063616e206f6e6c7920626520657865637574656420696660608201526f081a5d081a5cc81cdd58d8d95959195960821b608082015260a00190565b602080825260309082015260008051602061372e83398151915260408201526f746f6f206d616e7920616374696f6e7360801b606082015260800190565b60208082526037908201527f436f6d706f756e64566f74696e674d616368696e653a3a63617374566f74654260408201527f795369673a20696e76616c6964207369676e6174757265000000000000000000606082015260800190565b6020808252604a908201527f436f6d706f756e64566f74696e674d616368696e653a3a65786563757465547260408201527f616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e606082015269103932bb32b93a32b21760b11b608082015260a00190565b60208082526035908201527f436f6d706f756e64566f74696e674d616368696e653a3a5f63617374566f74656040820152740e881d9bdd195c88185b1c9958591e481d9bdd1959605a1b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b602080825260479082015260008051602061372e83398151915260408201527f70726f706f73657220766f7465732062656c6f772070726f706f73616c2074686060820152661c995cda1bdb1960ca1b608082015260a00190565b60208082526051908201527f436f6d706f756e64566f74696e674d616368696e653a3a657865637574653a2060408201527f70726f706f73616c2063616e206f6e6c79206265206578656375746564206966606082015270206e6f2067616d65206368616e6765727360781b608082015260a00190565b602080825260349082015260008051602061372e8339815191526040820152736d7573742070726f7669646520616374696f6e7360601b606082015260800190565b60208082526031908201527f436f6d706f756e64566f74696e674d616368696e653a3a73746174653a20696e6040820152701d985b1a59081c1c9bdc1bdcd85b081a59607a1b606082015260800190565b6020808252603e908201527f436f6d706f756e64566f74696e674d616368696e653a3a63616e63656c3a206360408201527f616e6e6f742063616e63656c2065786563757465642070726f706f73616c0000606082015260800190565b6020808252604c9082015260008051602061372e83398151915260408201527f70726f706f73616c2066756e6374696f6e20696e666f726d6174696f6e20617260608201526b0d2e8f240dad2e6dac2e8c6d60a31b608082015260a00190565b602080825260619082015260008051602061372e83398151915260408201527f6f6e65206c6976652070726f706f73616c207065722070726f706f7365722c2060608201527f666f756e6420616e20616c72656164792070656e64696e672070726f706f73616080820152601b60fa1b60a082015260c00190565b6020808252604c908201527f436f6d706f756e64566f74696e674d616368696e653a3a63617374566f74654260408201527f795369673a20696e76616c696420737570706f72742076616c756520696e206160608201526b0cec2d2dce6e840c4c2e8c6d60a31b608082015260a00190565b8151151581526020808301511515908201526040918201519181019190915260600190565b8981526001600160a01b0389166020820152610120604082018190526000906135868382018b612b22565b9050828103606084015261359a818a612bb8565b905082810360808401526135ae8189612b65565b905082810360a08401526135c28188612b65565b90508560c08401528460e08401528281036101008401526135e38185612be7565b9c9b505050505050505050505050565b998a526001600160a01b039890981660208a015260408901969096526060880194909452608087019290925260a086015260c0850152151560e084015215156101008301526101208201526101400190565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561367257600080fd5b604052919050565b600067ffffffffffffffff821115613690578081fd5b5060209081020190565b600067ffffffffffffffff8211156136b0578081fd5b50601f01601f191660200190565b60005b838110156136d95781810151838201526020016136c1565b838111156106325750506000910152565b6001600160a01b03811681146125b357600080fd5b80151581146125b357600080fdfe8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee436f6d706f756e64566f74696e674d616368696e653a3a70726f706f73653a20a2646970667358221220b5400a6cfac6911007e632b49254f16abfb3468a163b1b8b6cfd135f33be0e3564736f6c634300060c0033",
  "immutableReferences": {},
  "sourceMap": "202:20317:3:-:0;;;5771:319;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5991:7;-1:-1:-1;;;;;5991:13:3;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5967:10;:40;;-1:-1:-1;;;;;5967:40:3;;;-1:-1:-1;;;;;;5967:40:3;;;;;;;6011:3;:31;;;;;;;;;;;;;;;5967:10;6046:40;-1:-1:-1;202:20317:3;;454:263:-1;;569:2;557:9;548:7;544:23;540:32;537:2;;;-1:-1;;575:12;537:2;89:6;83:13;101:33;128:5;101:33;:::i;:::-;627:74;531:186;-1:-1;;;531:186::o;724:561::-;;;;886:2;874:9;865:7;861:23;857:32;854:2;;;-1:-1;;892:12;854:2;243:6;237:13;255:46;295:5;255:46;:::i;:::-;1068:2;1118:22;;83:13;944:87;;-1:-1;101:33;83:13;101:33;:::i;:::-;1076:74;;;;1187:2;1241:9;1237:22;391:13;1195:74;;848:437;;;;;:::o;1708:117::-;-1:-1;;;;;1563:54;;1767:35;;1757:2;;1816:1;;1806:12;1757:2;1751:74;:::o;:::-;202:20317:3;;;;;;",
  "deployedSourceMap": "202:20317:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4493:45;;;;;;;;;;-1:-1:-1;4493:45:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;1375:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;315:54::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;14240:306::-;;;;;;;;;;-1:-1:-1;14240:306:3;;;;;:::i;:::-;;:::i;:::-;;4593:52;;;;;;;;;;-1:-1:-1;4593:52:3;;;;;:::i;:::-;;:::i;4709:131::-;;;;;;;;;;;;;:::i;627:101::-;;;;;;;;;;;;;:::i;12293:298::-;;;;;;;;;;-1:-1:-1;12293:298:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;20383:134::-;;;;;;;;;;;;;:::i;1231:69::-;;;;;;;;;;;;;:::i;12859:1254::-;;;;;;;;;;-1:-1:-1;12859:1254:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11718:518::-;;;;;;;;;;-1:-1:-1;11718:518:3;;;;;:::i;:::-;;:::i;2300:23::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;17144:856::-;;;;;;;;;;-1:-1:-1;17144:856:3;;;;;:::i;:::-;;:::i;14624:2438::-;;;;;;;;;;-1:-1:-1;14624:2438:3;;;;;:::i;:::-;;:::i;820:146::-;;;;;;;;;;-1:-1:-1;820:146:3;;;;;:::i;:::-;;:::i;1053:80::-;;;;;;;;;;;;;:::i;1601:74::-;;;;;;;;;;;;;:::i;1998:::-;;;;;;;;;;;;;:::i;461:33::-;;;;;;;;;;;;;:::i;2216:30::-;;;;;;;;;;;;;:::i;1826:80::-;;;;;;;;;;;;;:::i;2370:28::-;;;;;;;;;;;;;:::i;6421:2222::-;;;;;;;;;;-1:-1:-1;6421:2222:3;;;;;:::i;:::-;;:::i;4921:96::-;;;;;;;;;;;;;:::i;12655:151::-;;;;;;;;;;-1:-1:-1;12655:151:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2131:28::-;;;;;;;;;;;;;:::i;9699:690::-;;;;;;:::i;:::-;;:::i;4493:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4493:45:3;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1375:87::-;1420:7;1440:18;1375:87;:::o;315:54::-;;;;;;;;;;;;;;-1:-1:-1;;;315:54:3;;;;:::o;14240:306::-;14360:25;14388:21;;;:9;:21;;;;;;14429:3;;14462:19;;;;14429:53;;-1:-1:-1;;;14429:53:3;;14388:21;;14360:25;-1:-1:-1;;;;;14429:3:3;;;;:14;;:53;;14444:10;;14429:3;;:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14413:69;;14493:49;14503:10;14515;14527:7;14536:5;14493:9;:49::i;:::-;14486:56;;14240:306;;;:::o;4593:52::-;;;;;;;;;;;;;:::o;4709:131::-;4753:87;4709:131;:::o;627:101::-;671:7;691:33;720:3;691:24;713:1;691:3;;;;;;;;;-1:-1:-1;;;;;691:3:3;-1:-1:-1;;;;;691:15:3;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:21;;:24::i;:::-;:28;;:33::i;:::-;684:40;;627:101;:::o;12293:298::-;12364:24;12393:23;12421:26;12452:24;12486:18;12507:9;:21;12517:10;12507:21;;;;;;;;;;;12486:42;;12540:1;:9;;12551:1;:8;;12561:1;:12;;12575:1;:11;;12532:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12532:55:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12532:55:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12532:55:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12293:298;;;;;:::o;20383:134::-;20483:9;20383:134;:::o;1231:69::-;1295:1;1231:69;:::o;12859:1254::-;12915:13;12963:10;12946:13;;:27;;:45;;;;;12990:1;12977:10;:14;12946:45;12934:117;;;;-1:-1:-1;;;12934:117:3;;;;;;;:::i;:::-;;;;;;;;;13056:25;13084:21;;;:9;:21;;;;;13114:17;;;;;;13110:1000;;;13145:22;13138:29;;;;;13110:1000;13198:8;:19;;;13182:12;:35;13178:932;;13231:21;13224:28;;;;;13178:932;13267:17;;;;;;;;;13263:847;;;13298:22;13291:29;;;;;13263:847;13354:1;13339:8;:12;;;:16;:50;;;;;13377:8;:12;;;13359:15;:30;13339:50;13331:779;;;13457:28;13450:35;;;;;13331:779;13531:12;;;;:17;:54;;;;;13568:8;:17;;;13552:12;:33;;13531:54;13496:614;;;13708:20;13701:27;;;;;13496:614;13768:8;:21;;;13747:8;:17;;;:42;;:92;;;;13816:8;:23;;;13796:8;:17;;;:43;13747:92;13739:371;;;13856:22;13849:29;;;;;13739:371;13912:1;13897:8;:12;;;:16;:73;;;;;13939:31;13956:13;:11;:13::i;:::-;13939:12;;;;;:16;:31::i;:::-;13920:15;:50;;13897:73;13889:221;;;14038:21;14031:28;;;;;13889:221;14082:23;14075:30;;;12859:1254;;;;:::o;11718:518::-;11765:19;11787:17;11793:10;11787:5;:17::i;:::-;11765:39;-1:-1:-1;11829:22:3;11820:5;:31;;;;;;;;;;11808:116;;;;-1:-1:-1;;;11808:116:3;;;;;;;:::i;:::-;11929:25;11957:21;;;:9;:21;;;;;12079:19;;;;12061:38;;:17;:38::i;:::-;11994:3;;;12009:17;;;;-1:-1:-1;;;;;11994:3:3;;;;:14;;12009:17;;;12034:19;:12;11994:3;12034:16;:19::i;:::-;11994:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:105;11982:183;;;;-1:-1:-1;;;11982:183:3;;;;;;;:::i;:::-;12170:17;;;:24;;-1:-1:-1;;12170:24:3;12190:4;12170:24;;;12204:28;;;;;;12221:10;;12204:28;:::i;:::-;;;;;;;;11718:518;;;:::o;2300:23::-;;;-1:-1:-1;;;;;2300:23:3;;:::o;17144:856::-;17355:4;;;;;;;;;;;;-1:-1:-1;;;17355:4:3;;;;;17256:23;4753:87;17339:22;17368:12;:10;:12::i;:::-;17395:4;17300:106;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17285:126;;;;;;17256:155;;17415:18;-1:-1:-1;;;;;;;;;;;17477:10:3;17489:7;17449:48;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17439:59;;;;;;17415:83;;17502:14;17566:15;17583:10;17537:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17522:77;;;;;;17502:97;;17603:17;17623:26;17633:6;17641:1;17644;17647;17623:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17623:26:3;;-1:-1:-1;;17623:26:3;;;-1:-1:-1;;;;;;;17665:23:3;;17653:101;;;;-1:-1:-1;;;17653:101:3;;;;;;;:::i;:::-;17816:25;17844:21;;;:9;:21;;;;;;17885:3;;17917:19;;;;17885:52;;-1:-1:-1;;;17885:52:3;;17844:21;;17816:25;-1:-1:-1;;;;;17885:3:3;;;;:14;;:52;;17900:9;;17885:3;;:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17869:68;;17948:48;17958:9;17969:10;17981:7;17990:5;17948:9;:48::i;:::-;17941:55;;;;;;17144:856;;;;;:::o;14624:2438::-;14844:4;;;;;;;;;;;;-1:-1:-1;;;14844:4:3;;;;;14745:23;4753:87;14828:22;14857:12;:10;:12::i;:::-;14884:4;14789:106;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14774:126;;;;;;14745:155;;14904:21;-1:-1:-1;;;;;;;;;;;14969:10:3;14981:4;14941:45;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14931:56;;;;;;14904:83;;14991:25;-1:-1:-1;;;;;;;;;;;15060:10:3;15072:5;15032:46;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15022:57;;;;;;14991:88;;15083:17;15150:15;15167:13;15121:60;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15106:80;;;;;;15083:103;;15190:21;15261:15;15278:17;15232:64;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;15232:64:3;;;;;;;;;15217:84;;15232:64;15217:84;;;;15306:25;15334:21;;;:9;:21;;;;;;15217:84;;-1:-1:-1;15334:21:3;15306:25;15377:592;15400:8;:15;15396:1;:19;;;15377:592;;;15427:14;15444:9;15427:26;;15459:17;15483:62;15493:6;15501:8;15510:1;15501:11;;;;;;;;;;;;;;;;:13;;;15516:8;15525:1;15516:11;;;;;;;;;;;;;;;;:13;;;15531:8;15540:1;15531:11;;;;;;;;;;;;;;;;:13;;;15483:62;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15483:62:3;;-1:-1:-1;;15483:62:3;;;-1:-1:-1;;;;;;;15563:23:3;;15550:104;;;;-1:-1:-1;;;15550:104:3;;;;;;;:::i;:::-;15672:8;15681:1;15672:11;;;;;;;;;;;;;;;;:19;;;:27;;15695:4;15672:27;;;15659:125;;;;-1:-1:-1;;;15659:125:3;;;;;;;:::i;:::-;15798:3;;15830:19;;;;15798:52;;-1:-1:-1;;;15798:52:3;;-1:-1:-1;;;;;15798:3:3;;;;:14;;:52;;15813:9;;15798:3;;:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15881:28:3;;;;15855:23;15881:28;;;:17;;;:28;;;;;15914:23;;;15933:4;-1:-1:-1;;15914:23:3;;;;;-1:-1:-1;;15942:22:3;;;;;15789:61;;;15417:3;;;;;-1:-1:-1;15377:592:3;;;-1:-1:-1;15976:15:3;;:19;15972:179;;16002:23;16077:8;16066:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;16056:31;;;;;;16048:40;;16002:88;;16095:51;16105:15;16122:10;16134:4;16140:5;16095:9;:51::i;:::-;15972:179;;-1:-1:-1;16163:1:3;;16168:647;16191:12;:19;16187:1;:23;;;16168:647;;;16222:14;16239:13;16222:30;;16258:17;16282:100;16298:6;16311:12;16324:1;16311:15;;;;;;;;;;;;;;;;:17;;;16335:12;16348:1;16335:15;;;;;;;;;;;;;;;;:17;;;16359:12;16372:1;16359:15;;;;;;;;;;;;;;;;:17;;;16282:100;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16282:100:3;;-1:-1:-1;;16282:100:3;;;-1:-1:-1;;;;;;;16400:23:3;;16387:104;;;;-1:-1:-1;;;16387:104:3;;;;;;;:::i;:::-;16509:12;16522:1;16509:15;;;;;;;;;;;;;;;;;;;;:23;:32;16496:134;;;;-1:-1:-1;;;16496:134:3;;;;;;;:::i;:::-;16644:3;;16676:19;;;;16644:52;;-1:-1:-1;;;16644:52:3;;-1:-1:-1;;;;;16644:3:3;;;;:14;;:52;;16659:9;;16644:3;;:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16727:28:3;;;;16701:23;16727:28;;;:17;;;:28;;;;;16760:23;;;16779:4;-1:-1:-1;;16760:23:3;;;;;-1:-1:-1;;16788:22:3;;;;;16635:61;;;16212:3;;;;;-1:-1:-1;16168:647:3;;;-1:-1:-1;16822:19:3;;:23;16818:188;;16852:23;16927:12;16916:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;16906:35;;;;;;16898:44;;16852:92;;16949:52;16959:15;16976:10;16988:5;16995;16949:9;:52::i;16818:188::-;14624:2438;;;;;;;;;;:::o;820:146::-;916:3;;:30;;-1:-1:-1;;;916:30:3;;895:7;;916:46;;958:3;;916:37;;951:1;;-1:-1:-1;;;;;916:3:3;;:17;;:30;;934:11;;916:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:46;909:53;820:146;-1:-1:-1;;820:146:3:o;1053:80::-;1127:2;1053:80;:::o;1601:74::-;1665:6;1601:74;:::o;1998:::-;2062:6;1998:74;:::o;461:33::-;;;;:::o;2216:30::-;;;-1:-1:-1;;;;;2216:30:3;;:::o;1826:80::-;1896:6;1826:80;:::o;2370:28::-;;;;:::o;6421:2222::-;6599:7;6684:38;6702:19;:12;6719:1;6702:16;:19::i;6684:38::-;6624:3;;-1:-1:-1;;;;;6624:3:3;:14;6639:10;6624:3;6657:19;:12;6624:3;6657:16;:19::i;:::-;6624:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:98;6612:192;;;;-1:-1:-1;;;6612:192:3;;;;;;;:::i;:::-;6838:6;:13;6820:7;:14;:31;:74;;;;;6877:10;:17;6859:7;:14;:35;6820:74;:116;;;;;6920:9;:16;6902:7;:14;:34;6820:116;6808:215;;;;-1:-1:-1;;;6808:215:3;;;;;;;:::i;:::-;7039:14;;7027:94;;;;-1:-1:-1;;;7027:94:3;;;;;;;:::i;:::-;7155:23;:21;:23::i;:::-;7137:7;:14;:41;;7125:112;;;;-1:-1:-1;;;7125:112:3;;;;;;;:::i;:::-;7287:10;7242:24;7269:29;;;:17;:29;;;;;;7307:21;;7303:543;;7335:42;7384:23;7390:16;7384:5;:23::i;:::-;7335:72;-1:-1:-1;7457:20:3;7425:28;:52;;;;;;;;;;:126;;;;-1:-1:-1;7523:28:3;7486;:65;;;;;;;;;;7425:126;7412:248;;;;-1:-1:-1;;;7412:248:3;;;;;;;:::i;:::-;7710:21;7678:28;:53;;;;;;;;;;7665:176;;;;-1:-1:-1;;;7665:176:3;;;;;;;:::i;:::-;7303:543;;7850:18;7871:31;7888:13;:11;:13::i;:::-;7871:12;;:16;:31::i;:::-;7850:52;;7906:16;7925:30;7940:14;:12;:14::i;:::-;7925:10;;:14;:30::i;:::-;7960:13;:15;;;;;;7906:49;-1:-1:-1;7979:27:3;;:::i;:::-;8012:339;;;;;;;;8031:13;;8012:339;;;;8060:10;-1:-1:-1;;;;;8012:339:3;;;;;8081:1;8012:339;;;;8097:7;8012:339;;;;8118:6;8012:339;;;;8142:10;8012:339;;;;8169:9;8012:339;;;;8196:10;8012:339;;;;8222:8;8012:339;;;;8246:1;8012:339;;;;8267:1;8012:339;;;;8284:5;8012:339;;;;;;8305:5;8012:339;;;;;;8332:13;:11;:13::i;:::-;8012:339;;8366:14;;8356:25;;;;:9;:25;;;;;;;;;:39;;;;;;;;;;;;;-1:-1:-1;;;;;;8356:39:3;-1:-1:-1;;;;;8356:39:3;;;;;;;;;;;;;;;;;;;;;;;8366:14;;-1:-1:-1;8366:14:3;;8356:39;;;;;;;;;:::i;:::-;-1:-1:-1;8356:39:3;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8356:39:3;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8356:39:3;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8441:11;:14;;;8399:17;:39;8417:11;:20;;;-1:-1:-1;;;;;8399:39:3;-1:-1:-1;;;;;8399:39:3;;;;;;;;;;;;:56;;;;8465:149;8485:11;:14;;;8504:10;8519:7;8531:6;8542:10;8557:9;8571:10;8586:8;8599:11;8465:149;;;;;;;;;;;;;;:::i;:::-;;;;;;;;8625:14;;6421:2222;-1:-1:-1;;;;;;;;;6421:2222:3:o;4921:96::-;-1:-1:-1;;;;;;;;;;;4921:96:3;:::o;12655:151::-;12737:14;;:::i;:::-;-1:-1:-1;12765:21:3;;;;:9;:21;;;;;;;;-1:-1:-1;;;;;12765:37:3;;;;;;:30;;;;:37;;;;;;12758:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12655:151::o;2131:28::-;;;-1:-1:-1;;;;;2131:28:3;;:::o;9699:690::-;9788:23;9767:17;9773:10;9767:5;:17::i;:::-;:44;;;;;;;;;9755:147;;;;-1:-1:-1;;;9755:147:3;;;;;;;:::i;:::-;9918:21;;;;:9;:21;;;;;:25;;;9947:15;-1:-1:-1;9918:44:3;9906:148;;;;-1:-1:-1;;;9906:148:3;;;;;;;:::i;:::-;10058:25;10086:21;;;:9;:21;;;;;10111:17;;;:24;;-1:-1:-1;;10111:24:3;;;;;10086:21;10139:210;10163:16;;;:23;10159:27;;10139:210;;;10198:146;10223:8;:16;;10240:1;10223:19;;;;;;;;;;;;;;;;;;10248:15;;;:18;;-1:-1:-1;;;;;10223:19:3;;;;10264:1;;10248:18;;;;;;;;;;;;;;10272:8;:19;;10292:1;10272:22;;;;;;;;;;;;;;;;;;10198:146;;;;;;;-1:-1:-1;;10198:146:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10272:22;10198:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10300:8;:18;;10319:1;10300:21;;;;;;;;;;;;;;;;;;10198:146;;;;;;;-1:-1:-1;;10198:146:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10300:21;10198:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10327:8;:12;;;10198:19;:146::i;:::-;-1:-1:-1;10188:3:3;;10139:210;;;;10357:28;10374:10;10357:28;;;;;;:::i;:::-;;;;;;;;9699:690;;:::o;18047:1114::-;18187:20;18166:17;18172:10;18166:5;:17::i;:::-;:41;;;;;;;;;:98;;;-1:-1:-1;18236:28:3;18215:17;18221:10;18215:5;:17::i;:::-;:49;;;;;;;;;18166:98;18154:171;;;;-1:-1:-1;;;18154:171:3;;;;;;;:::i;:::-;18330:25;18358:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;18409:24:3;;;;:17;;;:24;;;;;;18449:16;;;;:25;18437:101;;;;-1:-1:-1;;;18437:101:3;;;;;;;:::i;:::-;18581:21;;;;18561:17;;;;:41;18606:143;;;;18644:17;;;;:28;;18666:5;18644:21;:28::i;:::-;18624:17;;;:48;18606:143;;;18712:21;;;;:32;;18738:5;18712:25;:32::i;:::-;18688:21;;;:56;18606:143;18801:21;;;;18781:17;;;;;18827:23;;18846:4;-1:-1:-1;;18827:23:3;;;;;-1:-1:-1;;18854:25:3;18827:23;18854:25;;;;;;;18883:13;;:21;;;18988:23;;;;18967:17;;-1:-1:-1;;18766:57:3;;;;;;;;;-1:-1:-1;18967:44:3;;:99;;;19043:8;:23;;;19018:8;:21;;;:48;;18967:99;18959:146;;;19071:34;19082:10;19094;19071;:34::i;:::-;19114:43;19123:5;19130:10;19142:7;19151:5;19114:43;;;;;;;;;:::i;:::-;;;;;;;;18047:1114;;;;;;;:::o;2199:459:15:-;2257:7;2498:6;2494:45;;-1:-1:-1;2527:1:15;2520:8;;2494:45;2561:5;;;2565:1;2561;:5;:1;2584:5;;;;;:10;2576:56;;;;-1:-1:-1;;;2576:56:15;;;;;;;:::i;:::-;2650:1;2199:459;-1:-1:-1;;;2199:459:15:o;3120:130::-;3178:7;3204:39;3208:1;3211;3204:39;;;;;;;;;;;;;;;;;:3;:39::i;893:176::-;951:7;982:5;;;1005:6;;;;997:46;;;;-1:-1:-1;;;997:46:15;;;;;;;:::i;1340:134::-;1398:7;1424:43;1428:1;1431;1424:43;;;;;;;;;;;;;;;;;:3;:43::i;10547:860:3:-;10695:12;10713:21;10749:9;10743:23;10770:1;10743:28;10739:158;;;-1:-1:-1;10789:4:3;10739:158;;;10865:9;10849:27;;;;;;10883:4;10820:72;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10809:83;;10739:158;10958:10;;10901:7;;10912:19;;-1:-1:-1;;;;;10940:29:3;;;10958:10;;10940:29;10936:316;;;10991:6;-1:-1:-1;;;;;10991:11:3;11011:5;11019:8;10991:37;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10976:52:3;;-1:-1:-1;10976:52:3;-1:-1:-1;10936:316:3;;;11060:10;;;;;;;;;-1:-1:-1;;;;;11060:10:3;-1:-1:-1;;;;;11060:17:3;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11044:46:3;:53;11091:5;11044:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11158:10:3;;11212:19;;;-1:-1:-1;;;11212:19:3;;;;-1:-1:-1;;;;;11158:10:3;;;;:22;;11186:6;;11198:8;;11158:10;;11212:17;;:19;;;;;;;;;;;;;;;11158:10;11212:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11237:5;11158:89;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11158:89:3;;;;;;;;;;;;:::i;:::-;11143:104;;-1:-1:-1;11143:104:3;-1:-1:-1;10936:316:3;11267:2;11255:99;;;;-1:-1:-1;;;11255:99:3;;;;;;;:::i;:::-;11397:6;10547:860;-1:-1:-1;;;;;;;;10547:860:3:o;8914:671::-;8988:25;9016:21;;;:9;:21;;;;;9120:12;;;;9116:417;;9159:34;9179:13;:11;:13::i;:::-;9159:15;;:19;:34::i;:::-;9144:12;;;:49;9116:417;;;9306:14;9302:231;;;9346:12;;;;9327:16;;9346:33;;9363:15;9346:16;:33::i;:::-;9327:52;;9399:107;9432:19;:17;:19::i;:::-;9421:8;:30;:80;;9468:33;9492:8;9468:19;:17;:19::i;:::-;:23;;:33::i;:::-;9421:80;;;9459:1;9421:80;9399:12;;;;;:16;:107::i;:::-;9384:12;;;:122;-1:-1:-1;9302:231:3;;;9522:7;;;9302:231;9541:40;9556:10;9568:8;:12;;;9541:40;;;;;;;:::i;3732:272:15:-;3818:7;3852:12;3845:5;3837:28;;;;-1:-1:-1;;;3837:28:15;;;;;;;;:::i;:::-;;3875:9;3891:1;3887;:5;;;;;;;3732:272;-1:-1:-1;;;;;3732:272:15:o;1765:187::-;1851:7;1886:12;1878:6;;;;1870:29;;;;-1:-1:-1;;;1870:29:15;;;;;;;;:::i;:::-;-1:-1:-1;;;1921:5:15;;;1765:187::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;160:707::-;;277:3;270:4;262:6;258:17;254:27;244:2;;-1:-1;;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;:::i;:::-;354:80;:::i;:::-;462:21;;;345:89;-1:-1;506:4;519:14;;;;494:17;;;608;;;599:27;;;;596:36;-1:-1;593:2;;;645:1;;635:12;593:2;670:1;655:206;680:6;677:1;674:13;655:206;;;85:6;72:20;97:33;124:5;97:33;:::i;:::-;748:50;;812:14;;;;840;;;;702:1;695:9;655:206;;;659:14;;;;;237:630;;;;:::o;891:705::-;;1017:3;1010:4;1002:6;998:17;994:27;984:2;;-1:-1;;1025:12;984:2;1072:6;1059:20;1094:89;1109:73;1175:6;1109:73;:::i;1094:89::-;1211:21;;;1085:98;-1:-1;1255:4;1268:14;;;;1243:17;;;1363:1;1348:242;1373:6;1370:1;1367:13;1348:242;;;1480:46;1522:3;1255:4;1456:3;1443:17;1247:6;1431:30;;1480:46;:::i;:::-;1468:59;;1541:14;;;;1569;;;;1395:1;1388:9;1348:242;;1621:708;;1748:3;1741:4;1733:6;1729:17;1725:27;1715:2;;-1:-1;;1756:12;1715:2;1803:6;1790:20;1825:90;1840:74;1907:6;1840:74;:::i;1825:90::-;1943:21;;;1816:99;-1:-1;1987:4;2000:14;;;;1975:17;;;2095:1;2080:243;2105:6;2102:1;2099:13;2080:243;;;2212:47;2255:3;1987:4;2188:3;2175:17;1979:6;2163:30;;2212:47;:::i;:::-;2200:60;;2274:14;;;;2302;;;;2127:1;2120:9;2080:243;;2384:782;;2526:3;2519:4;2511:6;2507:17;2503:27;2493:2;;-1:-1;;2534:12;2493:2;2581:6;2568:20;2603:105;2618:89;2700:6;2618:89;:::i;2603:105::-;2736:21;;;2594:114;-1:-1;2780:4;2793:14;;;;2768:17;;;2894:4;2882:17;;;2873:27;;;;2870:36;-1:-1;2867:2;;;2919:1;;2909:12;2867:2;2944:1;;2929:231;2954:6;2951:1;2948:13;2929:231;;;2894:4;5973:9;5968:3;5964:19;5960:30;5957:2;;;2944:1;;5993:12;5957:2;6021:20;2894:4;6021:20;:::i;:::-;6126:46;6168:3;6144:22;6126:46;:::i;:::-;6108:16;6101:72;6264:47;6307:3;2780:4;6287:9;6283:22;6264:47;:::i;:::-;6246:16;;;6239:73;6370:2;6424:22;;;4240:20;6385:16;;;6378:75;6511:2;6565:22;;;4240:20;6526:16;;;6519:75;3022;;3111:14;;;;3139;;;;2976:1;2969:9;2929:231;;;2933:14;;;;;;;2486:680;;;;:::o;3192:707::-;;3309:3;3302:4;3294:6;3290:17;3286:27;3276:2;;-1:-1;;3317:12;3276:2;3364:6;3351:20;3386:80;3401:64;3458:6;3401:64;:::i;3386:80::-;3494:21;;;3377:89;-1:-1;3538:4;3551:14;;;;3526:17;;;3640;;;3631:27;;;;3628:36;-1:-1;3625:2;;;3677:1;;3667:12;3625:2;3702:1;3687:206;3712:6;3709:1;3706:13;3687:206;;;6689:20;;3780:50;;3844:14;;;;3872;;;;3734:1;3727:9;3687:206;;3907:124;3971:20;;3996:30;3971:20;3996:30;:::i;4311:440::-;;4412:3;4405:4;4397:6;4393:17;4389:27;4379:2;;-1:-1;;4420:12;4379:2;4467:6;4454:20;4489:64;4504:48;4545:6;4504:48;:::i;4489:64::-;4480:73;;4573:6;4566:5;4559:21;4677:3;4609:4;4668:6;4601;4659:16;;4656:25;4653:2;;;4694:1;;4684:12;4653:2;61647:6;4609:4;4601:6;4597:17;4609:4;4635:5;4631:16;61624:30;61703:1;61685:16;;;4609:4;61685:16;61678:27;4635:5;4372:379;-1:-1;;4372:379::o;6900:126::-;6965:20;;60122:4;60111:16;;63074:33;;63064:2;;63121:1;;63111:12;7033:241;;7137:2;7125:9;7116:7;7112:23;7108:32;7105:2;;;-1:-1;;7143:12;7105:2;85:6;72:20;97:33;124:5;97:33;:::i;7281:1431::-;;;;;;7582:3;7570:9;7561:7;7557:23;7553:33;7550:2;;;-1:-1;;7589:12;7550:2;7647:17;7634:31;7685:18;;7677:6;7674:30;7671:2;;;-1:-1;;7707:12;7671:2;7737:78;7807:7;7798:6;7787:9;7783:22;7737:78;:::i;:::-;7727:88;;7880:2;7869:9;7865:18;7852:32;7838:46;;7685:18;7896:6;7893:30;7890:2;;;-1:-1;;7926:12;7890:2;7956:78;8026:7;8017:6;8006:9;8002:22;7956:78;:::i;:::-;7946:88;;8099:2;8088:9;8084:18;8071:32;8057:46;;7685:18;8115:6;8112:30;8109:2;;;-1:-1;;8145:12;8109:2;8175:88;8255:7;8246:6;8235:9;8231:22;8175:88;:::i;:::-;8165:98;;8328:2;8317:9;8313:18;8300:32;8286:46;;7685:18;8344:6;8341:30;8338:2;;;-1:-1;;8374:12;8338:2;8404:87;8483:7;8474:6;8463:9;8459:22;8404:87;:::i;:::-;8394:97;;8556:3;8545:9;8541:19;8528:33;8514:47;;7685:18;8573:6;8570:30;8567:2;;;-1:-1;;8603:12;8567:2;;8633:63;8688:7;8679:6;8668:9;8664:22;8633:63;:::i;:::-;8623:73;;;7544:1168;;;;;;;;:::o;8719:490::-;;;8857:2;8845:9;8836:7;8832:23;8828:32;8825:2;;;-1:-1;;8863:12;8825:2;4119:6;4113:13;4131:30;4155:5;4131:30;:::i;:::-;9044:2;9029:18;;9023:25;8915:71;;-1:-1;9068:18;9057:30;;9054:2;;;-1:-1;;9090:12;9054:2;9161:22;;4865:4;4853:17;;4849:27;-1:-1;4839:2;;-1:-1;;4880:12;4839:2;4920:6;4914:13;4942:64;4957:48;4998:6;4957:48;:::i;4942:64::-;5026:6;5019:5;5012:21;5130:3;9044:2;5121:6;5054;5112:16;;5109:25;5106:2;;;-1:-1;;5137:12;5106:2;5157:39;5189:6;9044:2;5088:5;5084:16;9044:2;5054:6;5050:17;5157:39;:::i;:::-;9110:83;;;;;;8819:390;;;;;:::o;9216:289::-;;9344:2;9332:9;9323:7;9319:23;9315:32;9312:2;;;-1:-1;;9350:12;9312:2;5307:6;5301:13;5319:46;5359:5;5319:46;:::i;9512:241::-;;9616:2;9604:9;9595:7;9591:23;9587:32;9584:2;;;-1:-1;;9622:12;9584:2;-1:-1;6689:20;;9578:175;-1:-1;9578:175::o;9760:263::-;;9875:2;9863:9;9854:7;9850:23;9846:32;9843:2;;;-1:-1;;9881:12;9843:2;-1:-1;6837:13;;9837:186;-1:-1;9837:186::o;10030:366::-;;;10151:2;10139:9;10130:7;10126:23;10122:32;10119:2;;;-1:-1;;10157:12;10119:2;6702:6;6689:20;10209:63;;10309:2;10352:9;10348:22;72:20;97:33;124:5;97:33;:::i;:::-;10317:63;;;;10113:283;;;;;:::o;10403:863::-;;;;10641:2;10629:9;10620:7;10616:23;10612:32;10609:2;;;-1:-1;;10647:12;10609:2;6702:6;6689:20;10699:63;;10827:2;10816:9;10812:18;10799:32;10851:18;;10843:6;10840:30;10837:2;;;-1:-1;;10873:12;10837:2;10903:103;10998:7;10989:6;10978:9;10974:22;10903:103;:::i;:::-;10893:113;;11071:2;11060:9;11056:18;11043:32;11029:46;;10851:18;11087:6;11084:30;11081:2;;;-1:-1;;11117:12;11081:2;;11147:103;11242:7;11233:6;11222:9;11218:22;11147:103;:::i;:::-;11137:113;;;10603:663;;;;;:::o;11273:360::-;;;11391:2;11379:9;11370:7;11366:23;11362:32;11359:2;;;-1:-1;;11397:12;11359:2;6702:6;6689:20;11449:63;;11549:2;11589:9;11585:22;3971:20;3996:30;4020:5;3996:30;:::i;11640:733::-;;;;;;11807:3;11795:9;11786:7;11782:23;11778:33;11775:2;;;-1:-1;;11814:12;11775:2;6702:6;6689:20;11866:63;;11966:2;12006:9;12002:22;3971:20;3996:30;4020:5;3996:30;:::i;:::-;11974:60;-1:-1;12089:51;12132:7;12071:2;12108:22;;12089:51;:::i;:::-;11769:604;;;;-1:-1;12079:61;;12177:2;12216:22;;4240:20;;-1:-1;12285:3;12325:22;4240:20;;11769:604;-1:-1;;11769:604::o;13836:690::-;;14029:5;55677:12;57345:6;57340:3;57333:19;57382:4;;57377:3;57373:14;14041:93;;57382:4;14205:5;54855:14;-1:-1;14244:260;14269:6;14266:1;14263:13;14244:260;;;14330:13;;-1:-1;;;;;59906:54;13636:37;;12534:14;;;;56684;;;;7685:18;14284:9;14244:260;;;-1:-1;14510:10;;13960:566;-1:-1;;;;;13960:566::o;14561:920::-;;14781:5;55677:12;57345:6;57340:3;57333:19;57382:4;;57377:3;57373:14;14793:102;;;;57382:4;14952:6;14948:17;14943:3;14939:27;14927:39;;57382:4;15046:5;54855:14;-1:-1;15085:357;15110:6;15107:1;15104:13;15085:357;;;15172:9;15166:4;15162:20;15157:3;15150:33;12682:64;12742:3;15217:6;15211:13;12682:64;:::i;:::-;15421:14;;;;15231:90;-1:-1;56684:14;;;;15132:1;15125:9;15085:357;;;-1:-1;15465:10;;14703:778;-1:-1;;;;;;;14703:778::o;17472:690::-;;17665:5;55677:12;57345:6;57340:3;57333:19;57382:4;;57377:3;57373:14;17677:93;;57382:4;17841:5;54855:14;-1:-1;17880:260;17905:6;17902:1;17899:13;17880:260;;;17966:13;;18443:37;;13398:14;;;;56684;;;;17927:1;17920:9;17880:260;;18926:323;;19058:5;55677:12;57345:6;57340:3;57333:19;19141:52;19186:6;57382:4;57377:3;57373:14;57382:4;19167:5;19163:16;19141:52;:::i;:::-;62241:7;62225:14;-1:-1;;62221:28;19205:39;;;;57382:4;19205:39;;19006:243;-1:-1;;19006:243::o;31865:405::-;-1:-1;;;;;;59496:78;;18858:56;;55677:12;;31865:405;;19877:52;55677:12;32132:1;32123:11;;19910:4;19899:16;;19877:52;:::i;:::-;19941:16;;;;32132:1;19941:16;;32025:245;-1:-1;;;32025:245::o;32277:271::-;;19766:5;55677:12;19877:52;19922:6;19917:3;19910:4;19903:5;19899:16;19877:52;:::i;:::-;19941:16;;;;;32411:137;-1:-1;;32411:137::o;32555:659::-;-1:-1;;;23340:87;;23325:1;23446:11;;18443:37;;;;33066:12;;;18443:37;33177:12;;;32800:414::o;33221:222::-;-1:-1;;;;;59906:54;;;;13636:37;;33348:2;33333:18;;33319:124::o;33450:448::-;-1:-1;;;;;59906:54;;;;13505:58;;59330:13;;59323:21;33801:2;33786:18;;18225:34;33884:2;33869:18;;18443:37;33635:2;33620:18;;33606:292::o;34344:666::-;;7685:18;;59917:42;;;;59246:5;59906:54;13643:3;13636:37;34586:3;34705:2;34694:9;34690:18;34683:48;34745:76;34586:3;34575:9;34571:19;34807:6;34745:76;:::i;:::-;59906:54;;34913:2;34898:18;;20053:63;-1:-1;34996:2;34981:18;18443:37;34737:84;34557:453;-1:-1;;34557:453::o;35017:544::-;-1:-1;;;;;59906:54;;;;13636:37;;35387:2;35372:18;;18443:37;;;;59330:13;59323:21;35464:2;35449:18;;18225:34;35547:2;35532:18;;18443:37;35222:3;35207:19;;35193:368::o;35568:1224::-;;36017:3;36039:17;36032:47;36093:108;36017:3;36006:9;36002:19;36187:6;36093:108;:::i;:::-;36249:9;36243:4;36239:20;36234:2;36223:9;36219:18;36212:48;36274:108;36377:4;36368:6;36274:108;:::i;:::-;36266:116;;36430:9;36424:4;36420:20;36415:2;36404:9;36400:18;36393:48;36455:128;36578:4;36569:6;36455:128;:::i;:::-;36447:136;;36631:9;36625:4;36621:20;36616:2;36605:9;36601:18;36594:48;36656:126;36777:4;36768:6;36656:126;:::i;:::-;36648:134;35988:804;-1:-1;;;;;;;35988:804::o;36799:470::-;37026:2;37040:47;;;55677:12;;37011:18;;;57333:19;;;36799:470;;37026:2;57373:14;;;;;;54855;;;36799:470;17076:335;17101:6;17098:1;17095:13;17076:335;;;17162:13;;30854:23;;59330:13;59323:21;18225:34;;31005:16;;;30999:23;60122:4;60111:16;31072:14;;;31704:35;31152:16;;;31146:23;31223:14;;;18443:37;31314:4;31303:16;;;31297:23;31374:14;;;18443:37;13225:4;13216:14;;;;56684;;;;17123:1;17116:9;17076:335;;37276:222;18443:37;;;37403:2;37388:18;;37374:124::o;37505:556::-;18443:37;;;37881:2;37866:18;;18443:37;;;;37964:2;37949:18;;18443:37;-1:-1;;;;;59906:54;38047:2;38032:18;;13636:37;37716:3;37701:19;;37687:374::o;38068:432::-;18443:37;;;38409:2;38394:18;;18443:37;;;;59330:13;59323:21;38486:2;38471:18;;18225:34;38245:2;38230:18;;38216:284::o;38507:548::-;18443:37;;;60122:4;60111:16;;;;38875:2;38860:18;;31704:35;38958:2;38943:18;;18443:37;39041:2;39026:18;;18443:37;38714:3;38699:19;;38685:370::o;39608:252::-;39750:2;39735:18;;62348:1;62338:12;;62328:2;;62354:9;62328:2;20568:65;;;39721:139;:::o;39867:310::-;;40014:2;40035:17;40028:47;40089:78;40014:2;40003:9;39999:18;40153:6;40089:78;:::i;40184:416::-;40384:2;40398:47;;;21558:2;40369:18;;;57333:19;21594:34;57373:14;;;21574:55;21663:25;21649:12;;;21642:47;21708:12;;;40355:245::o;40607:416::-;40807:2;40821:47;;;21959:2;40792:18;;;57333:19;21995:34;57373:14;;;21975:55;22064:34;22050:12;;;22043:56;-1:-1;;;22119:12;;;22112:32;22163:12;;;40778:245::o;41030:416::-;41230:2;41244:47;;;22414:2;41215:18;;;57333:19;22450:34;57373:14;;;22430:55;-1:-1;;;22505:12;;;22498:42;22559:12;;;41201:245::o;41453:416::-;41653:2;41667:47;;;22810:2;41638:18;;;57333:19;;;-1:-1;;;;;;;;;;;57373:14;;;22826:55;22915:34;22901:12;;;22894:56;22984:34;22970:12;;;22963:56;23038:12;;;41624:245::o;41876:416::-;42076:2;42090:47;;;23696:2;42061:18;;;57333:19;23732:29;57373:14;;;23712:50;23781:12;;;42047:245::o;42299:416::-;42499:2;42513:47;;;24032:2;42484:18;;;57333:19;24068:34;57373:14;;;24048:55;24137:34;24123:12;;;24116:56;-1:-1;;;24192:12;;;24185:40;24244:12;;;42470:245::o;42722:416::-;42922:2;42936:47;;;24495:2;42907:18;;;57333:19;-1:-1;;;;;;;;;;;57373:14;;;24511:55;-1:-1;;;24586:12;;;24579:40;24638:12;;;42893:245::o;43145:416::-;43345:2;43359:47;;;24889:2;43330:18;;;57333:19;24925:34;57373:14;;;24905:55;24994:25;24980:12;;;24973:47;25039:12;;;43316:245::o;43568:416::-;43768:2;43782:47;;;25290:2;43753:18;;;57333:19;25326:34;57373:14;;;25306:55;25395:34;25381:12;;;25374:56;-1:-1;;;25450:12;;;25443:34;25496:12;;;43739:245::o;43991:416::-;44191:2;44205:47;;;25747:2;44176:18;;;57333:19;25783:34;57373:14;;;25763:55;-1:-1;;;25838:12;;;25831:45;25895:12;;;44162:245::o;44414:416::-;44614:2;44628:47;;;26146:2;44599:18;;;57333:19;26182:34;57373:14;;;26162:55;-1:-1;;;26237:12;;;26230:25;26274:12;;;44585:245::o;44837:416::-;45037:2;45051:47;;;26525:2;45022:18;;;57333:19;-1:-1;;;;;;;;;;;57373:14;;;26541:55;26630:34;26616:12;;;26609:56;-1:-1;;;26685:12;;;26678:31;26728:12;;;45008:245::o;45260:416::-;45460:2;45474:47;;;26979:2;45445:18;;;57333:19;27015:34;57373:14;;;26995:55;27084:34;27070:12;;;27063:56;-1:-1;;;27139:12;;;27132:41;27192:12;;;45431:245::o;45683:416::-;45883:2;45897:47;;;27443:2;45868:18;;;57333:19;-1:-1;;;;;;;;;;;57373:14;;;27459:55;-1:-1;;;27534:12;;;27527:44;27590:12;;;45854:245::o;46106:416::-;46306:2;46320:47;;;27841:2;46291:18;;;57333:19;27877:34;57373:14;;;27857:55;-1:-1;;;27932:12;;;27925:41;27985:12;;;46277:245::o;46529:416::-;46729:2;46743:47;;;28236:2;46714:18;;;57333:19;28272:34;57373:14;;;28252:55;28341:32;28327:12;;;28320:54;28393:12;;;46700:245::o;46952:416::-;47152:2;47166:47;;;28644:2;47137:18;;;57333:19;-1:-1;;;;;;;;;;;57373:14;;;28660:55;28749:34;28735:12;;;28728:56;-1:-1;;;28804:12;;;28797:36;28852:12;;;47123:245::o;47375:416::-;47575:2;47589:47;;;29103:2;47560:18;;;57333:19;-1:-1;;;;;;;;;;;57373:14;;;29119:55;29208:34;29194:12;;;29187:56;29277:34;29263:12;;;29256:56;-1:-1;;;29332:12;;;29325:25;29369:13;;;47546:245::o;47798:416::-;47998:2;48012:47;;;29621:2;47983:18;;;57333:19;29657:34;57373:14;;;29637:55;29726:34;29712:12;;;29705:56;-1:-1;;;29781:12;;;29774:36;29829:12;;;47969:245::o;48221:318::-;30149:23;;59330:13;59323:21;18225:34;;30317:4;30306:16;;;30300:23;59330:13;59323:21;30371:14;;;18225:34;30466:4;30455:16;;;30449:23;30526:14;;;18443:37;;;;48396:2;48381:18;;48367:172::o;48775:1888::-;18443:37;;;-1:-1;;;;;59906:54;;49565:2;49550:18;;13505:58;49392:3;49602:2;49587:18;;49580:48;;;48775:1888;;49642:108;49377:19;;;49736:6;49642:108;:::i;:::-;49634:116;;49798:9;49792:4;49788:20;49783:2;49772:9;49768:18;49761:48;49823:108;49926:4;49917:6;49823:108;:::i;:::-;49815:116;;49980:9;49974:4;49970:20;49964:3;49953:9;49949:19;49942:49;50005:128;50128:4;50119:6;50005:128;:::i;:::-;49997:136;;50182:9;50176:4;50172:20;50166:3;50155:9;50151:19;50144:49;50207:126;50328:4;50319:6;50207:126;:::i;:::-;50199:134;;18473:5;50412:3;50401:9;50397:19;18443:37;18473:5;50496:3;50485:9;50481:19;18443:37;50550:9;50544:4;50540:20;50534:3;50523:9;50519:19;50512:49;50575:78;50648:4;50639:6;50575:78;:::i;:::-;50567:86;49363:1300;-1:-1;;;;;;;;;;;;49363:1300::o;50670:1204::-;18443:37;;;-1:-1;;;;;59906:54;;;;51202:2;51187:18;;13636:37;51285:2;51270:18;;18443:37;;;;51368:2;51353:18;;18443:37;;;;51451:3;51436:19;;18443:37;;;;59917:42;51520:19;;18443:37;51619:3;51604:19;;18443:37;59330:13;59323:21;51697:3;51682:19;;18225:34;59330:13;59323:21;51775:3;51760:19;;18225:34;51859:3;51844:19;;18443:37;51037:3;51022:19;;51008:866::o;51881:333::-;18443:37;;;52200:2;52185:18;;18443:37;52036:2;52021:18;;52007:207::o;52221:256::-;52283:2;52277:9;52309:17;;;52384:18;52369:34;;52405:22;;;52366:62;52363:2;;;52441:1;;52431:12;52363:2;52283;52450:22;52261:216;;-1:-1;52261:216::o;52484:304::-;;52643:18;52635:6;52632:30;52629:2;;;-1:-1;;52665:12;52629:2;-1:-1;52710:4;52698:17;;;52763:15;;52566:222::o;54083:321::-;;54226:18;54218:6;54215:30;54212:2;;;-1:-1;;54248:12;54212:2;-1:-1;62241:7;54302:17;-1:-1;;54298:33;54389:4;54379:15;;54149:255::o;61720:268::-;61785:1;61792:101;61806:6;61803:1;61800:13;61792:101;;;61873:11;;;61867:18;61854:11;;;61847:39;61828:2;61821:10;61792:101;;;61908:6;61905:1;61902:13;61899:2;;;-1:-1;;61785:1;61955:16;;61948:27;61769:219::o;62377:117::-;-1:-1;;;;;59906:54;;62436:35;;62426:2;;62485:1;;62475:12;62501:111;62582:5;59330:13;59323:21;62560:5;62557:32;62547:2;;62603:1;;62593:12",
  "source": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6;\npragma experimental ABIEncoderV2;\n\nimport \"@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol\";\nimport \"../DAOStackInterfaces.sol\";\n\ncontract CompoundVotingMachine {\n\tusing SafeMathUpgradeable for uint256;\n\t/// @notice The name of this contract\n\tstring public constant name = \"GoodDAO Voting Machine\";\n\n\t/// @notice the number of blocks a proposal is open for voting (before passing quorum)\n\tuint256 public votingPeriodBlocks;\n\n\t/// @notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed\n\tfunction quorumVotes() public view returns (uint256) {\n\t\treturn rep.totalSupply().mul(3).div(100);\n\t} //3%\n\n\t/// @notice The number of votes required in order for a voter to become a proposer\n\tfunction proposalThreshold(uint256 blockNumber)\n\t\tpublic\n\t\tview\n\t\treturns (uint256)\n\t{\n\t\treturn rep.totalSupplyAt(blockNumber).mul(1).div(100);\n\t} // 1%\n\n\t/// @notice The maximum number of actions that can be included in a proposal\n\tfunction proposalMaxOperations() public pure returns (uint256) {\n\t\treturn 10;\n\t} // 10 actions\n\n\t/// @notice The delay before voting on a proposal may take place, once proposed\n\tfunction votingDelay() public pure returns (uint256) {\n\t\treturn 1;\n\t} // 1 block\n\n\t/// @notice The duration of voting on a proposal, in blocks\n\tfunction votingPeriod() public view returns (uint256) {\n\t\treturn votingPeriodBlocks;\n\t} // ~14 days in blocks (assuming 15s blocks)\n\n\t/// @notice The duration of time after proposal passed thershold before it can be expected\n\tfunction queuePeriod() public pure returns (uint256) {\n\t\treturn 2 days;\n\t} // 2 days\n\n\t/// @notice During the queue period if vote decision has changed, we extend queue period so\n\t/// that at least gameChangerPeriod is left\n\tfunction gameChangerPeriod() public pure returns (uint256) {\n\t\treturn 1 days;\n\t} // 1 day\n\n\t/// @notice the time a succeeded proposal has to be executed on the blockchain\n\tfunction gracePeriod() public pure returns (uint256) {\n\t\treturn 3 days;\n\t} //3 days\n\n\t/// @notice The address of the DAO controller\n\tController public controller;\n\n\t/// @notice The address of the DAO reputation token\n\tReputationInterface public rep;\n\n\t/// @notice The address of the Governor Guardian\n\taddress public guardian;\n\n\t/// @notice The total number of proposals\n\tuint256 public proposalCount;\n\n\tstruct Proposal {\n\t\t/// @notice Unique id for looking up a proposal\n\t\tuint256 id;\n\t\t/// @notice Creator of the proposal\n\t\taddress proposer;\n\t\t/// @notice The timestamp that the proposal will be available for execution, set once the vote succeeds\n\t\tuint256 eta;\n\t\t/// @notice the ordered list of target addresses for calls to be made\n\t\taddress[] targets;\n\t\t/// @notice The ordered list of values (i.e. msg.value) to be passed to the calls to be made\n\t\tuint256[] values;\n\t\t/// @notice The ordered list of function signatures to be called\n\t\tstring[] signatures;\n\t\t/// @notice The ordered list of calldata to be passed to each call\n\t\tbytes[] calldatas;\n\t\t/// @notice The block at which voting begins: holders must delegate their votes prior to this block\n\t\tuint256 startBlock;\n\t\t/// @notice The block at which voting ends: votes must be cast prior to this block\n\t\tuint256 endBlock;\n\t\t/// @notice Current number of votes in favor of this proposal\n\t\tuint256 forVotes;\n\t\t/// @notice Current number of votes in opposition to this proposal\n\t\tuint256 againstVotes;\n\t\t/// @notice Flag marking whether the proposal has been canceled\n\t\tbool canceled;\n\t\t/// @notice Flag marking whether the proposal has been executed\n\t\tbool executed;\n\t\t/// @notice Receipts of ballots for the entire set of voters\n\t\tmapping(address => Receipt) receipts;\n\t\t/// @notice quorom required at time of proposing\n\t\tuint256 quoromRequired;\n\t}\n\n\t/// @notice Ballot receipt record for a voter\n\tstruct Receipt {\n\t\t/// @notice Whether or not a vote has been cast\n\t\tbool hasVoted;\n\t\t/// @notice Whether or not the voter supports the proposal\n\t\tbool support;\n\t\t/// @notice The number of votes the voter had, which were cast\n\t\tuint256 votes;\n\t}\n\n\t/// @notice Possible states that a proposal may be in\n\tenum ProposalState {\n\t\tPending,\n\t\tActive,\n\t\tActiveTimelock, // passed quorom, time lock of 2 days activated, still open for voting\n\t\tCanceled,\n\t\tDefeated,\n\t\tSucceeded,\n\t\t// Queued, we dont have queued status, we use game changer period instead\n\t\tExpired,\n\t\tExecuted\n\t}\n\n\t/// @notice The official record of all proposals ever proposed\n\tmapping(uint256 => Proposal) public proposals;\n\n\t/// @notice The latest proposal for each proposer\n\tmapping(address => uint256) public latestProposalIds;\n\n\t/// @notice The EIP-712 typehash for the contract's domain\n\tbytes32 public constant DOMAIN_TYPEHASH =\n\t\tkeccak256(\n\t\t\t\"EIP712Domain(string name,uint256 chainId,address verifyingContract)\"\n\t\t);\n\n\t/// @notice The EIP-712 typehash for the ballot struct used by the contract\n\tbytes32 public constant BALLOT_TYPEHASH =\n\t\tkeccak256(\"Ballot(uint256 proposalId,bool support)\");\n\n\t/// @notice An event emitted when a new proposal is created\n\tevent ProposalCreated(\n\t\tuint256 id,\n\t\taddress proposer,\n\t\taddress[] targets,\n\t\tuint256[] values,\n\t\tstring[] signatures,\n\t\tbytes[] calldatas,\n\t\tuint256 startBlock,\n\t\tuint256 endBlock,\n\t\tstring description\n\t);\n\n\t/// @notice An event emitted when a vote has been cast on a proposal\n\tevent VoteCast(\n\t\taddress voter,\n\t\tuint256 proposalId,\n\t\tbool support,\n\t\tuint256 votes\n\t);\n\n\t/// @notice An event emitted when a proposal has been canceled\n\tevent ProposalCanceled(uint256 id);\n\n\t/// @notice An event emitted when a proposal has been queued\n\tevent ProposalQueued(uint256 id, uint256 eta);\n\n\t/// @notice An event emitted when a proposal has been executed\n\tevent ProposalExecuted(uint256 id);\n\n\tconstructor(\n\t\tAvatar avatar_, // the DAO avatar\n\t\taddress rep_, // address reputation\n\t\tuint256 votingPeriodBlocks_ //number of blocks a proposal is open for voting before expiring\n\t) public {\n\t\tcontroller = Controller(avatar_.owner());\n\t\trep = ReputationInterface(rep_);\n\t\tvotingPeriodBlocks = votingPeriodBlocks_;\n\t}\n\n\t/// @notice make a proposal to be voted on\n\t/// @param targets list of contracts to be excuted on\n\t/// @param values list of eth value to be used in each contract call\n\t/// @param signatures the list of functions to execute\n\t/// @param calldatas the list of parameters to pass to each function\n\t/// @return uint256 proposal id\n\tfunction propose(\n\t\taddress[] memory targets,\n\t\tuint256[] memory values,\n\t\tstring[] memory signatures,\n\t\tbytes[] memory calldatas,\n\t\tstring memory description\n\t) public returns (uint256) {\n\t\trequire(\n\t\t\trep.getVotesAt(msg.sender, true, block.number.sub(1)) >\n\t\t\t\tproposalThreshold(block.number.sub(1)),\n\t\t\t\"CompoundVotingMachine::propose: proposer votes below proposal threshold\"\n\t\t);\n\t\trequire(\n\t\t\ttargets.length == values.length &&\n\t\t\t\ttargets.length == signatures.length &&\n\t\t\t\ttargets.length == calldatas.length,\n\t\t\t\"CompoundVotingMachine::propose: proposal function information arity mismatch\"\n\t\t);\n\t\trequire(\n\t\t\ttargets.length != 0,\n\t\t\t\"CompoundVotingMachine::propose: must provide actions\"\n\t\t);\n\t\trequire(\n\t\t\ttargets.length <= proposalMaxOperations(),\n\t\t\t\"CompoundVotingMachine::propose: too many actions\"\n\t\t);\n\n\t\tuint256 latestProposalId = latestProposalIds[msg.sender];\n\n\t\tif (latestProposalId != 0) {\n\t\t\tProposalState proposersLatestProposalState =\n\t\t\t\tstate(latestProposalId);\n\t\t\trequire(\n\t\t\t\tproposersLatestProposalState != ProposalState.Active &&\n\t\t\t\t\tproposersLatestProposalState !=\n\t\t\t\t\tProposalState.ActiveTimelock,\n\t\t\t\t\"CompoundVotingMachine::propose: one live proposal per proposer, found an already active proposal\"\n\t\t\t);\n\t\t\trequire(\n\t\t\t\tproposersLatestProposalState != ProposalState.Pending,\n\t\t\t\t\"CompoundVotingMachine::propose: one live proposal per proposer, found an already pending proposal\"\n\t\t\t);\n\t\t}\n\n\t\tuint256 startBlock = block.number.add(votingDelay());\n\t\tuint256 endBlock = startBlock.add(votingPeriod());\n\n\t\tproposalCount++;\n\t\tProposal memory newProposal =\n\t\t\tProposal({\n\t\t\t\tid: proposalCount,\n\t\t\t\tproposer: msg.sender,\n\t\t\t\teta: 0,\n\t\t\t\ttargets: targets,\n\t\t\t\tvalues: values,\n\t\t\t\tsignatures: signatures,\n\t\t\t\tcalldatas: calldatas,\n\t\t\t\tstartBlock: startBlock,\n\t\t\t\tendBlock: endBlock,\n\t\t\t\tforVotes: 0,\n\t\t\t\tagainstVotes: 0,\n\t\t\t\tcanceled: false,\n\t\t\t\texecuted: false,\n\t\t\t\tquoromRequired: quorumVotes()\n\t\t\t});\n\n\t\tproposals[newProposal.id] = newProposal;\n\t\tlatestProposalIds[newProposal.proposer] = newProposal.id;\n\n\t\temit ProposalCreated(\n\t\t\tnewProposal.id,\n\t\t\tmsg.sender,\n\t\t\ttargets,\n\t\t\tvalues,\n\t\t\tsignatures,\n\t\t\tcalldatas,\n\t\t\tstartBlock,\n\t\t\tendBlock,\n\t\t\tdescription\n\t\t);\n\t\treturn newProposal.id;\n\t}\n\n\t/// @notice helper to set the effective time of a proposal that passed quorom\n\t/// @dev also extends the ETA in case of a game changer in vote decision\n\t/// @param proposalId the id of the proposal\n\t/// @param hasVoteChanged did the current vote changed the decision\n\tfunction _updateETA(uint256 proposalId, bool hasVoteChanged) internal {\n\t\tProposal storage proposal = proposals[proposalId];\n\n\t\t//first time we have a quorom we ask for a no change in decision period\n\t\tif (proposal.eta == 0) {\n\t\t\tproposal.eta = block.timestamp.add(queuePeriod());\n\t\t}\n\t\t//if we have a gamechanger then we extend current eta to have at least gameChangerPeriod left\n\t\telse if (hasVoteChanged) {\n\t\t\tuint256 timeLeft = proposal.eta.sub(block.timestamp);\n\t\t\tproposal.eta = proposal.eta.add(\n\t\t\t\ttimeLeft > gameChangerPeriod()\n\t\t\t\t\t? 0\n\t\t\t\t\t: gameChangerPeriod().sub(timeLeft)\n\t\t\t);\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t\temit ProposalQueued(proposalId, proposal.eta);\n\t}\n\n\t/// @notice execute the proposal list of transactions\n\t/// @dev anyone can call this once its ETA has arrived\n\tfunction execute(uint256 proposalId) public payable {\n\t\trequire(\n\t\t\tstate(proposalId) == ProposalState.Succeeded,\n\t\t\t\"CompoundVotingMachine::execute: proposal can only be executed if it is succeeded\"\n\t\t);\n\t\trequire(\n\t\t\tproposals[proposalId].eta <= block.timestamp,\n\t\t\t\"CompoundVotingMachine::execute: proposal can only be executed if no game changers\"\n\t\t);\n\t\tProposal storage proposal = proposals[proposalId];\n\t\tproposal.executed = true;\n\t\tfor (uint256 i = 0; i < proposal.targets.length; i++) {\n\t\t\t_executeTransaction(\n\t\t\t\tproposal.targets[i],\n\t\t\t\tproposal.values[i],\n\t\t\t\tproposal.signatures[i],\n\t\t\t\tproposal.calldatas[i],\n\t\t\t\tproposal.eta\n\t\t\t);\n\t\t}\n\t\temit ProposalExecuted(proposalId);\n\t}\n\n\t/// @notice internal helper to execute a single transaction of a proposal\n\t/// @dev special execution is done if target is a method in the DAO controller\n\tfunction _executeTransaction(\n\t\taddress target,\n\t\tuint256 value,\n\t\tstring memory signature,\n\t\tbytes memory data,\n\t\tuint256 eta\n\t) internal returns (bytes memory) {\n\t\tbytes memory callData;\n\n\t\tif (bytes(signature).length == 0) {\n\t\t\tcallData = data;\n\t\t} else {\n\t\t\tcallData = abi.encodePacked(\n\t\t\t\tbytes4(keccak256(bytes(signature))),\n\t\t\t\tdata\n\t\t\t);\n\t\t}\n\n\t\tbool ok;\n\t\tbytes memory result;\n\n\t\tif (target == address(controller)) {\n\t\t\t(ok, result) = target.call{ value: value }(callData);\n\t\t} else {\n\t\t\tpayable(address(controller.avatar())).transfer(value); //make sure avatar have the funds to pay\n\t\t\t(ok, result) = controller.genericCall(\n\t\t\t\ttarget,\n\t\t\t\tcallData,\n\t\t\t\tcontroller.avatar(),\n\t\t\t\tvalue\n\t\t\t);\n\t\t}\n\t\trequire(\n\t\t\tok,\n\t\t\t\"CompoundVotingMachine::executeTransaction: Transaction execution reverted.\"\n\t\t);\n\n\t\t//TODO: event with tx result\n\t\treturn result;\n\t}\n\n\t/// @notice cancel a proposal in case proposer no longer holds the votes that were required to propose\n\t/// @dev could be cheating trying to bypass the single proposal per address by delegating to another address\n\t/// or when delegators do not concur with the proposal done in their name, they can withdraw\n\tfunction cancel(uint256 proposalId) public {\n\t\tProposalState state = state(proposalId);\n\t\trequire(\n\t\t\tstate != ProposalState.Executed,\n\t\t\t\"CompoundVotingMachine::cancel: cannot cancel executed proposal\"\n\t\t);\n\n\t\tProposal storage proposal = proposals[proposalId];\n\t\trequire(\n\t\t\trep.getVotesAt(proposal.proposer, true, block.number.sub(1)) <\n\t\t\t\tproposalThreshold(proposal.startBlock),\n\t\t\t\"CompoundVotingMachine::cancel: proposer above threshold\"\n\t\t);\n\n\t\tproposal.canceled = true;\n\n\t\temit ProposalCanceled(proposalId);\n\t}\n\n\t/// @notice get the actions to be done in a proposal\n\tfunction getActions(uint256 proposalId)\n\t\tpublic\n\t\tview\n\t\treturns (\n\t\t\taddress[] memory targets,\n\t\t\tuint256[] memory values,\n\t\t\tstring[] memory signatures,\n\t\t\tbytes[] memory calldatas\n\t\t)\n\t{\n\t\tProposal storage p = proposals[proposalId];\n\t\treturn (p.targets, p.values, p.signatures, p.calldatas);\n\t}\n\n\t/// @notice get the receipt of a single voter in a proposal\n\tfunction getReceipt(uint256 proposalId, address voter)\n\t\tpublic\n\t\tview\n\t\treturns (Receipt memory)\n\t{\n\t\treturn proposals[proposalId].receipts[voter];\n\t}\n\n\t/// @notice get the current status of a proposal\n\tfunction state(uint256 proposalId) public view returns (ProposalState) {\n\t\trequire(\n\t\t\tproposalCount >= proposalId && proposalId > 0,\n\t\t\t\"CompoundVotingMachine::state: invalid proposal id\"\n\t\t);\n\n\t\tProposal storage proposal = proposals[proposalId];\n\n\t\tif (proposal.canceled) {\n\t\t\treturn ProposalState.Canceled;\n\t\t} else if (block.number <= proposal.startBlock) {\n\t\t\treturn ProposalState.Pending;\n\t\t} else if (proposal.executed) {\n\t\t\treturn ProposalState.Executed;\n\t\t} else if (\n\t\t\tproposal.eta > 0 && block.timestamp < proposal.eta //passed quorum but not executed yet, in time lock\n\t\t) {\n\t\t\treturn ProposalState.ActiveTimelock;\n\t\t} else if (\n\t\t\t//regular voting period\n\t\t\tproposal.eta == 0 && block.number <= proposal.endBlock\n\t\t) {\n\t\t\t//proposal is active if we are in the gameChanger period (eta) or no decision yet and in voting period\n\t\t\treturn ProposalState.Active;\n\t\t} else if (\n\t\t\tproposal.forVotes <= proposal.againstVotes ||\n\t\t\tproposal.forVotes < proposal.quoromRequired\n\t\t) {\n\t\t\treturn ProposalState.Defeated;\n\t\t} else if (\n\t\t\tproposal.eta > 0 &&\n\t\t\tblock.timestamp >= proposal.eta.add(gracePeriod())\n\t\t) {\n\t\t\t//expired if not executed gracePeriod after eta\n\t\t\treturn ProposalState.Expired;\n\t\t} else {\n\t\t\treturn ProposalState.Succeeded;\n\t\t}\n\t}\n\n\t/// @notice cast your vote on a proposal\n\t/// @param proposalId the proposal to vote on\n\t/// @param support for or against\n\tfunction castVote(uint256 proposalId, bool support) public {\n\t\t//get all votes in all blockchains including delegated\n\t\tProposal storage proposal = proposals[proposalId];\n\t\tuint256 votes = rep.getVotesAt(msg.sender, true, proposal.startBlock);\n\t\treturn _castVote(msg.sender, proposalId, support, votes);\n\t}\n\n\tstruct VoteSig {\n\t\tbool support;\n\t\tuint8 v;\n\t\tbytes32 r;\n\t\tbytes32 s;\n\t}\n\n\tfunction ecRecoverTest(\n\t\tuint256 proposalId,\n\t\tVoteSig[] memory votesFor,\n\t\tVoteSig[] memory votesAgainst\n\t) public {\n\t\tbytes32 domainSeparator =\n\t\t\tkeccak256(\n\t\t\t\tabi.encode(\n\t\t\t\t\tDOMAIN_TYPEHASH,\n\t\t\t\t\tkeccak256(bytes(name)),\n\t\t\t\t\tgetChainId(),\n\t\t\t\t\taddress(this)\n\t\t\t\t)\n\t\t\t);\n\t\tbytes32 structHashFor =\n\t\t\tkeccak256(abi.encode(BALLOT_TYPEHASH, proposalId, true));\n\t\tbytes32 structHashAgainst =\n\t\t\tkeccak256(abi.encode(BALLOT_TYPEHASH, proposalId, false));\n\t\tbytes32 digestFor =\n\t\t\tkeccak256(\n\t\t\t\tabi.encodePacked(\"\\x19\\x01\", domainSeparator, structHashFor)\n\t\t\t);\n\t\tbytes32 digestAgainst =\n\t\t\tkeccak256(\n\t\t\t\tabi.encodePacked(\"\\x19\\x01\", domainSeparator, structHashAgainst)\n\t\t\t);\n\n\t\tProposal storage proposal = proposals[proposalId];\n\n\t\tuint256 total;\n\t\tfor (uint32 i = 0; i < votesFor.length; i++) {\n\t\t\tbytes32 digest = digestFor;\n\n\t\t\taddress signatory =\n\t\t\t\tecrecover(digest, votesFor[i].v, votesFor[i].r, votesFor[i].s);\n\t\t\trequire(\n\t\t\t\tsignatory != address(0),\n\t\t\t\t\"CompoundVotingMachine::castVoteBySig: invalid signature\"\n\t\t\t);\n\t\t\trequire(\n\t\t\t\tvotesFor[i].support == true,\n\t\t\t\t\"CompoundVotingMachine::castVoteBySig: invalid support value in for batch\"\n\t\t\t);\n\t\t\ttotal += rep.getVotesAt(signatory, true, proposal.startBlock);\n\t\t\tReceipt storage receipt = proposal.receipts[signatory];\n\t\t\treceipt.hasVoted = true;\n\t\t\treceipt.support = true;\n\t\t}\n\t\tif (votesFor.length > 0) {\n\t\t\taddress voteAddressHash =\n\t\t\t\taddress(uint160(uint256(keccak256(abi.encode(votesFor)))));\n\t\t\t_castVote(voteAddressHash, proposalId, true, total);\n\t\t}\n\n\t\ttotal = 0;\n\t\tfor (uint32 i = 0; i < votesAgainst.length; i++) {\n\t\t\tbytes32 digest = digestAgainst;\n\n\t\t\taddress signatory =\n\t\t\t\tecrecover(\n\t\t\t\t\tdigest,\n\t\t\t\t\tvotesAgainst[i].v,\n\t\t\t\t\tvotesAgainst[i].r,\n\t\t\t\t\tvotesAgainst[i].s\n\t\t\t\t);\n\t\t\trequire(\n\t\t\t\tsignatory != address(0),\n\t\t\t\t\"CompoundVotingMachine::castVoteBySig: invalid signature\"\n\t\t\t);\n\t\t\trequire(\n\t\t\t\tvotesAgainst[i].support == false,\n\t\t\t\t\"CompoundVotingMachine::castVoteBySig: invalid support value in against batch\"\n\t\t\t);\n\t\t\ttotal += rep.getVotesAt(signatory, true, proposal.startBlock);\n\t\t\tReceipt storage receipt = proposal.receipts[signatory];\n\t\t\treceipt.hasVoted = true;\n\t\t\treceipt.support = true;\n\t\t}\n\t\tif (votesAgainst.length > 0) {\n\t\t\taddress voteAddressHash =\n\t\t\t\taddress(uint160(uint256(keccak256(abi.encode(votesAgainst)))));\n\t\t\t_castVote(voteAddressHash, proposalId, false, total);\n\t\t}\n\t\t// rep.balanceOfAtAggregated(users, block.number);\n\t}\n\n\t/// @notice helper to cast a vote for someone else by using eip712 signatures\n\tfunction castVoteBySig(\n\t\tuint256 proposalId,\n\t\tbool support,\n\t\tuint8 v,\n\t\tbytes32 r,\n\t\tbytes32 s\n\t) public {\n\t\tbytes32 domainSeparator =\n\t\t\tkeccak256(\n\t\t\t\tabi.encode(\n\t\t\t\t\tDOMAIN_TYPEHASH,\n\t\t\t\t\tkeccak256(bytes(name)),\n\t\t\t\t\tgetChainId(),\n\t\t\t\t\taddress(this)\n\t\t\t\t)\n\t\t\t);\n\t\tbytes32 structHash =\n\t\t\tkeccak256(abi.encode(BALLOT_TYPEHASH, proposalId, support));\n\t\tbytes32 digest =\n\t\t\tkeccak256(\n\t\t\t\tabi.encodePacked(\"\\x19\\x01\", domainSeparator, structHash)\n\t\t\t);\n\t\taddress signatory = ecrecover(digest, v, r, s);\n\t\trequire(\n\t\t\tsignatory != address(0),\n\t\t\t\"CompoundVotingMachine::castVoteBySig: invalid signature\"\n\t\t);\n\n\t\t//get all votes in all blockchains including delegated\n\t\tProposal storage proposal = proposals[proposalId];\n\t\tuint256 votes = rep.getVotesAt(signatory, true, proposal.startBlock);\n\t\treturn _castVote(signatory, proposalId, support, votes);\n\t}\n\n\t/// @notice internal helper to cast a vote\n\tfunction _castVote(\n\t\taddress voter,\n\t\tuint256 proposalId,\n\t\tbool support,\n\t\tuint256 votes\n\t) internal {\n\t\trequire(\n\t\t\tstate(proposalId) == ProposalState.Active ||\n\t\t\t\tstate(proposalId) == ProposalState.ActiveTimelock,\n\t\t\t\"CompoundVotingMachine::_castVote: voting is closed\"\n\t\t);\n\n\t\tProposal storage proposal = proposals[proposalId];\n\t\tReceipt storage receipt = proposal.receipts[voter];\n\t\trequire(\n\t\t\treceipt.hasVoted == false,\n\t\t\t\"CompoundVotingMachine::_castVote: voter already voted\"\n\t\t);\n\n\t\tbool hasChanged = proposal.forVotes > proposal.againstVotes;\n\t\tif (support) {\n\t\t\tproposal.forVotes = proposal.forVotes.add(votes);\n\t\t} else {\n\t\t\tproposal.againstVotes = proposal.againstVotes.add(votes);\n\t\t}\n\n\t\thasChanged = hasChanged != (proposal.forVotes > proposal.againstVotes);\n\t\treceipt.hasVoted = true;\n\t\treceipt.support = support;\n\t\treceipt.votes = votes;\n\n\t\t// if quorom passed then start the queue period\n\t\tif (\n\t\t\tproposal.forVotes >= proposal.quoromRequired ||\n\t\t\tproposal.againstVotes >= proposal.quoromRequired\n\t\t) _updateETA(proposalId, hasChanged);\n\t\temit VoteCast(voter, proposalId, support, votes);\n\t}\n\n\t// function __acceptAdmin() public {\n\t// \trequire(\n\t// \t\tmsg.sender == guardian,\n\t// \t\t\"CompoundVotingMachine::__acceptAdmin: sender must be gov guardian\"\n\t// \t);\n\t// \ttimelock.acceptAdmin();\n\t// }\n\n\t// function __abdicate() public {\n\t// \trequire(\n\t// \t\tmsg.sender == guardian,\n\t// \t\t\"CompoundVotingMachine::__abdicate: sender must be gov guardian\"\n\t// \t);\n\t// \tguardian = address(0);\n\t// }\n\n\t// function __queueSetTimelockPendingAdmin(\n\t// \taddress newPendingAdmin,\n\t// \tuint256 eta\n\t// ) public {\n\t// \trequire(\n\t// \t\tmsg.sender == guardian,\n\t// \t\t\"CompoundVotingMachine::__queueSetTimelockPendingAdmin: sender must be gov guardian\"\n\t// \t);\n\t// \ttimelock.queueTransaction(\n\t// \t\taddress(timelock),\n\t// \t\t0,\n\t// \t\t\"setPendingAdmin(address)\",\n\t// \t\tabi.encode(newPendingAdmin),\n\t// \t\teta\n\t// \t);\n\t// }\n\n\t// function __executeSetTimelockPendingAdmin(\n\t// \taddress newPendingAdmin,\n\t// \tuint256 eta\n\t// ) public {\n\t// \trequire(\n\t// \t\tmsg.sender == guardian,\n\t// \t\t\"CompoundVotingMachine::__executeSetTimelockPendingAdmin: sender must be gov guardian\"\n\t// \t);\n\t// \ttimelock.executeTransaction(\n\t// \t\taddress(timelock),\n\t// \t\t0,\n\t// \t\t\"setPendingAdmin(address)\",\n\t// \t\tabi.encode(newPendingAdmin),\n\t// \t\teta\n\t// \t);\n\t// }\n\n\tfunction getChainId() public pure returns (uint256) {\n\t\tuint256 chainId;\n\t\tassembly {\n\t\t\tchainId := chainid()\n\t\t}\n\t\treturn chainId;\n\t}\n}\n",
  "sourcePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/governance/CompoundVotingMachine.sol",
  "ast": {
    "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/governance/CompoundVotingMachine.sol",
    "exportedSymbols": {
      "CompoundVotingMachine": [
        2301
      ]
    },
    "id": 2302,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 715,
        "literals": [
          "solidity",
          ">=",
          "0.6"
        ],
        "nodeType": "PragmaDirective",
        "src": "32:22:3"
      },
      {
        "id": 716,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "55:33:3"
      },
      {
        "absolutePath": "@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol",
        "file": "@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol",
        "id": 717,
        "nodeType": "ImportDirective",
        "scope": 2302,
        "sourceUnit": 8141,
        "src": "90:74:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/DAOStackInterfaces.sol",
        "file": "../DAOStackInterfaces.sol",
        "id": 718,
        "nodeType": "ImportDirective",
        "scope": 2302,
        "sourceUnit": 257,
        "src": "165:35:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2301,
        "linearizedBaseContracts": [
          2301
        ],
        "name": "CompoundVotingMachine",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 721,
            "libraryName": {
              "contractScope": null,
              "id": 719,
              "name": "SafeMathUpgradeable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8140,
              "src": "242:19:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMathUpgradeable_$8140",
                "typeString": "library SafeMathUpgradeable"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "236:38:3",
            "typeName": {
              "id": 720,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "266:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": true,
            "documentation": {
              "id": 722,
              "nodeType": "StructuredDocumentation",
              "src": "276:37:3",
              "text": "@notice The name of this contract"
            },
            "functionSelector": "06fdde03",
            "id": 725,
            "mutability": "constant",
            "name": "name",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 2301,
            "src": "315:54:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory_ptr",
              "typeString": "string"
            },
            "typeName": {
              "id": 723,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "315:6:3",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "476f6f6444414f20566f74696e67204d616368696e65",
              "id": 724,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "345:24:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_f0e8bb1b9036884fc34b9b811b9c0948f4a374ea4f5429d4533b8ab3c9fa3734",
                "typeString": "literal_string \"GoodDAO Voting Machine\""
              },
              "value": "GoodDAO Voting Machine"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 726,
              "nodeType": "StructuredDocumentation",
              "src": "373:86:3",
              "text": "@notice the number of blocks a proposal is open for voting (before passing quorum)"
            },
            "functionSelector": "b24b7ffd",
            "id": 728,
            "mutability": "mutable",
            "name": "votingPeriodBlocks",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 2301,
            "src": "461:33:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 727,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "461:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 744,
              "nodeType": "Block",
              "src": "680:48:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "313030",
                        "id": 741,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "720:3:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        },
                        "value": "100"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "33",
                            "id": 738,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "713:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 734,
                                "name": "rep",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 825,
                                "src": "691:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ReputationInterface_$105",
                                  "typeString": "contract ReputationInterface"
                                }
                              },
                              "id": 735,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "totalSupply",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 90,
                              "src": "691:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                "typeString": "function () view external returns (uint256)"
                              }
                            },
                            "id": 736,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "691:17:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8053,
                          "src": "691:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 739,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "691:24:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 740,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8070,
                      "src": "691:28:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 742,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "691:33:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 733,
                  "id": 743,
                  "nodeType": "Return",
                  "src": "684:40:3"
                }
              ]
            },
            "documentation": {
              "id": 729,
              "nodeType": "StructuredDocumentation",
              "src": "498:127:3",
              "text": "@notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed"
            },
            "functionSelector": "24bc1a64",
            "id": 745,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "quorumVotes",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 730,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "647:2:3"
            },
            "returnParameters": {
              "id": 733,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 732,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 745,
                  "src": "671:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 731,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "671:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "670:9:3"
            },
            "scope": 2301,
            "src": "627:101:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 764,
              "nodeType": "Block",
              "src": "905:61:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "313030",
                        "id": 761,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "958:3:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        },
                        "value": "100"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 758,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "951:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 755,
                                "name": "blockNumber",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 748,
                                "src": "934:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 753,
                                "name": "rep",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 825,
                                "src": "916:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ReputationInterface_$105",
                                  "typeString": "contract ReputationInterface"
                                }
                              },
                              "id": 754,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "totalSupplyAt",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 97,
                              "src": "916:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) view external returns (uint256)"
                              }
                            },
                            "id": 756,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "916:30:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 757,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8053,
                          "src": "916:34:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 759,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "916:37:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 760,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8070,
                      "src": "916:41:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 762,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "916:46:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 752,
                  "id": 763,
                  "nodeType": "Return",
                  "src": "909:53:3"
                }
              ]
            },
            "documentation": {
              "id": 746,
              "nodeType": "StructuredDocumentation",
              "src": "736:82:3",
              "text": "@notice The number of votes required in order for a voter to become a proposer"
            },
            "functionSelector": "7629a4ac",
            "id": 765,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "proposalThreshold",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 749,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 748,
                  "mutability": "mutable",
                  "name": "blockNumber",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 765,
                  "src": "847:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 747,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "847:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "846:21:3"
            },
            "returnParameters": {
              "id": 752,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 751,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 765,
                  "src": "895:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 750,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "895:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "894:9:3"
            },
            "scope": 2301,
            "src": "820:146:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 773,
              "nodeType": "Block",
              "src": "1116:17:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "3130",
                    "id": 771,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1127:2:3",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_10_by_1",
                      "typeString": "int_const 10"
                    },
                    "value": "10"
                  },
                  "functionReturnParameters": 770,
                  "id": 772,
                  "nodeType": "Return",
                  "src": "1120:9:3"
                }
              ]
            },
            "documentation": {
              "id": 766,
              "nodeType": "StructuredDocumentation",
              "src": "975:76:3",
              "text": "@notice The maximum number of actions that can be included in a proposal"
            },
            "functionSelector": "7bdbe4d0",
            "id": 774,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "proposalMaxOperations",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 767,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1083:2:3"
            },
            "returnParameters": {
              "id": 770,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 769,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 774,
                  "src": "1107:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 768,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1107:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1106:9:3"
            },
            "scope": 2301,
            "src": "1053:80:3",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 782,
              "nodeType": "Block",
              "src": "1284:16:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "31",
                    "id": 780,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1295:1:3",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "1"
                  },
                  "functionReturnParameters": 779,
                  "id": 781,
                  "nodeType": "Return",
                  "src": "1288:8:3"
                }
              ]
            },
            "documentation": {
              "id": 775,
              "nodeType": "StructuredDocumentation",
              "src": "1150:79:3",
              "text": "@notice The delay before voting on a proposal may take place, once proposed"
            },
            "functionSelector": "3932abb1",
            "id": 783,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "votingDelay",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 776,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1251:2:3"
            },
            "returnParameters": {
              "id": 779,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 778,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 783,
                  "src": "1275:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 777,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1275:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1274:9:3"
            },
            "scope": 2301,
            "src": "1231:69:3",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 791,
              "nodeType": "Block",
              "src": "1429:33:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 789,
                    "name": "votingPeriodBlocks",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 728,
                    "src": "1440:18:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 788,
                  "id": 790,
                  "nodeType": "Return",
                  "src": "1433:25:3"
                }
              ]
            },
            "documentation": {
              "id": 784,
              "nodeType": "StructuredDocumentation",
              "src": "1314:59:3",
              "text": "@notice The duration of voting on a proposal, in blocks"
            },
            "functionSelector": "02a251a3",
            "id": 792,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "votingPeriod",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 785,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1396:2:3"
            },
            "returnParameters": {
              "id": 788,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 787,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 792,
                  "src": "1420:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 786,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1420:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1419:9:3"
            },
            "scope": 2301,
            "src": "1375:87:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 800,
              "nodeType": "Block",
              "src": "1654:21:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "32",
                    "id": 798,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1665:6:3",
                    "subdenomination": "days",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_172800_by_1",
                      "typeString": "int_const 172800"
                    },
                    "value": "2"
                  },
                  "functionReturnParameters": 797,
                  "id": 799,
                  "nodeType": "Return",
                  "src": "1658:13:3"
                }
              ]
            },
            "documentation": {
              "id": 793,
              "nodeType": "StructuredDocumentation",
              "src": "1509:90:3",
              "text": "@notice The duration of time after proposal passed thershold before it can be expected"
            },
            "functionSelector": "8b5d4b2c",
            "id": 801,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "queuePeriod",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 794,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1621:2:3"
            },
            "returnParameters": {
              "id": 797,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 796,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 801,
                  "src": "1645:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 795,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1645:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1644:9:3"
            },
            "scope": 2301,
            "src": "1601:74:3",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 809,
              "nodeType": "Block",
              "src": "1885:21:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "31",
                    "id": 807,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1896:6:3",
                    "subdenomination": "days",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_86400_by_1",
                      "typeString": "int_const 86400"
                    },
                    "value": "1"
                  },
                  "functionReturnParameters": 806,
                  "id": 808,
                  "nodeType": "Return",
                  "src": "1889:13:3"
                }
              ]
            },
            "documentation": {
              "id": 802,
              "nodeType": "StructuredDocumentation",
              "src": "1688:136:3",
              "text": "@notice During the queue period if vote decision has changed, we extend queue period so\n that at least gameChangerPeriod is left"
            },
            "functionSelector": "d2895d16",
            "id": 810,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "gameChangerPeriod",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 803,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1852:2:3"
            },
            "returnParameters": {
              "id": 806,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 805,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 810,
                  "src": "1876:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 804,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1876:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1875:9:3"
            },
            "scope": 2301,
            "src": "1826:80:3",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 818,
              "nodeType": "Block",
              "src": "2051:21:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "33",
                    "id": 816,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2062:6:3",
                    "subdenomination": "days",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_259200_by_1",
                      "typeString": "int_const 259200"
                    },
                    "value": "3"
                  },
                  "functionReturnParameters": 815,
                  "id": 817,
                  "nodeType": "Return",
                  "src": "2055:13:3"
                }
              ]
            },
            "documentation": {
              "id": 811,
              "nodeType": "StructuredDocumentation",
              "src": "1918:78:3",
              "text": "@notice the time a succeeded proposal has to be executed on the blockchain"
            },
            "functionSelector": "a06db7dc",
            "id": 819,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "gracePeriod",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 812,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2018:2:3"
            },
            "returnParameters": {
              "id": 815,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 814,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 819,
                  "src": "2042:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 813,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2042:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2041:9:3"
            },
            "scope": 2301,
            "src": "1998:74:3",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 820,
              "nodeType": "StructuredDocumentation",
              "src": "2084:45:3",
              "text": "@notice The address of the DAO controller"
            },
            "functionSelector": "f77c4791",
            "id": 822,
            "mutability": "mutable",
            "name": "controller",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 2301,
            "src": "2131:28:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Controller_$51",
              "typeString": "contract Controller"
            },
            "typeName": {
              "contractScope": null,
              "id": 821,
              "name": "Controller",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 51,
              "src": "2131:10:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Controller_$51",
                "typeString": "contract Controller"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 823,
              "nodeType": "StructuredDocumentation",
              "src": "2163:51:3",
              "text": "@notice The address of the DAO reputation token"
            },
            "functionSelector": "ccc07959",
            "id": 825,
            "mutability": "mutable",
            "name": "rep",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 2301,
            "src": "2216:30:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ReputationInterface_$105",
              "typeString": "contract ReputationInterface"
            },
            "typeName": {
              "contractScope": null,
              "id": 824,
              "name": "ReputationInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 105,
              "src": "2216:19:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ReputationInterface_$105",
                "typeString": "contract ReputationInterface"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 826,
              "nodeType": "StructuredDocumentation",
              "src": "2250:48:3",
              "text": "@notice The address of the Governor Guardian"
            },
            "functionSelector": "452a9320",
            "id": 828,
            "mutability": "mutable",
            "name": "guardian",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 2301,
            "src": "2300:23:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 827,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "2300:7:3",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 829,
              "nodeType": "StructuredDocumentation",
              "src": "2327:41:3",
              "text": "@notice The total number of proposals"
            },
            "functionSelector": "da35c664",
            "id": 831,
            "mutability": "mutable",
            "name": "proposalCount",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 2301,
            "src": "2370:28:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 830,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "2370:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "canonicalName": "CompoundVotingMachine.Proposal",
            "id": 883,
            "members": [
              {
                "constant": false,
                "id": 834,
                "mutability": "mutable",
                "name": "id",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "2472:10:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 833,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2472:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 837,
                "mutability": "mutable",
                "name": "proposer",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "2524:16:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 836,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "2524:7:3",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 840,
                "mutability": "mutable",
                "name": "eta",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "2650:11:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 839,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2650:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 844,
                "mutability": "mutable",
                "name": "targets",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "2737:17:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                  "typeString": "address[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 842,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2737:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 843,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "2737:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                    "typeString": "address[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 848,
                "mutability": "mutable",
                "name": "values",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "2853:16:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                  "typeString": "uint256[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 846,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2853:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 847,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "2853:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                    "typeString": "uint256[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 852,
                "mutability": "mutable",
                "name": "signatures",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "2940:19:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                  "typeString": "string[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 850,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2940:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "id": 851,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "2940:8:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                    "typeString": "string[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 856,
                "mutability": "mutable",
                "name": "calldatas",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "3032:17:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                  "typeString": "bytes[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 854,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3032:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "id": 855,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "3032:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                    "typeString": "bytes[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 859,
                "mutability": "mutable",
                "name": "startBlock",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "3155:18:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 858,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3155:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 862,
                "mutability": "mutable",
                "name": "endBlock",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "3262:16:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 861,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3262:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 865,
                "mutability": "mutable",
                "name": "forVotes",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "3346:16:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 864,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3346:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 868,
                "mutability": "mutable",
                "name": "againstVotes",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "3435:20:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 867,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3435:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 871,
                "mutability": "mutable",
                "name": "canceled",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "3525:13:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 870,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "3525:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 874,
                "mutability": "mutable",
                "name": "executed",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "3608:13:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 873,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "3608:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 879,
                "mutability": "mutable",
                "name": "receipts",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "3688:36:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Receipt_$893_storage_$",
                  "typeString": "mapping(address => struct CompoundVotingMachine.Receipt)"
                },
                "typeName": {
                  "id": 878,
                  "keyType": {
                    "id": 876,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3696:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "3688:27:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Receipt_$893_storage_$",
                    "typeString": "mapping(address => struct CompoundVotingMachine.Receipt)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 877,
                    "name": "Receipt",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 893,
                    "src": "3707:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                      "typeString": "struct CompoundVotingMachine.Receipt"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 882,
                "mutability": "mutable",
                "name": "quoromRequired",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "3779:22:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 881,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3779:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Proposal",
            "nodeType": "StructDefinition",
            "scope": 2301,
            "src": "2402:1403:3",
            "visibility": "public"
          },
          {
            "canonicalName": "CompoundVotingMachine.Receipt",
            "id": 893,
            "members": [
              {
                "constant": false,
                "id": 886,
                "mutability": "mutable",
                "name": "hasVoted",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 893,
                "src": "3924:13:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 885,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "3924:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 889,
                "mutability": "mutable",
                "name": "support",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 893,
                "src": "4002:12:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 888,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "4002:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 892,
                "mutability": "mutable",
                "name": "votes",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 893,
                "src": "4083:13:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 891,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "4083:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Receipt",
            "nodeType": "StructDefinition",
            "scope": 2301,
            "src": "3855:245:3",
            "visibility": "public"
          },
          {
            "canonicalName": "CompoundVotingMachine.ProposalState",
            "id": 902,
            "members": [
              {
                "id": 894,
                "name": "Pending",
                "nodeType": "EnumValue",
                "src": "4181:7:3"
              },
              {
                "id": 895,
                "name": "Active",
                "nodeType": "EnumValue",
                "src": "4192:6:3"
              },
              {
                "id": 896,
                "name": "ActiveTimelock",
                "nodeType": "EnumValue",
                "src": "4202:14:3"
              },
              {
                "id": 897,
                "name": "Canceled",
                "nodeType": "EnumValue",
                "src": "4291:8:3"
              },
              {
                "id": 898,
                "name": "Defeated",
                "nodeType": "EnumValue",
                "src": "4303:8:3"
              },
              {
                "id": 899,
                "name": "Succeeded",
                "nodeType": "EnumValue",
                "src": "4315:9:3"
              },
              {
                "id": 900,
                "name": "Expired",
                "nodeType": "EnumValue",
                "src": "4404:7:3"
              },
              {
                "id": 901,
                "name": "Executed",
                "nodeType": "EnumValue",
                "src": "4415:8:3"
              }
            ],
            "name": "ProposalState",
            "nodeType": "EnumDefinition",
            "src": "4158:268:3"
          },
          {
            "constant": false,
            "documentation": {
              "id": 903,
              "nodeType": "StructuredDocumentation",
              "src": "4429:62:3",
              "text": "@notice The official record of all proposals ever proposed"
            },
            "functionSelector": "013cf08b",
            "id": 907,
            "mutability": "mutable",
            "name": "proposals",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 2301,
            "src": "4493:45:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
              "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal)"
            },
            "typeName": {
              "id": 906,
              "keyType": {
                "id": 904,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4501:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "4493:28:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal)"
              },
              "valueType": {
                "contractScope": null,
                "id": 905,
                "name": "Proposal",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 883,
                "src": "4512:8:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                  "typeString": "struct CompoundVotingMachine.Proposal"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 908,
              "nodeType": "StructuredDocumentation",
              "src": "4542:49:3",
              "text": "@notice The latest proposal for each proposer"
            },
            "functionSelector": "17977c61",
            "id": 912,
            "mutability": "mutable",
            "name": "latestProposalIds",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 2301,
            "src": "4593:52:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 911,
              "keyType": {
                "id": 909,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "4601:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "4593:27:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 910,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4612:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "documentation": {
              "id": 913,
              "nodeType": "StructuredDocumentation",
              "src": "4649:58:3",
              "text": "@notice The EIP-712 typehash for the contract's domain"
            },
            "functionSelector": "20606b70",
            "id": 918,
            "mutability": "constant",
            "name": "DOMAIN_TYPEHASH",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 2301,
            "src": "4709:131:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 914,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "4709:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                  "id": 916,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "4767:69:3",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866",
                    "typeString": "literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""
                  },
                  "value": "EIP712Domain(string name,uint256 chainId,address verifyingContract)"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866",
                    "typeString": "literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""
                  }
                ],
                "id": 915,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "4753:9:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 917,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "4753:87:3",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "documentation": {
              "id": 919,
              "nodeType": "StructuredDocumentation",
              "src": "4844:75:3",
              "text": "@notice The EIP-712 typehash for the ballot struct used by the contract"
            },
            "functionSelector": "deaaa7cc",
            "id": 924,
            "mutability": "constant",
            "name": "BALLOT_TYPEHASH",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 2301,
            "src": "4921:96:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 920,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "4921:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c20737570706f727429",
                  "id": 922,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "4975:41:3",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee",
                    "typeString": "literal_string \"Ballot(uint256 proposalId,bool support)\""
                  },
                  "value": "Ballot(uint256 proposalId,bool support)"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee",
                    "typeString": "literal_string \"Ballot(uint256 proposalId,bool support)\""
                  }
                ],
                "id": 921,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "4965:9:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 923,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "4965:52:3",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 925,
              "nodeType": "StructuredDocumentation",
              "src": "5021:59:3",
              "text": "@notice An event emitted when a new proposal is created"
            },
            "id": 949,
            "name": "ProposalCreated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 948,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 927,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 949,
                  "src": "5107:10:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 926,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5107:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 929,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "proposer",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 949,
                  "src": "5121:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 928,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5121:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 932,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "targets",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 949,
                  "src": "5141:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 930,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5141:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 931,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5141:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 935,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "values",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 949,
                  "src": "5162:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 933,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "5162:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 934,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5162:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 938,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "signatures",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 949,
                  "src": "5182:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 936,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "5182:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 937,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5182:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 941,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "calldatas",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 949,
                  "src": "5205:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                    "typeString": "bytes[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 939,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "5205:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 940,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5205:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                      "typeString": "bytes[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 943,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "startBlock",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 949,
                  "src": "5226:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 942,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5226:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 945,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "endBlock",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 949,
                  "src": "5248:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 944,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5248:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 947,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "description",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 949,
                  "src": "5268:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 946,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5268:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5103:186:3"
            },
            "src": "5082:208:3"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 950,
              "nodeType": "StructuredDocumentation",
              "src": "5293:68:3",
              "text": "@notice An event emitted when a vote has been cast on a proposal"
            },
            "id": 960,
            "name": "VoteCast",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 959,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 952,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "voter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 960,
                  "src": "5381:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 951,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5381:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 954,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "proposalId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 960,
                  "src": "5398:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 953,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5398:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 956,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "support",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 960,
                  "src": "5420:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 955,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5420:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 958,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "votes",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 960,
                  "src": "5436:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 957,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5436:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5377:75:3"
            },
            "src": "5363:90:3"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 961,
              "nodeType": "StructuredDocumentation",
              "src": "5456:62:3",
              "text": "@notice An event emitted when a proposal has been canceled"
            },
            "id": 965,
            "name": "ProposalCanceled",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 964,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 963,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 965,
                  "src": "5543:10:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 962,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5543:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5542:12:3"
            },
            "src": "5520:35:3"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 966,
              "nodeType": "StructuredDocumentation",
              "src": "5558:60:3",
              "text": "@notice An event emitted when a proposal has been queued"
            },
            "id": 972,
            "name": "ProposalQueued",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 971,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 968,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 972,
                  "src": "5641:10:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 967,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5641:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 970,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "eta",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 972,
                  "src": "5653:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 969,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5653:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5640:25:3"
            },
            "src": "5620:46:3"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 973,
              "nodeType": "StructuredDocumentation",
              "src": "5669:62:3",
              "text": "@notice An event emitted when a proposal has been executed"
            },
            "id": 977,
            "name": "ProposalExecuted",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 976,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 975,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 977,
                  "src": "5756:10:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 974,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5756:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5755:12:3"
            },
            "src": "5733:35:3"
          },
          {
            "body": {
              "id": 1004,
              "nodeType": "Block",
              "src": "5963:127:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 992,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 986,
                      "name": "controller",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 822,
                      "src": "5967:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Controller_$51",
                        "typeString": "contract Controller"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 988,
                              "name": "avatar_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 979,
                              "src": "5991:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Avatar_$12",
                                "typeString": "contract Avatar"
                              }
                            },
                            "id": 989,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11,
                            "src": "5991:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_address_$",
                              "typeString": "function () external returns (address)"
                            }
                          },
                          "id": 990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5991:15:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 987,
                        "name": "Controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51,
                        "src": "5980:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Controller_$51_$",
                          "typeString": "type(contract Controller)"
                        }
                      },
                      "id": 991,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5980:27:3",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Controller_$51",
                        "typeString": "contract Controller"
                      }
                    },
                    "src": "5967:40:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Controller_$51",
                      "typeString": "contract Controller"
                    }
                  },
                  "id": 993,
                  "nodeType": "ExpressionStatement",
                  "src": "5967:40:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 998,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 994,
                      "name": "rep",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 825,
                      "src": "6011:3:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ReputationInterface_$105",
                        "typeString": "contract ReputationInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 996,
                          "name": "rep_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 981,
                          "src": "6037:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 995,
                        "name": "ReputationInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 105,
                        "src": "6017:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ReputationInterface_$105_$",
                          "typeString": "type(contract ReputationInterface)"
                        }
                      },
                      "id": 997,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6017:25:3",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ReputationInterface_$105",
                        "typeString": "contract ReputationInterface"
                      }
                    },
                    "src": "6011:31:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReputationInterface_$105",
                      "typeString": "contract ReputationInterface"
                    }
                  },
                  "id": 999,
                  "nodeType": "ExpressionStatement",
                  "src": "6011:31:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1002,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1000,
                      "name": "votingPeriodBlocks",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 728,
                      "src": "6046:18:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1001,
                      "name": "votingPeriodBlocks_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 983,
                      "src": "6067:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6046:40:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1003,
                  "nodeType": "ExpressionStatement",
                  "src": "6046:40:3"
                }
              ]
            },
            "documentation": null,
            "id": 1005,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 984,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 979,
                  "mutability": "mutable",
                  "name": "avatar_",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1005,
                  "src": "5786:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$12",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 978,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12,
                    "src": "5786:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$12",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 981,
                  "mutability": "mutable",
                  "name": "rep_",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1005,
                  "src": "5822:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 980,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5822:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 983,
                  "mutability": "mutable",
                  "name": "votingPeriodBlocks_",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1005,
                  "src": "5860:27:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 982,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5860:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5782:173:3"
            },
            "returnParameters": {
              "id": 985,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5963:0:3"
            },
            "scope": 2301,
            "src": "5771:319:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1198,
              "nodeType": "Block",
              "src": "6608:2035:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1044,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1028,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "6639:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1029,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6639:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 1030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6651:4:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1034,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6674:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1031,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -4,
                                    "src": "6657:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 1032,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "number",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6657:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1033,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7990,
                                "src": "6657:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1035,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6657:19:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1026,
                              "name": "rep",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 825,
                              "src": "6624:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ReputationInterface_$105",
                                "typeString": "contract ReputationInterface"
                              }
                            },
                            "id": 1027,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getVotesAt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 85,
                            "src": "6624:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_bool_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,bool,uint256) view external returns (uint256)"
                            }
                          },
                          "id": 1036,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6624:53:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1041,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6719:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1038,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -4,
                                    "src": "6702:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 1039,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "number",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6702:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1040,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7990,
                                "src": "6702:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1042,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6702:19:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1037,
                            "name": "proposalThreshold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 765,
                            "src": "6684:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 1043,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6684:38:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6624:98:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a70726f706f73653a2070726f706f73657220766f7465732062656c6f772070726f706f73616c207468726573686f6c64",
                        "id": 1045,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6727:73:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9b2b0ca80306099ef62f8972b3271b787834a3477ef373ecb9fa2d532d3c6e00",
                          "typeString": "literal_string \"CompoundVotingMachine::propose: proposer votes below proposal threshold\""
                        },
                        "value": "CompoundVotingMachine::propose: proposer votes below proposal threshold"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9b2b0ca80306099ef62f8972b3271b787834a3477ef373ecb9fa2d532d3c6e00",
                          "typeString": "literal_string \"CompoundVotingMachine::propose: proposer votes below proposal threshold\""
                        }
                      ],
                      "id": 1025,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "6612:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1046,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6612:192:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1047,
                  "nodeType": "ExpressionStatement",
                  "src": "6612:192:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1065,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1059,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1053,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1049,
                                "name": "targets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1009,
                                "src": "6820:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 1050,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6820:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1051,
                                "name": "values",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1012,
                                "src": "6838:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 1052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6838:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6820:31:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1058,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1054,
                                "name": "targets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1009,
                                "src": "6859:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 1055,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6859:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1056,
                                "name": "signatures",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1015,
                                "src": "6877:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "string memory[] memory"
                                }
                              },
                              "id": 1057,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6877:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6859:35:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6820:74:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1060,
                              "name": "targets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1009,
                              "src": "6902:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 1061,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6902:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1062,
                              "name": "calldatas",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1018,
                              "src": "6920:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                "typeString": "bytes memory[] memory"
                              }
                            },
                            "id": 1063,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6920:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6902:34:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "6820:116:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a70726f706f73653a2070726f706f73616c2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d61746368",
                        "id": 1066,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6941:78:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ea293e96934a39762fe2392c4d4535243cbde472b807874ec86c916dc7c1a822",
                          "typeString": "literal_string \"CompoundVotingMachine::propose: proposal function information arity mismatch\""
                        },
                        "value": "CompoundVotingMachine::propose: proposal function information arity mismatch"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ea293e96934a39762fe2392c4d4535243cbde472b807874ec86c916dc7c1a822",
                          "typeString": "literal_string \"CompoundVotingMachine::propose: proposal function information arity mismatch\""
                        }
                      ],
                      "id": 1048,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "6808:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1067,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6808:215:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1068,
                  "nodeType": "ExpressionStatement",
                  "src": "6808:215:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1073,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1070,
                            "name": "targets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1009,
                            "src": "7039:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 1071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7039:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1072,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7057:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "7039:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a70726f706f73653a206d7573742070726f7669646520616374696f6e73",
                        "id": 1074,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7063:54:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a636739b704b574b4a0bad14d4f29d2e646497f330ae25b3931c01dee8029b4e",
                          "typeString": "literal_string \"CompoundVotingMachine::propose: must provide actions\""
                        },
                        "value": "CompoundVotingMachine::propose: must provide actions"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a636739b704b574b4a0bad14d4f29d2e646497f330ae25b3931c01dee8029b4e",
                          "typeString": "literal_string \"CompoundVotingMachine::propose: must provide actions\""
                        }
                      ],
                      "id": 1069,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "7027:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1075,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7027:94:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1076,
                  "nodeType": "ExpressionStatement",
                  "src": "7027:94:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1082,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1078,
                            "name": "targets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1009,
                            "src": "7137:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 1079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7137:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1080,
                            "name": "proposalMaxOperations",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 774,
                            "src": "7155:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                              "typeString": "function () pure returns (uint256)"
                            }
                          },
                          "id": 1081,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7155:23:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7137:41:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a70726f706f73653a20746f6f206d616e7920616374696f6e73",
                        "id": 1083,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7183:50:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4c7f80aab7b616febdc852427ea6c4ea1fd8a58487e5b2f3ebd88c47dcea8183",
                          "typeString": "literal_string \"CompoundVotingMachine::propose: too many actions\""
                        },
                        "value": "CompoundVotingMachine::propose: too many actions"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4c7f80aab7b616febdc852427ea6c4ea1fd8a58487e5b2f3ebd88c47dcea8183",
                          "typeString": "literal_string \"CompoundVotingMachine::propose: too many actions\""
                        }
                      ],
                      "id": 1077,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "7125:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1084,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7125:112:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1085,
                  "nodeType": "ExpressionStatement",
                  "src": "7125:112:3"
                },
                {
                  "assignments": [
                    1087
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1087,
                      "mutability": "mutable",
                      "name": "latestProposalId",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1198,
                      "src": "7242:24:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1086,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7242:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1092,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1088,
                      "name": "latestProposalIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 912,
                      "src": "7269:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 1091,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1089,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "7287:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1090,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7287:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7269:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7242:56:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1093,
                      "name": "latestProposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1087,
                      "src": "7307:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1094,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7327:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7307:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1124,
                  "nodeType": "IfStatement",
                  "src": "7303:543:3",
                  "trueBody": {
                    "id": 1123,
                    "nodeType": "Block",
                    "src": "7330:516:3",
                    "statements": [
                      {
                        "assignments": [
                          1097
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1097,
                            "mutability": "mutable",
                            "name": "proposersLatestProposalState",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1123,
                            "src": "7335:42:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$902",
                              "typeString": "enum CompoundVotingMachine.ProposalState"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1096,
                              "name": "ProposalState",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 902,
                              "src": "7335:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$902",
                                "typeString": "enum CompoundVotingMachine.ProposalState"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1101,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1099,
                              "name": "latestProposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1087,
                              "src": "7390:16:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1098,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1689,
                            "src": "7384:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$902_$",
                              "typeString": "function (uint256) view returns (enum CompoundVotingMachine.ProposalState)"
                            }
                          },
                          "id": 1100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7384:23:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$902",
                            "typeString": "enum CompoundVotingMachine.ProposalState"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7335:72:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1111,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ProposalState_$902",
                                  "typeString": "enum CompoundVotingMachine.ProposalState"
                                },
                                "id": 1106,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1103,
                                  "name": "proposersLatestProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1097,
                                  "src": "7425:28:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$902",
                                    "typeString": "enum CompoundVotingMachine.ProposalState"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1104,
                                    "name": "ProposalState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 902,
                                    "src": "7457:13:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                      "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                                    }
                                  },
                                  "id": 1105,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "Active",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7457:20:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$902",
                                    "typeString": "enum CompoundVotingMachine.ProposalState"
                                  }
                                },
                                "src": "7425:52:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ProposalState_$902",
                                  "typeString": "enum CompoundVotingMachine.ProposalState"
                                },
                                "id": 1110,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1107,
                                  "name": "proposersLatestProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1097,
                                  "src": "7486:28:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$902",
                                    "typeString": "enum CompoundVotingMachine.ProposalState"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1108,
                                    "name": "ProposalState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 902,
                                    "src": "7523:13:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                      "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                                    }
                                  },
                                  "id": 1109,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "ActiveTimelock",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7523:28:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$902",
                                    "typeString": "enum CompoundVotingMachine.ProposalState"
                                  }
                                },
                                "src": "7486:65:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "7425:126:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a70726f706f73653a206f6e65206c6976652070726f706f73616c207065722070726f706f7365722c20666f756e6420616e20616c7265616479206163746976652070726f706f73616c",
                              "id": 1112,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7557:98:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_27825fe0193b582a8b83985f7770fd4173284ad2001b98c550388fe256abf350",
                                "typeString": "literal_string \"CompoundVotingMachine::propose: one live proposal per proposer, found an already active proposal\""
                              },
                              "value": "CompoundVotingMachine::propose: one live proposal per proposer, found an already active proposal"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_27825fe0193b582a8b83985f7770fd4173284ad2001b98c550388fe256abf350",
                                "typeString": "literal_string \"CompoundVotingMachine::propose: one live proposal per proposer, found an already active proposal\""
                              }
                            ],
                            "id": 1102,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7412:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7412:248:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1114,
                        "nodeType": "ExpressionStatement",
                        "src": "7412:248:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalState_$902",
                                "typeString": "enum CompoundVotingMachine.ProposalState"
                              },
                              "id": 1119,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1116,
                                "name": "proposersLatestProposalState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1097,
                                "src": "7678:28:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$902",
                                  "typeString": "enum CompoundVotingMachine.ProposalState"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1117,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 902,
                                  "src": "7710:13:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                    "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                                  }
                                },
                                "id": 1118,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Pending",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7710:21:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$902",
                                  "typeString": "enum CompoundVotingMachine.ProposalState"
                                }
                              },
                              "src": "7678:53:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a70726f706f73653a206f6e65206c6976652070726f706f73616c207065722070726f706f7365722c20666f756e6420616e20616c72656164792070656e64696e672070726f706f73616c",
                              "id": 1120,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7737:99:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ebfc16e0eb0eb5aa072ca281b12ce58284d7add9528bb265de9eaf4cd0d82ab3",
                                "typeString": "literal_string \"CompoundVotingMachine::propose: one live proposal per proposer, found an already pending proposal\""
                              },
                              "value": "CompoundVotingMachine::propose: one live proposal per proposer, found an already pending proposal"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ebfc16e0eb0eb5aa072ca281b12ce58284d7add9528bb265de9eaf4cd0d82ab3",
                                "typeString": "literal_string \"CompoundVotingMachine::propose: one live proposal per proposer, found an already pending proposal\""
                              }
                            ],
                            "id": 1115,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7665:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7665:176:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1122,
                        "nodeType": "ExpressionStatement",
                        "src": "7665:176:3"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    1126
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1126,
                      "mutability": "mutable",
                      "name": "startBlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1198,
                      "src": "7850:18:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1125,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7850:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1133,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 1130,
                          "name": "votingDelay",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 783,
                          "src": "7888:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                            "typeString": "function () pure returns (uint256)"
                          }
                        },
                        "id": 1131,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7888:13:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1127,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -4,
                          "src": "7871:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 1128,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "number",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7871:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1129,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7973,
                      "src": "7871:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 1132,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7871:31:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7850:52:3"
                },
                {
                  "assignments": [
                    1135
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1135,
                      "mutability": "mutable",
                      "name": "endBlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1198,
                      "src": "7906:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1134,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7906:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1141,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 1138,
                          "name": "votingPeriod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 792,
                          "src": "7940:12:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 1139,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7940:14:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1136,
                        "name": "startBlock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1126,
                        "src": "7925:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1137,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7973,
                      "src": "7925:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 1140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7925:30:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7906:49:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "7960:15:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 1142,
                      "name": "proposalCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 831,
                      "src": "7960:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1144,
                  "nodeType": "ExpressionStatement",
                  "src": "7960:15:3"
                },
                {
                  "assignments": [
                    1146
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1146,
                      "mutability": "mutable",
                      "name": "newProposal",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1198,
                      "src": "7979:27:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_memory_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1145,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 883,
                        "src": "7979:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1165,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1148,
                        "name": "proposalCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 831,
                        "src": "8031:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1149,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "8060:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8060:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1151,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8081:1:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 1152,
                        "name": "targets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1009,
                        "src": "8097:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1153,
                        "name": "values",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1012,
                        "src": "8118:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1154,
                        "name": "signatures",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1015,
                        "src": "8142:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                          "typeString": "string memory[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1155,
                        "name": "calldatas",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1018,
                        "src": "8169:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes memory[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1156,
                        "name": "startBlock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1126,
                        "src": "8196:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1157,
                        "name": "endBlock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1135,
                        "src": "8222:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1158,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8246:1:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1159,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8267:1:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 1160,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8284:5:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 1161,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8305:5:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 1162,
                          "name": "quorumVotes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 745,
                          "src": "8332:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 1163,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8332:13:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                          "typeString": "string memory[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes memory[] memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1147,
                      "name": "Proposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 883,
                      "src": "8012:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Proposal_$883_storage_ptr_$",
                        "typeString": "type(struct CompoundVotingMachine.Proposal storage pointer)"
                      }
                    },
                    "id": 1164,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "id",
                      "proposer",
                      "eta",
                      "targets",
                      "values",
                      "signatures",
                      "calldatas",
                      "startBlock",
                      "endBlock",
                      "forVotes",
                      "againstVotes",
                      "canceled",
                      "executed",
                      "quoromRequired"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "8012:339:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$883_memory_ptr",
                      "typeString": "struct CompoundVotingMachine.Proposal memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7979:372:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1166,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 907,
                        "src": "8356:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                          "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                        }
                      },
                      "id": 1169,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1167,
                          "name": "newProposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1146,
                          "src": "8366:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_memory_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal memory"
                          }
                        },
                        "id": 1168,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "id",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 834,
                        "src": "8366:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8356:25:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_storage",
                        "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1170,
                      "name": "newProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1146,
                      "src": "8384:11:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_memory_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal memory"
                      }
                    },
                    "src": "8356:39:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$883_storage",
                      "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                    }
                  },
                  "id": 1172,
                  "nodeType": "ExpressionStatement",
                  "src": "8356:39:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1179,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1173,
                        "name": "latestProposalIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 912,
                        "src": "8399:17:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 1176,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1174,
                          "name": "newProposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1146,
                          "src": "8417:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_memory_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal memory"
                          }
                        },
                        "id": 1175,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "proposer",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 837,
                        "src": "8417:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8399:39:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1177,
                        "name": "newProposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1146,
                        "src": "8441:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_memory_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal memory"
                        }
                      },
                      "id": 1178,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "id",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 834,
                      "src": "8441:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8399:56:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1180,
                  "nodeType": "ExpressionStatement",
                  "src": "8399:56:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1182,
                          "name": "newProposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1146,
                          "src": "8485:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_memory_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal memory"
                          }
                        },
                        "id": 1183,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "id",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 834,
                        "src": "8485:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1184,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "8504:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1185,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8504:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1186,
                        "name": "targets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1009,
                        "src": "8519:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1187,
                        "name": "values",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1012,
                        "src": "8531:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1188,
                        "name": "signatures",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1015,
                        "src": "8542:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                          "typeString": "string memory[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1189,
                        "name": "calldatas",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1018,
                        "src": "8557:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes memory[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1190,
                        "name": "startBlock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1126,
                        "src": "8571:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1191,
                        "name": "endBlock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1135,
                        "src": "8586:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1192,
                        "name": "description",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1020,
                        "src": "8599:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                          "typeString": "string memory[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes memory[] memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 1181,
                      "name": "ProposalCreated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 949,
                      "src": "8465:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,address,address[] memory,uint256[] memory,string memory[] memory,bytes memory[] memory,uint256,uint256,string memory)"
                      }
                    },
                    "id": 1193,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8465:149:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1194,
                  "nodeType": "EmitStatement",
                  "src": "8460:154:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1195,
                      "name": "newProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1146,
                      "src": "8625:11:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_memory_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal memory"
                      }
                    },
                    "id": 1196,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "id",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 834,
                    "src": "8625:14:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1024,
                  "id": 1197,
                  "nodeType": "Return",
                  "src": "8618:21:3"
                }
              ]
            },
            "documentation": {
              "id": 1006,
              "nodeType": "StructuredDocumentation",
              "src": "6093:326:3",
              "text": "@notice make a proposal to be voted on\n @param targets list of contracts to be excuted on\n @param values list of eth value to be used in each contract call\n @param signatures the list of functions to execute\n @param calldatas the list of parameters to pass to each function\n @return uint256 proposal id"
            },
            "functionSelector": "da95691a",
            "id": 1199,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "propose",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1021,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1009,
                  "mutability": "mutable",
                  "name": "targets",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1199,
                  "src": "6441:24:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1007,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "6441:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 1008,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6441:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1012,
                  "mutability": "mutable",
                  "name": "values",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1199,
                  "src": "6469:23:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1010,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "6469:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1011,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6469:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1015,
                  "mutability": "mutable",
                  "name": "signatures",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1199,
                  "src": "6496:26:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1013,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "6496:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 1014,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6496:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1018,
                  "mutability": "mutable",
                  "name": "calldatas",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1199,
                  "src": "6526:24:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                    "typeString": "bytes[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1016,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "6526:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 1017,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6526:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                      "typeString": "bytes[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1020,
                  "mutability": "mutable",
                  "name": "description",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1199,
                  "src": "6554:25:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1019,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6554:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6437:145:3"
            },
            "returnParameters": {
              "id": 1024,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1023,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1199,
                  "src": "6599:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1022,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6599:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6598:9:3"
            },
            "scope": 2301,
            "src": "6421:2222:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1270,
              "nodeType": "Block",
              "src": "8984:601:3",
              "statements": [
                {
                  "assignments": [
                    1208
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1208,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1270,
                      "src": "8988:25:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1207,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 883,
                        "src": "8988:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1212,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1209,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 907,
                      "src": "9016:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                        "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                      }
                    },
                    "id": 1211,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1210,
                      "name": "proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1202,
                      "src": "9026:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9016:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$883_storage",
                      "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8988:49:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1216,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1213,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1208,
                        "src": "9120:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                        }
                      },
                      "id": 1214,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "eta",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 840,
                      "src": "9120:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1215,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9136:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9120:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "id": 1229,
                      "name": "hasVoteChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1204,
                      "src": "9306:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "id": 1261,
                      "nodeType": "Block",
                      "src": "9517:16:3",
                      "statements": [
                        {
                          "expression": null,
                          "functionReturnParameters": 1206,
                          "id": 1260,
                          "nodeType": "Return",
                          "src": "9522:7:3"
                        }
                      ]
                    },
                    "id": 1262,
                    "nodeType": "IfStatement",
                    "src": "9302:231:3",
                    "trueBody": {
                      "id": 1259,
                      "nodeType": "Block",
                      "src": "9322:189:3",
                      "statements": [
                        {
                          "assignments": [
                            1231
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1231,
                              "mutability": "mutable",
                              "name": "timeLeft",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 1259,
                              "src": "9327:16:3",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1230,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "9327:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 1238,
                          "initialValue": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1235,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "9363:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 1236,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "9363:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1232,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1208,
                                  "src": "9346:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                    "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                  }
                                },
                                "id": 1233,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "eta",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 840,
                                "src": "9346:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1234,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7990,
                              "src": "9346:16:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1237,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9346:33:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "9327:52:3"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1257,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1239,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1208,
                                "src": "9384:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                  "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                }
                              },
                              "id": 1241,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "eta",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 840,
                              "src": "9384:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "condition": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1248,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 1245,
                                      "name": "timeLeft",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1231,
                                      "src": "9421:8:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 1246,
                                        "name": "gameChangerPeriod",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 810,
                                        "src": "9432:17:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                          "typeString": "function () pure returns (uint256)"
                                        }
                                      },
                                      "id": 1247,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9432:19:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9421:30:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1253,
                                        "name": "timeLeft",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1231,
                                        "src": "9492:8:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 1250,
                                          "name": "gameChangerPeriod",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 810,
                                          "src": "9468:17:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                            "typeString": "function () pure returns (uint256)"
                                          }
                                        },
                                        "id": 1251,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9468:19:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 1252,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7990,
                                      "src": "9468:23:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 1254,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9468:33:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1255,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "9421:80:3",
                                  "trueExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1249,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9459:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1242,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1208,
                                    "src": "9399:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                      "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                    }
                                  },
                                  "id": 1243,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "eta",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 840,
                                  "src": "9399:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1244,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7973,
                                "src": "9399:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1256,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9399:107:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9384:122:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1258,
                          "nodeType": "ExpressionStatement",
                          "src": "9384:122:3"
                        }
                      ]
                    }
                  },
                  "id": 1263,
                  "nodeType": "IfStatement",
                  "src": "9116:417:3",
                  "trueBody": {
                    "id": 1228,
                    "nodeType": "Block",
                    "src": "9139:59:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1217,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1208,
                              "src": "9144:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                              }
                            },
                            "id": 1219,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "eta",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 840,
                            "src": "9144:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 1223,
                                  "name": "queuePeriod",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 801,
                                  "src": "9179:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                    "typeString": "function () pure returns (uint256)"
                                  }
                                },
                                "id": 1224,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9179:13:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1220,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "9159:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 1221,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "9159:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1222,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7973,
                              "src": "9159:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1225,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9159:34:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9144:49:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1227,
                        "nodeType": "ExpressionStatement",
                        "src": "9144:49:3"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1265,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1202,
                        "src": "9556:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1266,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1208,
                          "src": "9568:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 1267,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "eta",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 840,
                        "src": "9568:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1264,
                      "name": "ProposalQueued",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 972,
                      "src": "9541:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 1268,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9541:40:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1269,
                  "nodeType": "EmitStatement",
                  "src": "9536:45:3"
                }
              ]
            },
            "documentation": {
              "id": 1200,
              "nodeType": "StructuredDocumentation",
              "src": "8646:266:3",
              "text": "@notice helper to set the effective time of a proposal that passed quorom\n @dev also extends the ETA in case of a game changer in vote decision\n @param proposalId the id of the proposal\n @param hasVoteChanged did the current vote changed the decision"
            },
            "id": 1271,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_updateETA",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1205,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1202,
                  "mutability": "mutable",
                  "name": "proposalId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1271,
                  "src": "8934:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1201,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8934:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1204,
                  "mutability": "mutable",
                  "name": "hasVoteChanged",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1271,
                  "src": "8954:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1203,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8954:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8933:41:3"
            },
            "returnParameters": {
              "id": 1206,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8984:0:3"
            },
            "scope": 2301,
            "src": "8914:671:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1349,
              "nodeType": "Block",
              "src": "9751:638:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_ProposalState_$902",
                          "typeString": "enum CompoundVotingMachine.ProposalState"
                        },
                        "id": 1283,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1279,
                              "name": "proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1274,
                              "src": "9773:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1278,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1689,
                            "src": "9767:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$902_$",
                              "typeString": "function (uint256) view returns (enum CompoundVotingMachine.ProposalState)"
                            }
                          },
                          "id": 1280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9767:17:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$902",
                            "typeString": "enum CompoundVotingMachine.ProposalState"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1281,
                            "name": "ProposalState",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 902,
                            "src": "9788:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                              "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                            }
                          },
                          "id": 1282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Succeeded",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9788:23:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$902",
                            "typeString": "enum CompoundVotingMachine.ProposalState"
                          }
                        },
                        "src": "9767:44:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a657865637574653a2070726f706f73616c2063616e206f6e6c7920626520657865637574656420696620697420697320737563636565646564",
                        "id": 1284,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9816:82:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_391cf009723a5124e555741d4d3ea8bb007dac7eba574ae6912190fe267acd5f",
                          "typeString": "literal_string \"CompoundVotingMachine::execute: proposal can only be executed if it is succeeded\""
                        },
                        "value": "CompoundVotingMachine::execute: proposal can only be executed if it is succeeded"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_391cf009723a5124e555741d4d3ea8bb007dac7eba574ae6912190fe267acd5f",
                          "typeString": "literal_string \"CompoundVotingMachine::execute: proposal can only be executed if it is succeeded\""
                        }
                      ],
                      "id": 1277,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "9755:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1285,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9755:147:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1286,
                  "nodeType": "ExpressionStatement",
                  "src": "9755:147:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1294,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1288,
                              "name": "proposals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 907,
                              "src": "9918:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                                "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                              }
                            },
                            "id": 1290,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1289,
                              "name": "proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1274,
                              "src": "9928:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9918:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$883_storage",
                              "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                            }
                          },
                          "id": 1291,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "eta",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 840,
                          "src": "9918:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1292,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "9947:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 1293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9947:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9918:44:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a657865637574653a2070726f706f73616c2063616e206f6e6c79206265206578656375746564206966206e6f2067616d65206368616e67657273",
                        "id": 1295,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9967:83:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a270aeaf5aefac129d241479d94f30f070bc20853c91f27ece0b5d82ab90156e",
                          "typeString": "literal_string \"CompoundVotingMachine::execute: proposal can only be executed if no game changers\""
                        },
                        "value": "CompoundVotingMachine::execute: proposal can only be executed if no game changers"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a270aeaf5aefac129d241479d94f30f070bc20853c91f27ece0b5d82ab90156e",
                          "typeString": "literal_string \"CompoundVotingMachine::execute: proposal can only be executed if no game changers\""
                        }
                      ],
                      "id": 1287,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "9906:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1296,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9906:148:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1297,
                  "nodeType": "ExpressionStatement",
                  "src": "9906:148:3"
                },
                {
                  "assignments": [
                    1299
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1299,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1349,
                      "src": "10058:25:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1298,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 883,
                        "src": "10058:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1303,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1300,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 907,
                      "src": "10086:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                        "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                      }
                    },
                    "id": 1302,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1301,
                      "name": "proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1274,
                      "src": "10096:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "10086:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$883_storage",
                      "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10058:49:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1308,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1304,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1299,
                        "src": "10111:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                        }
                      },
                      "id": 1306,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "executed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 874,
                      "src": "10111:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1307,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10131:4:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "10111:24:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1309,
                  "nodeType": "ExpressionStatement",
                  "src": "10111:24:3"
                },
                {
                  "body": {
                    "id": 1343,
                    "nodeType": "Block",
                    "src": "10193:156:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1323,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1299,
                                  "src": "10223:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                    "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                  }
                                },
                                "id": 1324,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "targets",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 844,
                                "src": "10223:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 1326,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1325,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1311,
                                "src": "10240:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10223:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1327,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1299,
                                  "src": "10248:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                    "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                  }
                                },
                                "id": 1328,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "values",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 848,
                                "src": "10248:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                  "typeString": "uint256[] storage ref"
                                }
                              },
                              "id": 1330,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1329,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1311,
                                "src": "10264:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10248:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1331,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1299,
                                  "src": "10272:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                    "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                  }
                                },
                                "id": 1332,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "signatures",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 852,
                                "src": "10272:19:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                  "typeString": "string storage ref[] storage ref"
                                }
                              },
                              "id": 1334,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1333,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1311,
                                "src": "10292:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10272:22:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage",
                                "typeString": "string storage ref"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1335,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1299,
                                  "src": "10300:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                    "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                  }
                                },
                                "id": 1336,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "calldatas",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 856,
                                "src": "10300:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
                                  "typeString": "bytes storage ref[] storage ref"
                                }
                              },
                              "id": 1338,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1337,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1311,
                                "src": "10319:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10300:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1339,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1299,
                                "src": "10327:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                  "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                }
                              },
                              "id": 1340,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "eta",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 840,
                              "src": "10327:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_string_storage",
                                "typeString": "string storage ref"
                              },
                              {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1322,
                            "name": "_executeTransaction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1460,
                            "src": "10198:19:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,uint256,string memory,bytes memory,uint256) returns (bytes memory)"
                            }
                          },
                          "id": 1341,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10198:146:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 1342,
                        "nodeType": "ExpressionStatement",
                        "src": "10198:146:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1318,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1314,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1311,
                      "src": "10159:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1315,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1299,
                          "src": "10163:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 1316,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "targets",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 844,
                        "src": "10163:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 1317,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "10163:23:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10159:27:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1344,
                  "initializationExpression": {
                    "assignments": [
                      1311
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1311,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1344,
                        "src": "10144:9:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1310,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10144:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1313,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1312,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10156:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "10144:13:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1320,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "10188:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1319,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1311,
                        "src": "10188:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1321,
                    "nodeType": "ExpressionStatement",
                    "src": "10188:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "10139:210:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1346,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1274,
                        "src": "10374:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1345,
                      "name": "ProposalExecuted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 977,
                      "src": "10357:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10357:28:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1348,
                  "nodeType": "EmitStatement",
                  "src": "10352:33:3"
                }
              ]
            },
            "documentation": {
              "id": 1272,
              "nodeType": "StructuredDocumentation",
              "src": "9588:109:3",
              "text": "@notice execute the proposal list of transactions\n @dev anyone can call this once its ETA has arrived"
            },
            "functionSelector": "fe0d94c1",
            "id": 1350,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "execute",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1275,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1274,
                  "mutability": "mutable",
                  "name": "proposalId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1350,
                  "src": "9716:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1273,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9716:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9715:20:3"
            },
            "returnParameters": {
              "id": 1276,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9751:0:3"
            },
            "scope": 2301,
            "src": "9699:690:3",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1459,
              "nodeType": "Block",
              "src": "10709:698:3",
              "statements": [
                {
                  "assignments": [
                    1367
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1367,
                      "mutability": "mutable",
                      "name": "callData",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1459,
                      "src": "10713:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1366,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "10713:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1368,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10713:21:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1375,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1371,
                            "name": "signature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1357,
                            "src": "10749:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 1370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10743:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": {
                            "id": 1369,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "10743:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 1372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10743:16:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 1373,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "10743:23:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1374,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10770:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "10743:28:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 1397,
                    "nodeType": "Block",
                    "src": "10804:93:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1381,
                            "name": "callData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1367,
                            "src": "10809:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1389,
                                            "name": "signature",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1357,
                                            "src": "10865:9:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          ],
                                          "id": 1388,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "10859:5:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": {
                                            "id": 1387,
                                            "name": "bytes",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "10859:5:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 1390,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10859:16:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 1386,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "10849:9:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 1391,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10849:27:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 1385,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10842:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes4_$",
                                    "typeString": "type(bytes4)"
                                  },
                                  "typeName": {
                                    "id": 1384,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10842:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1392,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10842:35:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1393,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1359,
                                "src": "10883:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1382,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "10820:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1383,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10820:16:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 1394,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10820:72:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "10809:83:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 1396,
                        "nodeType": "ExpressionStatement",
                        "src": "10809:83:3"
                      }
                    ]
                  },
                  "id": 1398,
                  "nodeType": "IfStatement",
                  "src": "10739:158:3",
                  "trueBody": {
                    "id": 1380,
                    "nodeType": "Block",
                    "src": "10773:25:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1376,
                            "name": "callData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1367,
                            "src": "10778:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1377,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1359,
                            "src": "10789:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "10778:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 1379,
                        "nodeType": "ExpressionStatement",
                        "src": "10778:15:3"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    1400
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1400,
                      "mutability": "mutable",
                      "name": "ok",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1459,
                      "src": "10901:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1399,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "10901:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1401,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10901:7:3"
                },
                {
                  "assignments": [
                    1403
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1403,
                      "mutability": "mutable",
                      "name": "result",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1459,
                      "src": "10912:19:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1402,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "10912:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1404,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10912:19:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1410,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1405,
                      "name": "target",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1353,
                      "src": "10940:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1408,
                          "name": "controller",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 822,
                          "src": "10958:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Controller_$51",
                            "typeString": "contract Controller"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_Controller_$51",
                            "typeString": "contract Controller"
                          }
                        ],
                        "id": 1407,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10950:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 1406,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10950:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 1409,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10950:19:3",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "10940:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 1450,
                    "nodeType": "Block",
                    "src": "11039:213:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1433,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1355,
                              "src": "11091:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1427,
                                          "name": "controller",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 822,
                                          "src": "11060:10:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_Controller_$51",
                                            "typeString": "contract Controller"
                                          }
                                        },
                                        "id": 1428,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "avatar",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 32,
                                        "src": "11060:17:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_Avatar_$12_$",
                                          "typeString": "function () view external returns (contract Avatar)"
                                        }
                                      },
                                      "id": 1429,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11060:19:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Avatar_$12",
                                        "typeString": "contract Avatar"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_Avatar_$12",
                                        "typeString": "contract Avatar"
                                      }
                                    ],
                                    "id": 1426,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "11052:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 1425,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "11052:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 1430,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11052:28:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1424,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11044:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_payable_$",
                                  "typeString": "type(address payable)"
                                },
                                "typeName": {
                                  "id": 1423,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11044:8:3",
                                  "stateMutability": "payable",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1431,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11044:37:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "id": 1432,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "11044:46:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 1434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11044:53:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1435,
                        "nodeType": "ExpressionStatement",
                        "src": "11044:53:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 1436,
                                "name": "ok",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1400,
                                "src": "11144:2:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1437,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1403,
                                "src": "11148:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "id": 1438,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "11143:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "tuple(bool,bytes memory)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1441,
                                "name": "target",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1353,
                                "src": "11186:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1442,
                                "name": "callData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1367,
                                "src": "11198:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1443,
                                    "name": "controller",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 822,
                                    "src": "11212:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Controller_$51",
                                      "typeString": "contract Controller"
                                    }
                                  },
                                  "id": 1444,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "avatar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 32,
                                  "src": "11212:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_Avatar_$12_$",
                                    "typeString": "function () view external returns (contract Avatar)"
                                  }
                                },
                                "id": 1445,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11212:19:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Avatar_$12",
                                  "typeString": "contract Avatar"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1446,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1355,
                                "src": "11237:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_contract$_Avatar_$12",
                                  "typeString": "contract Avatar"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1439,
                                "name": "controller",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 822,
                                "src": "11158:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Controller_$51",
                                  "typeString": "contract Controller"
                                }
                              },
                              "id": 1440,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "genericCall",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 27,
                              "src": "11158:22:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_contract$_Avatar_$12_$_t_uint256_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (address,bytes memory,contract Avatar,uint256) external returns (bool,bytes memory)"
                              }
                            },
                            "id": 1447,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11158:89:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "tuple(bool,bytes memory)"
                            }
                          },
                          "src": "11143:104:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1449,
                        "nodeType": "ExpressionStatement",
                        "src": "11143:104:3"
                      }
                    ]
                  },
                  "id": 1451,
                  "nodeType": "IfStatement",
                  "src": "10936:316:3",
                  "trueBody": {
                    "id": 1422,
                    "nodeType": "Block",
                    "src": "10971:62:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1420,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 1411,
                                "name": "ok",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1400,
                                "src": "10977:2:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1412,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1403,
                                "src": "10981:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "id": 1413,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "10976:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "tuple(bool,bytes memory)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1418,
                                "name": "callData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1367,
                                "src": "11019:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1414,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1353,
                                  "src": "10991:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 1415,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "call",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "10991:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                }
                              },
                              "id": 1417,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "names": [
                                "value"
                              ],
                              "nodeType": "FunctionCallOptions",
                              "options": [
                                {
                                  "argumentTypes": null,
                                  "id": 1416,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1355,
                                  "src": "11011:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "src": "10991:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 1419,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10991:37:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "tuple(bool,bytes memory)"
                            }
                          },
                          "src": "10976:52:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1421,
                        "nodeType": "ExpressionStatement",
                        "src": "10976:52:3"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1453,
                        "name": "ok",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1400,
                        "src": "11267:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e",
                        "id": 1454,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11274:76:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_60b10abb74f539bad76545e55d7bc2c7ba134e1722f86751781aeaf74418505a",
                          "typeString": "literal_string \"CompoundVotingMachine::executeTransaction: Transaction execution reverted.\""
                        },
                        "value": "CompoundVotingMachine::executeTransaction: Transaction execution reverted."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_60b10abb74f539bad76545e55d7bc2c7ba134e1722f86751781aeaf74418505a",
                          "typeString": "literal_string \"CompoundVotingMachine::executeTransaction: Transaction execution reverted.\""
                        }
                      ],
                      "id": 1452,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "11255:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1455,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11255:99:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1456,
                  "nodeType": "ExpressionStatement",
                  "src": "11255:99:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1457,
                    "name": "result",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1403,
                    "src": "11397:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 1365,
                  "id": 1458,
                  "nodeType": "Return",
                  "src": "11390:13:3"
                }
              ]
            },
            "documentation": {
              "id": 1351,
              "nodeType": "StructuredDocumentation",
              "src": "10392:153:3",
              "text": "@notice internal helper to execute a single transaction of a proposal\n @dev special execution is done if target is a method in the DAO controller"
            },
            "id": 1460,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_executeTransaction",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1362,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1353,
                  "mutability": "mutable",
                  "name": "target",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1460,
                  "src": "10579:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1352,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10579:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1355,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1460,
                  "src": "10597:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1354,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10597:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1357,
                  "mutability": "mutable",
                  "name": "signature",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1460,
                  "src": "10614:23:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1356,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "10614:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1359,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1460,
                  "src": "10641:17:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1358,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "10641:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1361,
                  "mutability": "mutable",
                  "name": "eta",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1460,
                  "src": "10662:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1360,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10662:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10575:101:3"
            },
            "returnParameters": {
              "id": 1365,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1364,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1460,
                  "src": "10695:12:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1363,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "10695:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10694:14:3"
            },
            "scope": 2301,
            "src": "10547:860:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1516,
              "nodeType": "Block",
              "src": "11761:475:3",
              "statements": [
                {
                  "assignments": [
                    1467
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1467,
                      "mutability": "mutable",
                      "name": "state",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1516,
                      "src": "11765:19:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$902",
                        "typeString": "enum CompoundVotingMachine.ProposalState"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1466,
                        "name": "ProposalState",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 902,
                        "src": "11765:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ProposalState_$902",
                          "typeString": "enum CompoundVotingMachine.ProposalState"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1471,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1469,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1463,
                        "src": "11793:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1468,
                      "name": "state",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1689,
                      "src": "11787:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$902_$",
                        "typeString": "function (uint256) view returns (enum CompoundVotingMachine.ProposalState)"
                      }
                    },
                    "id": 1470,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11787:17:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ProposalState_$902",
                      "typeString": "enum CompoundVotingMachine.ProposalState"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11765:39:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_ProposalState_$902",
                          "typeString": "enum CompoundVotingMachine.ProposalState"
                        },
                        "id": 1476,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1473,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1467,
                          "src": "11820:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$902",
                            "typeString": "enum CompoundVotingMachine.ProposalState"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1474,
                            "name": "ProposalState",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 902,
                            "src": "11829:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                              "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                            }
                          },
                          "id": 1475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Executed",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "11829:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$902",
                            "typeString": "enum CompoundVotingMachine.ProposalState"
                          }
                        },
                        "src": "11820:31:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a63616e63656c3a2063616e6e6f742063616e63656c2065786563757465642070726f706f73616c",
                        "id": 1477,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11856:64:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_dec57154dec3e174e12a15bf3b3200fa8cbbfa553c217429fed3a0911ace016b",
                          "typeString": "literal_string \"CompoundVotingMachine::cancel: cannot cancel executed proposal\""
                        },
                        "value": "CompoundVotingMachine::cancel: cannot cancel executed proposal"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_dec57154dec3e174e12a15bf3b3200fa8cbbfa553c217429fed3a0911ace016b",
                          "typeString": "literal_string \"CompoundVotingMachine::cancel: cannot cancel executed proposal\""
                        }
                      ],
                      "id": 1472,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "11808:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1478,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11808:116:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1479,
                  "nodeType": "ExpressionStatement",
                  "src": "11808:116:3"
                },
                {
                  "assignments": [
                    1481
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1481,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1516,
                      "src": "11929:25:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1480,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 883,
                        "src": "11929:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1485,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1482,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 907,
                      "src": "11957:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                        "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                      }
                    },
                    "id": 1484,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1483,
                      "name": "proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1463,
                      "src": "11967:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "11957:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$883_storage",
                      "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11929:49:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1502,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1489,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1481,
                                "src": "12009:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                  "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                }
                              },
                              "id": 1490,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "proposer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 837,
                              "src": "12009:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 1491,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12028:4:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1495,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12051:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1492,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -4,
                                    "src": "12034:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 1493,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "number",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12034:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1494,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7990,
                                "src": "12034:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12034:19:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1487,
                              "name": "rep",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 825,
                              "src": "11994:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ReputationInterface_$105",
                                "typeString": "contract ReputationInterface"
                              }
                            },
                            "id": 1488,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getVotesAt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 85,
                            "src": "11994:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_bool_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,bool,uint256) view external returns (uint256)"
                            }
                          },
                          "id": 1497,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11994:60:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1499,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1481,
                                "src": "12079:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                  "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                }
                              },
                              "id": 1500,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "startBlock",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 859,
                              "src": "12079:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1498,
                            "name": "proposalThreshold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 765,
                            "src": "12061:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 1501,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12061:38:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11994:105:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a63616e63656c3a2070726f706f7365722061626f7665207468726573686f6c64",
                        "id": 1503,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12104:57:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_114f1b1da925eec5869e86d294d73d06733c7cc944f3f7b3d0a90fd06b9b0d14",
                          "typeString": "literal_string \"CompoundVotingMachine::cancel: proposer above threshold\""
                        },
                        "value": "CompoundVotingMachine::cancel: proposer above threshold"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_114f1b1da925eec5869e86d294d73d06733c7cc944f3f7b3d0a90fd06b9b0d14",
                          "typeString": "literal_string \"CompoundVotingMachine::cancel: proposer above threshold\""
                        }
                      ],
                      "id": 1486,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "11982:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11982:183:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1505,
                  "nodeType": "ExpressionStatement",
                  "src": "11982:183:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1510,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1506,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1481,
                        "src": "12170:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                        }
                      },
                      "id": 1508,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "canceled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 871,
                      "src": "12170:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1509,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12190:4:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "12170:24:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1511,
                  "nodeType": "ExpressionStatement",
                  "src": "12170:24:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1513,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1463,
                        "src": "12221:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1512,
                      "name": "ProposalCanceled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 965,
                      "src": "12204:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1514,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12204:28:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1515,
                  "nodeType": "EmitStatement",
                  "src": "12199:33:3"
                }
              ]
            },
            "documentation": {
              "id": 1461,
              "nodeType": "StructuredDocumentation",
              "src": "11410:306:3",
              "text": "@notice cancel a proposal in case proposer no longer holds the votes that were required to propose\n @dev could be cheating trying to bypass the single proposal per address by delegating to another address\n or when delegators do not concur with the proposal done in their name, they can withdraw"
            },
            "functionSelector": "40e58ee5",
            "id": 1517,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "cancel",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1464,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1463,
                  "mutability": "mutable",
                  "name": "proposalId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1517,
                  "src": "11734:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1462,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11734:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11733:20:3"
            },
            "returnParameters": {
              "id": 1465,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11761:0:3"
            },
            "scope": 2301,
            "src": "11718:518:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1551,
              "nodeType": "Block",
              "src": "12482:109:3",
              "statements": [
                {
                  "assignments": [
                    1536
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1536,
                      "mutability": "mutable",
                      "name": "p",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1551,
                      "src": "12486:18:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1535,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 883,
                        "src": "12486:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1540,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1537,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 907,
                      "src": "12507:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                        "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                      }
                    },
                    "id": 1539,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1538,
                      "name": "proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1520,
                      "src": "12517:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "12507:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$883_storage",
                      "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12486:42:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1541,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1536,
                          "src": "12540:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 1542,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "targets",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 844,
                        "src": "12540:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1543,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1536,
                          "src": "12551:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 1544,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "values",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 848,
                        "src": "12551:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1545,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1536,
                          "src": "12561:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 1546,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "signatures",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 852,
                        "src": "12561:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                          "typeString": "string storage ref[] storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1547,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1536,
                          "src": "12575:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 1548,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "calldatas",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 856,
                        "src": "12575:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
                          "typeString": "bytes storage ref[] storage ref"
                        }
                      }
                    ],
                    "id": 1549,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "12539:48:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_array$_t_address_$dyn_storage_$_t_array$_t_uint256_$dyn_storage_$_t_array$_t_string_storage_$dyn_storage_$_t_array$_t_bytes_storage_$dyn_storage_$",
                      "typeString": "tuple(address[] storage ref,uint256[] storage ref,string storage ref[] storage ref,bytes storage ref[] storage ref)"
                    }
                  },
                  "functionReturnParameters": 1534,
                  "id": 1550,
                  "nodeType": "Return",
                  "src": "12532:55:3"
                }
              ]
            },
            "documentation": {
              "id": 1518,
              "nodeType": "StructuredDocumentation",
              "src": "12239:52:3",
              "text": "@notice get the actions to be done in a proposal"
            },
            "functionSelector": "328dd982",
            "id": 1552,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getActions",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1521,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1520,
                  "mutability": "mutable",
                  "name": "proposalId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1552,
                  "src": "12313:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1519,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12313:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12312:20:3"
            },
            "returnParameters": {
              "id": 1534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1524,
                  "mutability": "mutable",
                  "name": "targets",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1552,
                  "src": "12364:24:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1522,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "12364:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 1523,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "12364:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1527,
                  "mutability": "mutable",
                  "name": "values",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1552,
                  "src": "12393:23:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1525,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "12393:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1526,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "12393:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1530,
                  "mutability": "mutable",
                  "name": "signatures",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1552,
                  "src": "12421:26:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1528,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "12421:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 1529,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "12421:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1533,
                  "mutability": "mutable",
                  "name": "calldatas",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1552,
                  "src": "12452:24:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                    "typeString": "bytes[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1531,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "12452:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 1532,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "12452:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                      "typeString": "bytes[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12359:121:3"
            },
            "scope": 2301,
            "src": "12293:298:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1569,
              "nodeType": "Block",
              "src": "12754:52:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1562,
                          "name": "proposals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 907,
                          "src": "12765:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                            "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                          }
                        },
                        "id": 1564,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1563,
                          "name": "proposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1555,
                          "src": "12775:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "12765:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage",
                          "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                        }
                      },
                      "id": 1565,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "receipts",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 879,
                      "src": "12765:30:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Receipt_$893_storage_$",
                        "typeString": "mapping(address => struct CompoundVotingMachine.Receipt storage ref)"
                      }
                    },
                    "id": 1567,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1566,
                      "name": "voter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1557,
                      "src": "12796:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "12765:37:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Receipt_$893_storage",
                      "typeString": "struct CompoundVotingMachine.Receipt storage ref"
                    }
                  },
                  "functionReturnParameters": 1561,
                  "id": 1568,
                  "nodeType": "Return",
                  "src": "12758:44:3"
                }
              ]
            },
            "documentation": {
              "id": 1553,
              "nodeType": "StructuredDocumentation",
              "src": "12594:59:3",
              "text": "@notice get the receipt of a single voter in a proposal"
            },
            "functionSelector": "e23a9a52",
            "id": 1570,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReceipt",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1558,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1555,
                  "mutability": "mutable",
                  "name": "proposalId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1570,
                  "src": "12675:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1554,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12675:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1557,
                  "mutability": "mutable",
                  "name": "voter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1570,
                  "src": "12695:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1556,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12695:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12674:35:3"
            },
            "returnParameters": {
              "id": 1561,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1560,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1570,
                  "src": "12737:14:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Receipt_$893_memory_ptr",
                    "typeString": "struct CompoundVotingMachine.Receipt"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1559,
                    "name": "Receipt",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 893,
                    "src": "12737:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                      "typeString": "struct CompoundVotingMachine.Receipt"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12736:16:3"
            },
            "scope": 2301,
            "src": "12655:151:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1688,
              "nodeType": "Block",
              "src": "12930:1183:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1585,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1579,
                            "name": "proposalCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 831,
                            "src": "12946:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1580,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1573,
                            "src": "12963:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12946:27:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1584,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1582,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1573,
                            "src": "12977:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1583,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12990:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "12977:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "12946:45:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a73746174653a20696e76616c69642070726f706f73616c206964",
                        "id": 1586,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12996:51:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b6b9cb933e57ddd68e06e915a91a6f7e3ab42567d3591b7bffaf2dcf791ea5f4",
                          "typeString": "literal_string \"CompoundVotingMachine::state: invalid proposal id\""
                        },
                        "value": "CompoundVotingMachine::state: invalid proposal id"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b6b9cb933e57ddd68e06e915a91a6f7e3ab42567d3591b7bffaf2dcf791ea5f4",
                          "typeString": "literal_string \"CompoundVotingMachine::state: invalid proposal id\""
                        }
                      ],
                      "id": 1578,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "12934:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1587,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12934:117:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1588,
                  "nodeType": "ExpressionStatement",
                  "src": "12934:117:3"
                },
                {
                  "assignments": [
                    1590
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1590,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1688,
                      "src": "13056:25:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1589,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 883,
                        "src": "13056:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1594,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1591,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 907,
                      "src": "13084:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                        "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                      }
                    },
                    "id": 1593,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1592,
                      "name": "proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1573,
                      "src": "13094:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13084:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$883_storage",
                      "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13056:49:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1595,
                      "name": "proposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1590,
                      "src": "13114:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                      }
                    },
                    "id": 1596,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "canceled",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 871,
                    "src": "13114:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1605,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1601,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -4,
                          "src": "13182:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 1602,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "number",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "13182:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1603,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1590,
                          "src": "13198:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 1604,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "startBlock",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 859,
                        "src": "13198:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "13182:35:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1610,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1590,
                          "src": "13267:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 1611,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "executed",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 874,
                        "src": "13267:17:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1616,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1590,
                                "src": "13339:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                  "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                }
                              },
                              "id": 1617,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "eta",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 840,
                              "src": "13339:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1618,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13354:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "13339:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1624,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1620,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "13359:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 1621,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13359:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1622,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1590,
                                "src": "13377:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                  "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                }
                              },
                              "id": 1623,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "eta",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 840,
                              "src": "13377:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "13359:30:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "13339:50:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1639,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1633,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1630,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1590,
                                  "src": "13531:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                    "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                  }
                                },
                                "id": 1631,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "eta",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 840,
                                "src": "13531:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1632,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13547:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "13531:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1638,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1634,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "13552:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 1635,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "13552:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1636,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1590,
                                  "src": "13568:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                    "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                  }
                                },
                                "id": 1637,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "endBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 862,
                                "src": "13568:17:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13552:33:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "13531:54:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1654,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1648,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1644,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1590,
                                    "src": "13747:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                      "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                    }
                                  },
                                  "id": 1645,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "forVotes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 865,
                                  "src": "13747:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1646,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1590,
                                    "src": "13768:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                      "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                    }
                                  },
                                  "id": 1647,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "againstVotes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 868,
                                  "src": "13768:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13747:42:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1653,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1649,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1590,
                                    "src": "13796:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                      "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                    }
                                  },
                                  "id": 1650,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "forVotes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 865,
                                  "src": "13796:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1651,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1590,
                                    "src": "13816:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                      "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                    }
                                  },
                                  "id": 1652,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "quoromRequired",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 882,
                                  "src": "13816:23:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13796:43:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "13747:92:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 1672,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1662,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1659,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1590,
                                      "src": "13897:8:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                        "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                      }
                                    },
                                    "id": 1660,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "eta",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 840,
                                    "src": "13897:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1661,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13912:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "13897:16:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1671,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1663,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "13920:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 1664,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "13920:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 1668,
                                          "name": "gracePeriod",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 819,
                                          "src": "13956:11:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                            "typeString": "function () pure returns (uint256)"
                                          }
                                        },
                                        "id": 1669,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13956:13:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1665,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1590,
                                          "src": "13939:8:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                          }
                                        },
                                        "id": 1666,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "eta",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 840,
                                        "src": "13939:12:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 1667,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "add",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7973,
                                      "src": "13939:16:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 1670,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13939:31:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "13920:50:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "13897:73:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 1680,
                                "nodeType": "Block",
                                "src": "14070:40:3",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1677,
                                        "name": "ProposalState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 902,
                                        "src": "14082:13:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                          "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                                        }
                                      },
                                      "id": 1678,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "Succeeded",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "14082:23:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$902",
                                        "typeString": "enum CompoundVotingMachine.ProposalState"
                                      }
                                    },
                                    "functionReturnParameters": 1577,
                                    "id": 1679,
                                    "nodeType": "Return",
                                    "src": "14075:30:3"
                                  }
                                ]
                              },
                              "id": 1681,
                              "nodeType": "IfStatement",
                              "src": "13889:221:3",
                              "trueBody": {
                                "id": 1676,
                                "nodeType": "Block",
                                "src": "13975:89:3",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1673,
                                        "name": "ProposalState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 902,
                                        "src": "14038:13:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                          "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                                        }
                                      },
                                      "id": 1674,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "Expired",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "14038:21:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$902",
                                        "typeString": "enum CompoundVotingMachine.ProposalState"
                                      }
                                    },
                                    "functionReturnParameters": 1577,
                                    "id": 1675,
                                    "nodeType": "Return",
                                    "src": "14031:28:3"
                                  }
                                ]
                              }
                            },
                            "id": 1682,
                            "nodeType": "IfStatement",
                            "src": "13739:371:3",
                            "trueBody": {
                              "id": 1658,
                              "nodeType": "Block",
                              "src": "13844:39:3",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1655,
                                      "name": "ProposalState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 902,
                                      "src": "13856:13:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                        "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                                      }
                                    },
                                    "id": 1656,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "Defeated",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "13856:22:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$902",
                                      "typeString": "enum CompoundVotingMachine.ProposalState"
                                    }
                                  },
                                  "functionReturnParameters": 1577,
                                  "id": 1657,
                                  "nodeType": "Return",
                                  "src": "13849:29:3"
                                }
                              ]
                            }
                          },
                          "id": 1683,
                          "nodeType": "IfStatement",
                          "src": "13496:614:3",
                          "trueBody": {
                            "id": 1643,
                            "nodeType": "Block",
                            "src": "13590:143:3",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1640,
                                    "name": "ProposalState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 902,
                                    "src": "13708:13:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                      "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                                    }
                                  },
                                  "id": 1641,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "Active",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "13708:20:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$902",
                                    "typeString": "enum CompoundVotingMachine.ProposalState"
                                  }
                                },
                                "functionReturnParameters": 1577,
                                "id": 1642,
                                "nodeType": "Return",
                                "src": "13701:27:3"
                              }
                            ]
                          }
                        },
                        "id": 1684,
                        "nodeType": "IfStatement",
                        "src": "13331:779:3",
                        "trueBody": {
                          "id": 1629,
                          "nodeType": "Block",
                          "src": "13445:45:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1626,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 902,
                                  "src": "13457:13:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                    "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                                  }
                                },
                                "id": 1627,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "ActiveTimelock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "13457:28:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$902",
                                  "typeString": "enum CompoundVotingMachine.ProposalState"
                                }
                              },
                              "functionReturnParameters": 1577,
                              "id": 1628,
                              "nodeType": "Return",
                              "src": "13450:35:3"
                            }
                          ]
                        }
                      },
                      "id": 1685,
                      "nodeType": "IfStatement",
                      "src": "13263:847:3",
                      "trueBody": {
                        "id": 1615,
                        "nodeType": "Block",
                        "src": "13286:39:3",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1612,
                                "name": "ProposalState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 902,
                                "src": "13298:13:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                  "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                                }
                              },
                              "id": 1613,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Executed",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13298:22:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$902",
                                "typeString": "enum CompoundVotingMachine.ProposalState"
                              }
                            },
                            "functionReturnParameters": 1577,
                            "id": 1614,
                            "nodeType": "Return",
                            "src": "13291:29:3"
                          }
                        ]
                      }
                    },
                    "id": 1686,
                    "nodeType": "IfStatement",
                    "src": "13178:932:3",
                    "trueBody": {
                      "id": 1609,
                      "nodeType": "Block",
                      "src": "13219:38:3",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1606,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 902,
                              "src": "13231:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                              }
                            },
                            "id": 1607,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Pending",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "13231:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$902",
                              "typeString": "enum CompoundVotingMachine.ProposalState"
                            }
                          },
                          "functionReturnParameters": 1577,
                          "id": 1608,
                          "nodeType": "Return",
                          "src": "13224:28:3"
                        }
                      ]
                    }
                  },
                  "id": 1687,
                  "nodeType": "IfStatement",
                  "src": "13110:1000:3",
                  "trueBody": {
                    "id": 1600,
                    "nodeType": "Block",
                    "src": "13133:39:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1597,
                            "name": "ProposalState",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 902,
                            "src": "13145:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                              "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                            }
                          },
                          "id": 1598,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Canceled",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "13145:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$902",
                            "typeString": "enum CompoundVotingMachine.ProposalState"
                          }
                        },
                        "functionReturnParameters": 1577,
                        "id": 1599,
                        "nodeType": "Return",
                        "src": "13138:29:3"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 1571,
              "nodeType": "StructuredDocumentation",
              "src": "12809:48:3",
              "text": "@notice get the current status of a proposal"
            },
            "functionSelector": "3e4f49e6",
            "id": 1689,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "state",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1574,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1573,
                  "mutability": "mutable",
                  "name": "proposalId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1689,
                  "src": "12874:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1572,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12874:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12873:20:3"
            },
            "returnParameters": {
              "id": 1577,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1576,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1689,
                  "src": "12915:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ProposalState_$902",
                    "typeString": "enum CompoundVotingMachine.ProposalState"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1575,
                    "name": "ProposalState",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 902,
                    "src": "12915:13:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ProposalState_$902",
                      "typeString": "enum CompoundVotingMachine.ProposalState"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12914:15:3"
            },
            "scope": 2301,
            "src": "12859:1254:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1722,
              "nodeType": "Block",
              "src": "14299:247:3",
              "statements": [
                {
                  "assignments": [
                    1698
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1698,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1722,
                      "src": "14360:25:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1697,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 883,
                        "src": "14360:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1702,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1699,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 907,
                      "src": "14388:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                        "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                      }
                    },
                    "id": 1701,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1700,
                      "name": "proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1692,
                      "src": "14398:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "14388:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$883_storage",
                      "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14360:49:3"
                },
                {
                  "assignments": [
                    1704
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1704,
                      "mutability": "mutable",
                      "name": "votes",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1722,
                      "src": "14413:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1703,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14413:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1713,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1707,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "14444:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1708,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "14444:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 1709,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14456:4:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1710,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1698,
                          "src": "14462:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 1711,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "startBlock",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 859,
                        "src": "14462:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1705,
                        "name": "rep",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 825,
                        "src": "14429:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ReputationInterface_$105",
                          "typeString": "contract ReputationInterface"
                        }
                      },
                      "id": 1706,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getVotesAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 85,
                      "src": "14429:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_bool_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (address,bool,uint256) view external returns (uint256)"
                      }
                    },
                    "id": 1712,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14429:53:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14413:69:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1715,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "14503:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1716,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "14503:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1717,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1692,
                        "src": "14515:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1718,
                        "name": "support",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1694,
                        "src": "14527:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1719,
                        "name": "votes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1704,
                        "src": "14536:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1714,
                      "name": "_castVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2288,
                      "src": "14493:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,bool,uint256)"
                      }
                    },
                    "id": 1720,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14493:49:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "functionReturnParameters": 1696,
                  "id": 1721,
                  "nodeType": "Return",
                  "src": "14486:56:3"
                }
              ]
            },
            "documentation": {
              "id": 1690,
              "nodeType": "StructuredDocumentation",
              "src": "14116:122:3",
              "text": "@notice cast your vote on a proposal\n @param proposalId the proposal to vote on\n @param support for or against"
            },
            "functionSelector": "15373e3d",
            "id": 1723,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "castVote",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1695,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1692,
                  "mutability": "mutable",
                  "name": "proposalId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1723,
                  "src": "14258:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1691,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14258:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1694,
                  "mutability": "mutable",
                  "name": "support",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1723,
                  "src": "14278:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1693,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14278:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14257:34:3"
            },
            "returnParameters": {
              "id": 1696,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14299:0:3"
            },
            "scope": 2301,
            "src": "14240:306:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "canonicalName": "CompoundVotingMachine.VoteSig",
            "id": 1732,
            "members": [
              {
                "constant": false,
                "id": 1725,
                "mutability": "mutable",
                "name": "support",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 1732,
                "src": "14568:12:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 1724,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "14568:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1727,
                "mutability": "mutable",
                "name": "v",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 1732,
                "src": "14584:7:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 1726,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "14584:5:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1729,
                "mutability": "mutable",
                "name": "r",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 1732,
                "src": "14595:9:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 1728,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "14595:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1731,
                "mutability": "mutable",
                "name": "s",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 1732,
                "src": "14608:9:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 1730,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "14608:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "VoteSig",
            "nodeType": "StructDefinition",
            "scope": 2301,
            "src": "14549:72:3",
            "visibility": "public"
          },
          {
            "body": {
              "id": 2051,
              "nodeType": "Block",
              "src": "14741:2321:3",
              "statements": [
                {
                  "assignments": [
                    1744
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1744,
                      "mutability": "mutable",
                      "name": "domainSeparator",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2051,
                      "src": "14745:23:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1743,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "14745:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1763,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1748,
                            "name": "DOMAIN_TYPEHASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 918,
                            "src": "14806:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1752,
                                    "name": "name",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 725,
                                    "src": "14844:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 1751,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14838:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 1750,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14838:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1753,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14838:11:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 1749,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "14828:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 1754,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14828:22:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 1755,
                              "name": "getChainId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2300,
                              "src": "14857:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                "typeString": "function () pure returns (uint256)"
                              }
                            },
                            "id": 1756,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14857:12:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1759,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "14884:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_CompoundVotingMachine_$2301",
                                  "typeString": "contract CompoundVotingMachine"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_CompoundVotingMachine_$2301",
                                  "typeString": "contract CompoundVotingMachine"
                                }
                              ],
                              "id": 1758,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14876:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1757,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "14876:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1760,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14876:13:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1746,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "14789:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "14789:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1761,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14789:106:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1745,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "14774:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1762,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14774:126:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14745:155:3"
                },
                {
                  "assignments": [
                    1765
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1765,
                      "mutability": "mutable",
                      "name": "structHashFor",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2051,
                      "src": "14904:21:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1764,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "14904:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1774,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1769,
                            "name": "BALLOT_TYPEHASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 924,
                            "src": "14952:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1770,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1734,
                            "src": "14969:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 1771,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14981:4:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1767,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "14941:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1768,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "14941:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1772,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14941:45:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1766,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "14931:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1773,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14931:56:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14904:83:3"
                },
                {
                  "assignments": [
                    1776
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1776,
                      "mutability": "mutable",
                      "name": "structHashAgainst",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2051,
                      "src": "14991:25:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1775,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "14991:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1785,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1780,
                            "name": "BALLOT_TYPEHASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 924,
                            "src": "15043:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1781,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1734,
                            "src": "15060:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 1782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15072:5:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1778,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "15032:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1779,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "15032:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1783,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15032:46:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1777,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "15022:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1784,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15022:57:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14991:88:3"
                },
                {
                  "assignments": [
                    1787
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1787,
                      "mutability": "mutable",
                      "name": "digestFor",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2051,
                      "src": "15083:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1786,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "15083:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1796,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "1901",
                            "id": 1791,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15138:10:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                              "typeString": "literal_string \"\u0019\u0001\""
                            },
                            "value": "\u0019\u0001"
                          },
                          {
                            "argumentTypes": null,
                            "id": 1792,
                            "name": "domainSeparator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1744,
                            "src": "15150:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1793,
                            "name": "structHashFor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1765,
                            "src": "15167:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                              "typeString": "literal_string \"\u0019\u0001\""
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1789,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "15121:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1790,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "15121:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1794,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15121:60:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1788,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "15106:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1795,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15106:80:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15083:103:3"
                },
                {
                  "assignments": [
                    1798
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1798,
                      "mutability": "mutable",
                      "name": "digestAgainst",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2051,
                      "src": "15190:21:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1797,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "15190:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1807,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "1901",
                            "id": 1802,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15249:10:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                              "typeString": "literal_string \"\u0019\u0001\""
                            },
                            "value": "\u0019\u0001"
                          },
                          {
                            "argumentTypes": null,
                            "id": 1803,
                            "name": "domainSeparator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1744,
                            "src": "15261:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1804,
                            "name": "structHashAgainst",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1776,
                            "src": "15278:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                              "typeString": "literal_string \"\u0019\u0001\""
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1800,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "15232:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1801,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "15232:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1805,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15232:64:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1799,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "15217:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1806,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15217:84:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15190:111:3"
                },
                {
                  "assignments": [
                    1809
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1809,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2051,
                      "src": "15306:25:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1808,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 883,
                        "src": "15306:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1813,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1810,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 907,
                      "src": "15334:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                        "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                      }
                    },
                    "id": 1812,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1811,
                      "name": "proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1734,
                      "src": "15344:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "15334:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$883_storage",
                      "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15306:49:3"
                },
                {
                  "assignments": [
                    1815
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1815,
                      "mutability": "mutable",
                      "name": "total",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2051,
                      "src": "15360:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1814,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15360:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1816,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15360:13:3"
                },
                {
                  "body": {
                    "id": 1899,
                    "nodeType": "Block",
                    "src": "15422:547:3",
                    "statements": [
                      {
                        "assignments": [
                          1829
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1829,
                            "mutability": "mutable",
                            "name": "digest",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1899,
                            "src": "15427:14:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 1828,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "15427:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1831,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 1830,
                          "name": "digestFor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1787,
                          "src": "15444:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15427:26:3"
                      },
                      {
                        "assignments": [
                          1833
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1833,
                            "mutability": "mutable",
                            "name": "signatory",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1899,
                            "src": "15459:17:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1832,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "15459:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1849,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1835,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1829,
                              "src": "15493:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1836,
                                  "name": "votesFor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1737,
                                  "src": "15501:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                  }
                                },
                                "id": 1838,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1837,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1818,
                                  "src": "15510:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15501:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VoteSig_$1732_memory_ptr",
                                  "typeString": "struct CompoundVotingMachine.VoteSig memory"
                                }
                              },
                              "id": 1839,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "v",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1727,
                              "src": "15501:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1840,
                                  "name": "votesFor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1737,
                                  "src": "15516:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                  }
                                },
                                "id": 1842,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1841,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1818,
                                  "src": "15525:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15516:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VoteSig_$1732_memory_ptr",
                                  "typeString": "struct CompoundVotingMachine.VoteSig memory"
                                }
                              },
                              "id": 1843,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "r",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1729,
                              "src": "15516:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1844,
                                  "name": "votesFor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1737,
                                  "src": "15531:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                  }
                                },
                                "id": 1846,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1845,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1818,
                                  "src": "15540:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15531:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VoteSig_$1732_memory_ptr",
                                  "typeString": "struct CompoundVotingMachine.VoteSig memory"
                                }
                              },
                              "id": 1847,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "s",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1731,
                              "src": "15531:13:3",
                              "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": 1834,
                            "name": "ecrecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -6,
                            "src": "15483:9:3",
                            "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": 1848,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15483:62:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15459:86:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1856,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1851,
                                "name": "signatory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1833,
                                "src": "15563:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1854,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15584:1:3",
                                    "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": 1853,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "15576:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1852,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15576:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1855,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15576:10:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "15563:23:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a63617374566f746542795369673a20696e76616c6964207369676e6174757265",
                              "id": 1857,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15592:57:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_50d9672d7084bae246b52b4eba77e59964de45253c5ce1a356c04edf7e38d90a",
                                "typeString": "literal_string \"CompoundVotingMachine::castVoteBySig: invalid signature\""
                              },
                              "value": "CompoundVotingMachine::castVoteBySig: invalid signature"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_50d9672d7084bae246b52b4eba77e59964de45253c5ce1a356c04edf7e38d90a",
                                "typeString": "literal_string \"CompoundVotingMachine::castVoteBySig: invalid signature\""
                              }
                            ],
                            "id": 1850,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15550:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1858,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15550:104:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1859,
                        "nodeType": "ExpressionStatement",
                        "src": "15550:104:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1866,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1861,
                                    "name": "votesFor",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1737,
                                    "src": "15672:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                    }
                                  },
                                  "id": 1863,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1862,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1818,
                                    "src": "15681:1:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "15672:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_VoteSig_$1732_memory_ptr",
                                    "typeString": "struct CompoundVotingMachine.VoteSig memory"
                                  }
                                },
                                "id": 1864,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "support",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1725,
                                "src": "15672:19:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 1865,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15695:4:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "src": "15672:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a63617374566f746542795369673a20696e76616c696420737570706f72742076616c756520696e20666f72206261746368",
                              "id": 1867,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15705:74:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1163311ab93482b1a371307126938883d2d515d50627c76970d202a28fe98d8d",
                                "typeString": "literal_string \"CompoundVotingMachine::castVoteBySig: invalid support value in for batch\""
                              },
                              "value": "CompoundVotingMachine::castVoteBySig: invalid support value in for batch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1163311ab93482b1a371307126938883d2d515d50627c76970d202a28fe98d8d",
                                "typeString": "literal_string \"CompoundVotingMachine::castVoteBySig: invalid support value in for batch\""
                              }
                            ],
                            "id": 1860,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15659:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1868,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15659:125:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1869,
                        "nodeType": "ExpressionStatement",
                        "src": "15659:125:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1878,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1870,
                            "name": "total",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1815,
                            "src": "15789:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1873,
                                "name": "signatory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1833,
                                "src": "15813:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 1874,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15824:4:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1875,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1809,
                                  "src": "15830:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                    "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                  }
                                },
                                "id": 1876,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "startBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 859,
                                "src": "15830:19:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1871,
                                "name": "rep",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 825,
                                "src": "15798:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ReputationInterface_$105",
                                  "typeString": "contract ReputationInterface"
                                }
                              },
                              "id": 1872,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getVotesAt",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 85,
                              "src": "15798:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_bool_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,bool,uint256) view external returns (uint256)"
                              }
                            },
                            "id": 1877,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15798:52:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15789:61:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1879,
                        "nodeType": "ExpressionStatement",
                        "src": "15789:61:3"
                      },
                      {
                        "assignments": [
                          1881
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1881,
                            "mutability": "mutable",
                            "name": "receipt",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1899,
                            "src": "15855:23:3",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                              "typeString": "struct CompoundVotingMachine.Receipt"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1880,
                              "name": "Receipt",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 893,
                              "src": "15855:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                                "typeString": "struct CompoundVotingMachine.Receipt"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1886,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1882,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1809,
                              "src": "15881:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                              }
                            },
                            "id": 1883,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "receipts",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 879,
                            "src": "15881:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Receipt_$893_storage_$",
                              "typeString": "mapping(address => struct CompoundVotingMachine.Receipt storage ref)"
                            }
                          },
                          "id": 1885,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1884,
                            "name": "signatory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1833,
                            "src": "15899:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15881:28:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Receipt_$893_storage",
                            "typeString": "struct CompoundVotingMachine.Receipt storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15855:54:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1887,
                              "name": "receipt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1881,
                              "src": "15914:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                                "typeString": "struct CompoundVotingMachine.Receipt storage pointer"
                              }
                            },
                            "id": 1889,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "hasVoted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 886,
                            "src": "15914:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 1890,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15933:4:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "15914:23:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1892,
                        "nodeType": "ExpressionStatement",
                        "src": "15914:23:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1897,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1893,
                              "name": "receipt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1881,
                              "src": "15942:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                                "typeString": "struct CompoundVotingMachine.Receipt storage pointer"
                              }
                            },
                            "id": 1895,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "support",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 889,
                            "src": "15942:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 1896,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15960:4:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "15942:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1898,
                        "nodeType": "ExpressionStatement",
                        "src": "15942:22:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1824,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1821,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1818,
                      "src": "15396:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1822,
                        "name": "votesFor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1737,
                        "src": "15400:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                        }
                      },
                      "id": 1823,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "15400:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15396:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1900,
                  "initializationExpression": {
                    "assignments": [
                      1818
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1818,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1900,
                        "src": "15382:8:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 1817,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "15382:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1820,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1819,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15393:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "15382:12:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1826,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "15417:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1825,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1818,
                        "src": "15417:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "id": 1827,
                    "nodeType": "ExpressionStatement",
                    "src": "15417:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "15377:592:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1904,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1901,
                        "name": "votesFor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1737,
                        "src": "15976:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                        }
                      },
                      "id": 1902,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "15976:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1903,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15994:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "15976:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1931,
                  "nodeType": "IfStatement",
                  "src": "15972:179:3",
                  "trueBody": {
                    "id": 1930,
                    "nodeType": "Block",
                    "src": "15997:154:3",
                    "statements": [
                      {
                        "assignments": [
                          1906
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1906,
                            "mutability": "mutable",
                            "name": "voteAddressHash",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1930,
                            "src": "16002:23:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1905,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16002:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1922,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 1916,
                                              "name": "votesFor",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1737,
                                              "src": "16077:8:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1914,
                                              "name": "abi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -1,
                                              "src": "16066:3:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_abi",
                                                "typeString": "abi"
                                              }
                                            },
                                            "id": 1915,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "encode",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "16066:10:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                              "typeString": "function () pure returns (bytes memory)"
                                            }
                                          },
                                          "id": 1917,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "16066:20:3",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 1913,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -8,
                                        "src": "16056:9:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 1918,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16056:31:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 1912,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "16048:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 1911,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "16048:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 1919,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16048:40:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1910,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "16040:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint160_$",
                                  "typeString": "type(uint160)"
                                },
                                "typeName": {
                                  "id": 1909,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16040:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1920,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16040:49:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 1908,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "16032:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 1907,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16032:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 1921,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16032:58:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16002:88:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1924,
                              "name": "voteAddressHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1906,
                              "src": "16105:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1925,
                              "name": "proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1734,
                              "src": "16122:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 1926,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16134:4:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "argumentTypes": null,
                              "id": 1927,
                              "name": "total",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1815,
                              "src": "16140:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1923,
                            "name": "_castVote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2288,
                            "src": "16095:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,bool,uint256)"
                            }
                          },
                          "id": 1928,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16095:51:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1929,
                        "nodeType": "ExpressionStatement",
                        "src": "16095:51:3"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1934,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1932,
                      "name": "total",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1815,
                      "src": "16155:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1933,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16163:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "16155:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1935,
                  "nodeType": "ExpressionStatement",
                  "src": "16155:9:3"
                },
                {
                  "body": {
                    "id": 2018,
                    "nodeType": "Block",
                    "src": "16217:598:3",
                    "statements": [
                      {
                        "assignments": [
                          1948
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1948,
                            "mutability": "mutable",
                            "name": "digest",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2018,
                            "src": "16222:14:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 1947,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "16222:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1950,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 1949,
                          "name": "digestAgainst",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1798,
                          "src": "16239:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16222:30:3"
                      },
                      {
                        "assignments": [
                          1952
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1952,
                            "mutability": "mutable",
                            "name": "signatory",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2018,
                            "src": "16258:17:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1951,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16258:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1968,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1954,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1948,
                              "src": "16298:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1955,
                                  "name": "votesAgainst",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1740,
                                  "src": "16311:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                  }
                                },
                                "id": 1957,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1956,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1937,
                                  "src": "16324:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "16311:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VoteSig_$1732_memory_ptr",
                                  "typeString": "struct CompoundVotingMachine.VoteSig memory"
                                }
                              },
                              "id": 1958,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "v",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1727,
                              "src": "16311:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1959,
                                  "name": "votesAgainst",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1740,
                                  "src": "16335:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                  }
                                },
                                "id": 1961,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1960,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1937,
                                  "src": "16348:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "16335:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VoteSig_$1732_memory_ptr",
                                  "typeString": "struct CompoundVotingMachine.VoteSig memory"
                                }
                              },
                              "id": 1962,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "r",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1729,
                              "src": "16335:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1963,
                                  "name": "votesAgainst",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1740,
                                  "src": "16359:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                  }
                                },
                                "id": 1965,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1964,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1937,
                                  "src": "16372:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "16359:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VoteSig_$1732_memory_ptr",
                                  "typeString": "struct CompoundVotingMachine.VoteSig memory"
                                }
                              },
                              "id": 1966,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "s",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1731,
                              "src": "16359:17:3",
                              "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": 1953,
                            "name": "ecrecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -6,
                            "src": "16282:9:3",
                            "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": 1967,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16282:100:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16258:124:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1975,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1970,
                                "name": "signatory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1952,
                                "src": "16400:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1973,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16421:1:3",
                                    "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": 1972,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "16413:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1971,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16413:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1974,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16413:10:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "16400:23:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a63617374566f746542795369673a20696e76616c6964207369676e6174757265",
                              "id": 1976,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16429:57:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_50d9672d7084bae246b52b4eba77e59964de45253c5ce1a356c04edf7e38d90a",
                                "typeString": "literal_string \"CompoundVotingMachine::castVoteBySig: invalid signature\""
                              },
                              "value": "CompoundVotingMachine::castVoteBySig: invalid signature"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_50d9672d7084bae246b52b4eba77e59964de45253c5ce1a356c04edf7e38d90a",
                                "typeString": "literal_string \"CompoundVotingMachine::castVoteBySig: invalid signature\""
                              }
                            ],
                            "id": 1969,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "16387:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1977,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16387:104:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1978,
                        "nodeType": "ExpressionStatement",
                        "src": "16387:104:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1985,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1980,
                                    "name": "votesAgainst",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1740,
                                    "src": "16509:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                    }
                                  },
                                  "id": 1982,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1981,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1937,
                                    "src": "16522:1:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "16509:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_VoteSig_$1732_memory_ptr",
                                    "typeString": "struct CompoundVotingMachine.VoteSig memory"
                                  }
                                },
                                "id": 1983,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "support",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1725,
                                "src": "16509:23:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 1984,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16536:5:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "src": "16509:32:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a63617374566f746542795369673a20696e76616c696420737570706f72742076616c756520696e20616761696e7374206261746368",
                              "id": 1986,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16547:78:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fb98b1737a49ce9852af0ca5e1954945f972d25b971545e6b0c5f3a441f85523",
                                "typeString": "literal_string \"CompoundVotingMachine::castVoteBySig: invalid support value in against batch\""
                              },
                              "value": "CompoundVotingMachine::castVoteBySig: invalid support value in against batch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_fb98b1737a49ce9852af0ca5e1954945f972d25b971545e6b0c5f3a441f85523",
                                "typeString": "literal_string \"CompoundVotingMachine::castVoteBySig: invalid support value in against batch\""
                              }
                            ],
                            "id": 1979,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "16496:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1987,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16496:134:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1988,
                        "nodeType": "ExpressionStatement",
                        "src": "16496:134:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1997,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1989,
                            "name": "total",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1815,
                            "src": "16635:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1992,
                                "name": "signatory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1952,
                                "src": "16659:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 1993,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16670:4:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1994,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1809,
                                  "src": "16676:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                    "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                  }
                                },
                                "id": 1995,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "startBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 859,
                                "src": "16676:19:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1990,
                                "name": "rep",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 825,
                                "src": "16644:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ReputationInterface_$105",
                                  "typeString": "contract ReputationInterface"
                                }
                              },
                              "id": 1991,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getVotesAt",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 85,
                              "src": "16644:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_bool_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,bool,uint256) view external returns (uint256)"
                              }
                            },
                            "id": 1996,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16644:52:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16635:61:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1998,
                        "nodeType": "ExpressionStatement",
                        "src": "16635:61:3"
                      },
                      {
                        "assignments": [
                          2000
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2000,
                            "mutability": "mutable",
                            "name": "receipt",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2018,
                            "src": "16701:23:3",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                              "typeString": "struct CompoundVotingMachine.Receipt"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1999,
                              "name": "Receipt",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 893,
                              "src": "16701:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                                "typeString": "struct CompoundVotingMachine.Receipt"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2005,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2001,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1809,
                              "src": "16727:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                              }
                            },
                            "id": 2002,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "receipts",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 879,
                            "src": "16727:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Receipt_$893_storage_$",
                              "typeString": "mapping(address => struct CompoundVotingMachine.Receipt storage ref)"
                            }
                          },
                          "id": 2004,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2003,
                            "name": "signatory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1952,
                            "src": "16745:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16727:28:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Receipt_$893_storage",
                            "typeString": "struct CompoundVotingMachine.Receipt storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16701:54:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2006,
                              "name": "receipt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2000,
                              "src": "16760:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                                "typeString": "struct CompoundVotingMachine.Receipt storage pointer"
                              }
                            },
                            "id": 2008,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "hasVoted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 886,
                            "src": "16760:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2009,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16779:4:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "16760:23:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2011,
                        "nodeType": "ExpressionStatement",
                        "src": "16760:23:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2012,
                              "name": "receipt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2000,
                              "src": "16788:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                                "typeString": "struct CompoundVotingMachine.Receipt storage pointer"
                              }
                            },
                            "id": 2014,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "support",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 889,
                            "src": "16788:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2015,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16806:4:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "16788:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2017,
                        "nodeType": "ExpressionStatement",
                        "src": "16788:22:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1943,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1940,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1937,
                      "src": "16187:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1941,
                        "name": "votesAgainst",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1740,
                        "src": "16191:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                        }
                      },
                      "id": 1942,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16191:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16187:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2019,
                  "initializationExpression": {
                    "assignments": [
                      1937
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1937,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2019,
                        "src": "16173:8:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 1936,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "16173:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1939,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1938,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16184:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "16173:12:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1945,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "16212:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1944,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1937,
                        "src": "16212:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "id": 1946,
                    "nodeType": "ExpressionStatement",
                    "src": "16212:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "16168:647:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2023,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2020,
                        "name": "votesAgainst",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1740,
                        "src": "16822:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                        }
                      },
                      "id": 2021,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16822:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2022,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16844:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "16822:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2050,
                  "nodeType": "IfStatement",
                  "src": "16818:188:3",
                  "trueBody": {
                    "id": 2049,
                    "nodeType": "Block",
                    "src": "16847:159:3",
                    "statements": [
                      {
                        "assignments": [
                          2025
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2025,
                            "mutability": "mutable",
                            "name": "voteAddressHash",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2049,
                            "src": "16852:23:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2024,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16852:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2041,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 2035,
                                              "name": "votesAgainst",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1740,
                                              "src": "16927:12:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2033,
                                              "name": "abi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -1,
                                              "src": "16916:3:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_abi",
                                                "typeString": "abi"
                                              }
                                            },
                                            "id": 2034,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "encode",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "16916:10:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                              "typeString": "function () pure returns (bytes memory)"
                                            }
                                          },
                                          "id": 2036,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "16916:24:3",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 2032,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -8,
                                        "src": "16906:9:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 2037,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16906:35:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 2031,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "16898:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 2030,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "16898:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 2038,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16898:44:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 2029,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "16890:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint160_$",
                                  "typeString": "type(uint160)"
                                },
                                "typeName": {
                                  "id": 2028,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16890:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2039,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16890:53:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 2027,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "16882:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 2026,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16882:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 2040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16882:62:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16852:92:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2043,
                              "name": "voteAddressHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2025,
                              "src": "16959:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2044,
                              "name": "proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1734,
                              "src": "16976:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 2045,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16988:5:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            {
                              "argumentTypes": null,
                              "id": 2046,
                              "name": "total",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1815,
                              "src": "16995:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2042,
                            "name": "_castVote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2288,
                            "src": "16949:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,bool,uint256)"
                            }
                          },
                          "id": 2047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16949:52:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2048,
                        "nodeType": "ExpressionStatement",
                        "src": "16949:52:3"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "functionSelector": "739f1c6c",
            "id": 2052,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "ecRecoverTest",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1741,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1734,
                  "mutability": "mutable",
                  "name": "proposalId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2052,
                  "src": "14650:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1733,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14650:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1737,
                  "mutability": "mutable",
                  "name": "votesFor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2052,
                  "src": "14672:25:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct CompoundVotingMachine.VoteSig[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 1735,
                      "name": "VoteSig",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 1732,
                      "src": "14672:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_VoteSig_$1732_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.VoteSig"
                      }
                    },
                    "id": 1736,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "14672:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_storage_$dyn_storage_ptr",
                      "typeString": "struct CompoundVotingMachine.VoteSig[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1740,
                  "mutability": "mutable",
                  "name": "votesAgainst",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2052,
                  "src": "14701:29:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct CompoundVotingMachine.VoteSig[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 1738,
                      "name": "VoteSig",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 1732,
                      "src": "14701:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_VoteSig_$1732_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.VoteSig"
                      }
                    },
                    "id": 1739,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "14701:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_storage_$dyn_storage_ptr",
                      "typeString": "struct CompoundVotingMachine.VoteSig[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14646:87:3"
            },
            "returnParameters": {
              "id": 1742,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14741:0:3"
            },
            "scope": 2301,
            "src": "14624:2438:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2151,
              "nodeType": "Block",
              "src": "17252:748:3",
              "statements": [
                {
                  "assignments": [
                    2067
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2067,
                      "mutability": "mutable",
                      "name": "domainSeparator",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2151,
                      "src": "17256:23:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2066,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "17256:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2086,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2071,
                            "name": "DOMAIN_TYPEHASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 918,
                            "src": "17317:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2075,
                                    "name": "name",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 725,
                                    "src": "17355:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 2074,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "17349:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 2073,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17349:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 2076,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17349:11:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 2072,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "17339:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 2077,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17339:22:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 2078,
                              "name": "getChainId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2300,
                              "src": "17368:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                "typeString": "function () pure returns (uint256)"
                              }
                            },
                            "id": 2079,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17368:12:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2082,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "17395:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_CompoundVotingMachine_$2301",
                                  "typeString": "contract CompoundVotingMachine"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_CompoundVotingMachine_$2301",
                                  "typeString": "contract CompoundVotingMachine"
                                }
                              ],
                              "id": 2081,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17387:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2080,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "17387:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2083,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17387:13:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2069,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "17300:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 2070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "17300:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 2084,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17300:106:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 2068,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "17285:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 2085,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17285:126:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17256:155:3"
                },
                {
                  "assignments": [
                    2088
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2088,
                      "mutability": "mutable",
                      "name": "structHash",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2151,
                      "src": "17415:18:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2087,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "17415:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2097,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2092,
                            "name": "BALLOT_TYPEHASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 924,
                            "src": "17460:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2093,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2055,
                            "src": "17477:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2094,
                            "name": "support",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2057,
                            "src": "17489:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2090,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "17449:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 2091,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "17449:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 2095,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17449:48:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 2089,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "17439:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 2096,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17439:59:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17415:83:3"
                },
                {
                  "assignments": [
                    2099
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2099,
                      "mutability": "mutable",
                      "name": "digest",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2151,
                      "src": "17502:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2098,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "17502:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2108,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "1901",
                            "id": 2103,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17554:10:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                              "typeString": "literal_string \"\u0019\u0001\""
                            },
                            "value": "\u0019\u0001"
                          },
                          {
                            "argumentTypes": null,
                            "id": 2104,
                            "name": "domainSeparator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2067,
                            "src": "17566:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2105,
                            "name": "structHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2088,
                            "src": "17583:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                              "typeString": "literal_string \"\u0019\u0001\""
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2101,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "17537:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 2102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "17537:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 2106,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17537:57:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 2100,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "17522:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 2107,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17522:77:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17502:97:3"
                },
                {
                  "assignments": [
                    2110
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2110,
                      "mutability": "mutable",
                      "name": "signatory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2151,
                      "src": "17603:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2109,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "17603:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2117,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2112,
                        "name": "digest",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2099,
                        "src": "17633:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2113,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2059,
                        "src": "17641:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2114,
                        "name": "r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2061,
                        "src": "17644:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2115,
                        "name": "s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2063,
                        "src": "17647:1:3",
                        "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": 2111,
                      "name": "ecrecover",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -6,
                      "src": "17623:9:3",
                      "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": 2116,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17623:26:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17603:46:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2119,
                          "name": "signatory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2110,
                          "src": "17665:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2122,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17686:1:3",
                              "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": 2121,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "17678:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 2120,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "17678:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 2123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17678:10:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "17665:23:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a63617374566f746542795369673a20696e76616c6964207369676e6174757265",
                        "id": 2125,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17693:57:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_50d9672d7084bae246b52b4eba77e59964de45253c5ce1a356c04edf7e38d90a",
                          "typeString": "literal_string \"CompoundVotingMachine::castVoteBySig: invalid signature\""
                        },
                        "value": "CompoundVotingMachine::castVoteBySig: invalid signature"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_50d9672d7084bae246b52b4eba77e59964de45253c5ce1a356c04edf7e38d90a",
                          "typeString": "literal_string \"CompoundVotingMachine::castVoteBySig: invalid signature\""
                        }
                      ],
                      "id": 2118,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "17653:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17653:101:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2127,
                  "nodeType": "ExpressionStatement",
                  "src": "17653:101:3"
                },
                {
                  "assignments": [
                    2129
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2129,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2151,
                      "src": "17816:25:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2128,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 883,
                        "src": "17816:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2133,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2130,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 907,
                      "src": "17844:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                        "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                      }
                    },
                    "id": 2132,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2131,
                      "name": "proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2055,
                      "src": "17854:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "17844:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$883_storage",
                      "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17816:49:3"
                },
                {
                  "assignments": [
                    2135
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2135,
                      "mutability": "mutable",
                      "name": "votes",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2151,
                      "src": "17869:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2134,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "17869:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2143,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2138,
                        "name": "signatory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2110,
                        "src": "17900:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2139,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17911:4:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2140,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2129,
                          "src": "17917:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 2141,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "startBlock",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 859,
                        "src": "17917:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2136,
                        "name": "rep",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 825,
                        "src": "17885:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ReputationInterface_$105",
                          "typeString": "contract ReputationInterface"
                        }
                      },
                      "id": 2137,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getVotesAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 85,
                      "src": "17885:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_bool_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (address,bool,uint256) view external returns (uint256)"
                      }
                    },
                    "id": 2142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17885:52:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17869:68:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2145,
                        "name": "signatory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2110,
                        "src": "17958:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2146,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2055,
                        "src": "17969:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2147,
                        "name": "support",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2057,
                        "src": "17981:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2148,
                        "name": "votes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2135,
                        "src": "17990:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2144,
                      "name": "_castVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2288,
                      "src": "17948:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,bool,uint256)"
                      }
                    },
                    "id": 2149,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17948:48:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "functionReturnParameters": 2065,
                  "id": 2150,
                  "nodeType": "Return",
                  "src": "17941:55:3"
                }
              ]
            },
            "documentation": {
              "id": 2053,
              "nodeType": "StructuredDocumentation",
              "src": "17065:77:3",
              "text": "@notice helper to cast a vote for someone else by using eip712 signatures"
            },
            "functionSelector": "4634c61f",
            "id": 2152,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "castVoteBySig",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2064,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2055,
                  "mutability": "mutable",
                  "name": "proposalId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2152,
                  "src": "17170:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2054,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17170:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2057,
                  "mutability": "mutable",
                  "name": "support",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2152,
                  "src": "17192:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2056,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "17192:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2059,
                  "mutability": "mutable",
                  "name": "v",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2152,
                  "src": "17208:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2058,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "17208:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2061,
                  "mutability": "mutable",
                  "name": "r",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2152,
                  "src": "17219:9:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2060,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "17219:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2063,
                  "mutability": "mutable",
                  "name": "s",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2152,
                  "src": "17232:9:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2062,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "17232:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17166:78:3"
            },
            "returnParameters": {
              "id": 2065,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17252:0:3"
            },
            "scope": 2301,
            "src": "17144:856:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2287,
              "nodeType": "Block",
              "src": "18150:1011:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2177,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$902",
                            "typeString": "enum CompoundVotingMachine.ProposalState"
                          },
                          "id": 2170,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2166,
                                "name": "proposalId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2157,
                                "src": "18172:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2165,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1689,
                              "src": "18166:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$902_$",
                                "typeString": "function (uint256) view returns (enum CompoundVotingMachine.ProposalState)"
                              }
                            },
                            "id": 2167,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18166:17:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$902",
                              "typeString": "enum CompoundVotingMachine.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2168,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 902,
                              "src": "18187:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                              }
                            },
                            "id": 2169,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Active",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "18187:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$902",
                              "typeString": "enum CompoundVotingMachine.ProposalState"
                            }
                          },
                          "src": "18166:41:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$902",
                            "typeString": "enum CompoundVotingMachine.ProposalState"
                          },
                          "id": 2176,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2172,
                                "name": "proposalId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2157,
                                "src": "18221:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2171,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1689,
                              "src": "18215:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$902_$",
                                "typeString": "function (uint256) view returns (enum CompoundVotingMachine.ProposalState)"
                              }
                            },
                            "id": 2173,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18215:17:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$902",
                              "typeString": "enum CompoundVotingMachine.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2174,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 902,
                              "src": "18236:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                              }
                            },
                            "id": 2175,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "ActiveTimelock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "18236:28:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$902",
                              "typeString": "enum CompoundVotingMachine.ProposalState"
                            }
                          },
                          "src": "18215:49:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "18166:98:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a5f63617374566f74653a20766f74696e6720697320636c6f736564",
                        "id": 2178,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18269:52:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_166a3717390e8c16823d39628636f1683e4e5f1fc99f80eddfa0336084d64c4c",
                          "typeString": "literal_string \"CompoundVotingMachine::_castVote: voting is closed\""
                        },
                        "value": "CompoundVotingMachine::_castVote: voting is closed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_166a3717390e8c16823d39628636f1683e4e5f1fc99f80eddfa0336084d64c4c",
                          "typeString": "literal_string \"CompoundVotingMachine::_castVote: voting is closed\""
                        }
                      ],
                      "id": 2164,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "18154:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2179,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18154:171:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2180,
                  "nodeType": "ExpressionStatement",
                  "src": "18154:171:3"
                },
                {
                  "assignments": [
                    2182
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2182,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2287,
                      "src": "18330:25:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2181,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 883,
                        "src": "18330:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2186,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2183,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 907,
                      "src": "18358:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                        "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                      }
                    },
                    "id": 2185,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2184,
                      "name": "proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2157,
                      "src": "18368:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "18358:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$883_storage",
                      "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18330:49:3"
                },
                {
                  "assignments": [
                    2188
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2188,
                      "mutability": "mutable",
                      "name": "receipt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2287,
                      "src": "18383:23:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.Receipt"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2187,
                        "name": "Receipt",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 893,
                        "src": "18383:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Receipt"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2193,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2189,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2182,
                        "src": "18409:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                        }
                      },
                      "id": 2190,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "receipts",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 879,
                      "src": "18409:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Receipt_$893_storage_$",
                        "typeString": "mapping(address => struct CompoundVotingMachine.Receipt storage ref)"
                      }
                    },
                    "id": 2192,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2191,
                      "name": "voter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2155,
                      "src": "18427:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "18409:24:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Receipt_$893_storage",
                      "typeString": "struct CompoundVotingMachine.Receipt storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18383:50:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2198,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2195,
                            "name": "receipt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2188,
                            "src": "18449:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                              "typeString": "struct CompoundVotingMachine.Receipt storage pointer"
                            }
                          },
                          "id": 2196,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "hasVoted",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 886,
                          "src": "18449:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 2197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "18469:5:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "src": "18449:25:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a5f63617374566f74653a20766f74657220616c726561647920766f746564",
                        "id": 2199,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18479:55:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6824e3a066b1002ee17ca2800724b8d51655237d4073c6836bcd605f27934aaa",
                          "typeString": "literal_string \"CompoundVotingMachine::_castVote: voter already voted\""
                        },
                        "value": "CompoundVotingMachine::_castVote: voter already voted"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6824e3a066b1002ee17ca2800724b8d51655237d4073c6836bcd605f27934aaa",
                          "typeString": "literal_string \"CompoundVotingMachine::_castVote: voter already voted\""
                        }
                      ],
                      "id": 2194,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "18437:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18437:101:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2201,
                  "nodeType": "ExpressionStatement",
                  "src": "18437:101:3"
                },
                {
                  "assignments": [
                    2203
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2203,
                      "mutability": "mutable",
                      "name": "hasChanged",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2287,
                      "src": "18543:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2202,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "18543:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2209,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2208,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2204,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2182,
                        "src": "18561:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                        }
                      },
                      "id": 2205,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "forVotes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 865,
                      "src": "18561:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2206,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2182,
                        "src": "18581:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                        }
                      },
                      "id": 2207,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "againstVotes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 868,
                      "src": "18581:21:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "18561:41:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18543:59:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 2210,
                    "name": "support",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2159,
                    "src": "18610:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2232,
                    "nodeType": "Block",
                    "src": "18683:66:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2230,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2222,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2182,
                              "src": "18688:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                              }
                            },
                            "id": 2224,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "againstVotes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 868,
                            "src": "18688:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2228,
                                "name": "votes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2161,
                                "src": "18738:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2225,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2182,
                                  "src": "18712:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                    "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                  }
                                },
                                "id": 2226,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "againstVotes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 868,
                                "src": "18712:21:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2227,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7973,
                              "src": "18712:25:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2229,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18712:32:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18688:56:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2231,
                        "nodeType": "ExpressionStatement",
                        "src": "18688:56:3"
                      }
                    ]
                  },
                  "id": 2233,
                  "nodeType": "IfStatement",
                  "src": "18606:143:3",
                  "trueBody": {
                    "id": 2221,
                    "nodeType": "Block",
                    "src": "18619:58:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2211,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2182,
                              "src": "18624:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                              }
                            },
                            "id": 2213,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "forVotes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 865,
                            "src": "18624:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2217,
                                "name": "votes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2161,
                                "src": "18666:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2214,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2182,
                                  "src": "18644:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                    "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                  }
                                },
                                "id": 2215,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "forVotes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 865,
                                "src": "18644:17:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2216,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7973,
                              "src": "18644:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2218,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18644:28:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18624:48:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2220,
                        "nodeType": "ExpressionStatement",
                        "src": "18624:48:3"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2243,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2234,
                      "name": "hasChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2203,
                      "src": "18753:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 2242,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2235,
                        "name": "hasChanged",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2203,
                        "src": "18766:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2240,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2236,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2182,
                                "src": "18781:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                  "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                }
                              },
                              "id": 2237,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "forVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 865,
                              "src": "18781:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2238,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2182,
                                "src": "18801:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                  "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                }
                              },
                              "id": 2239,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "againstVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 868,
                              "src": "18801:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "18781:41:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 2241,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "18780:43:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "18766:57:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "18753:70:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2244,
                  "nodeType": "ExpressionStatement",
                  "src": "18753:70:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2249,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2245,
                        "name": "receipt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2188,
                        "src": "18827:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Receipt storage pointer"
                        }
                      },
                      "id": 2247,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "hasVoted",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 886,
                      "src": "18827:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 2248,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18846:4:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "18827:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2250,
                  "nodeType": "ExpressionStatement",
                  "src": "18827:23:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2255,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2251,
                        "name": "receipt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2188,
                        "src": "18854:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Receipt storage pointer"
                        }
                      },
                      "id": 2253,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "support",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 889,
                      "src": "18854:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2254,
                      "name": "support",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2159,
                      "src": "18872:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "18854:25:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2256,
                  "nodeType": "ExpressionStatement",
                  "src": "18854:25:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2261,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2257,
                        "name": "receipt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2188,
                        "src": "18883:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Receipt storage pointer"
                        }
                      },
                      "id": 2259,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "votes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 892,
                      "src": "18883:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2260,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2161,
                      "src": "18899:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "18883:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2262,
                  "nodeType": "ExpressionStatement",
                  "src": "18883:21:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2273,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2267,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2263,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2182,
                          "src": "18967:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 2264,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "forVotes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 865,
                        "src": "18967:17:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2265,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2182,
                          "src": "18988:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 2266,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "quoromRequired",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 882,
                        "src": "18988:23:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "18967:44:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2272,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2268,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2182,
                          "src": "19018:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 2269,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "againstVotes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 868,
                        "src": "19018:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2270,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2182,
                          "src": "19043:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 2271,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "quoromRequired",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 882,
                        "src": "19043:23:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "19018:48:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "18967:99:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2279,
                  "nodeType": "IfStatement",
                  "src": "18959:146:3",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2275,
                          "name": "proposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2157,
                          "src": "19082:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2276,
                          "name": "hasChanged",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2203,
                          "src": "19094:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "id": 2274,
                        "name": "_updateETA",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1271,
                        "src": "19071:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                          "typeString": "function (uint256,bool)"
                        }
                      },
                      "id": 2277,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19071:34:3",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 2278,
                    "nodeType": "ExpressionStatement",
                    "src": "19071:34:3"
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2281,
                        "name": "voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2155,
                        "src": "19123:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2282,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2157,
                        "src": "19130:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2283,
                        "name": "support",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2159,
                        "src": "19142:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2284,
                        "name": "votes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2161,
                        "src": "19151:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2280,
                      "name": "VoteCast",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 960,
                      "src": "19114:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,bool,uint256)"
                      }
                    },
                    "id": 2285,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19114:43:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2286,
                  "nodeType": "EmitStatement",
                  "src": "19109:48:3"
                }
              ]
            },
            "documentation": {
              "id": 2153,
              "nodeType": "StructuredDocumentation",
              "src": "18003:42:3",
              "text": "@notice internal helper to cast a vote"
            },
            "id": 2288,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_castVote",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2162,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2155,
                  "mutability": "mutable",
                  "name": "voter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2288,
                  "src": "18069:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2154,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18069:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2157,
                  "mutability": "mutable",
                  "name": "proposalId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2288,
                  "src": "18086:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2156,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "18086:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2159,
                  "mutability": "mutable",
                  "name": "support",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2288,
                  "src": "18108:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2158,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "18108:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2161,
                  "mutability": "mutable",
                  "name": "votes",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2288,
                  "src": "18124:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2160,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "18124:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18065:75:3"
            },
            "returnParameters": {
              "id": 2163,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18150:0:3"
            },
            "scope": 2301,
            "src": "18047:1114:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2299,
              "nodeType": "Block",
              "src": "20435:82:3",
              "statements": [
                {
                  "assignments": [
                    2294
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2294,
                      "mutability": "mutable",
                      "name": "chainId",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2299,
                      "src": "20439:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2293,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "20439:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2295,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20439:15:3"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "20467:29:3",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "20472:20:3",
                        "value": {
                          "arguments": [],
                          "functionName": {
                            "name": "chainid",
                            "nodeType": "YulIdentifier",
                            "src": "20483:7:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "20483:9:3"
                        },
                        "variableNames": [
                          {
                            "name": "chainId",
                            "nodeType": "YulIdentifier",
                            "src": "20472:7:3"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 2294,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "20472:7:3",
                      "valueSize": 1
                    }
                  ],
                  "id": 2296,
                  "nodeType": "InlineAssembly",
                  "src": "20458:38:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2297,
                    "name": "chainId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2294,
                    "src": "20506:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2292,
                  "id": 2298,
                  "nodeType": "Return",
                  "src": "20499:14:3"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "3408e470",
            "id": 2300,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getChainId",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2289,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20402:2:3"
            },
            "returnParameters": {
              "id": 2292,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2291,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2300,
                  "src": "20426:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2290,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20426:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20425:9:3"
            },
            "scope": 2301,
            "src": "20383:134:3",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 2302,
        "src": "202:20317:3"
      }
    ],
    "src": "32:20488:3"
  },
  "legacyAST": {
    "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/governance/CompoundVotingMachine.sol",
    "exportedSymbols": {
      "CompoundVotingMachine": [
        2301
      ]
    },
    "id": 2302,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 715,
        "literals": [
          "solidity",
          ">=",
          "0.6"
        ],
        "nodeType": "PragmaDirective",
        "src": "32:22:3"
      },
      {
        "id": 716,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "55:33:3"
      },
      {
        "absolutePath": "@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol",
        "file": "@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol",
        "id": 717,
        "nodeType": "ImportDirective",
        "scope": 2302,
        "sourceUnit": 8141,
        "src": "90:74:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/DAOStackInterfaces.sol",
        "file": "../DAOStackInterfaces.sol",
        "id": 718,
        "nodeType": "ImportDirective",
        "scope": 2302,
        "sourceUnit": 257,
        "src": "165:35:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2301,
        "linearizedBaseContracts": [
          2301
        ],
        "name": "CompoundVotingMachine",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 721,
            "libraryName": {
              "contractScope": null,
              "id": 719,
              "name": "SafeMathUpgradeable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8140,
              "src": "242:19:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMathUpgradeable_$8140",
                "typeString": "library SafeMathUpgradeable"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "236:38:3",
            "typeName": {
              "id": 720,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "266:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": true,
            "documentation": {
              "id": 722,
              "nodeType": "StructuredDocumentation",
              "src": "276:37:3",
              "text": "@notice The name of this contract"
            },
            "functionSelector": "06fdde03",
            "id": 725,
            "mutability": "constant",
            "name": "name",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 2301,
            "src": "315:54:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory_ptr",
              "typeString": "string"
            },
            "typeName": {
              "id": 723,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "315:6:3",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "476f6f6444414f20566f74696e67204d616368696e65",
              "id": 724,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "345:24:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_f0e8bb1b9036884fc34b9b811b9c0948f4a374ea4f5429d4533b8ab3c9fa3734",
                "typeString": "literal_string \"GoodDAO Voting Machine\""
              },
              "value": "GoodDAO Voting Machine"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 726,
              "nodeType": "StructuredDocumentation",
              "src": "373:86:3",
              "text": "@notice the number of blocks a proposal is open for voting (before passing quorum)"
            },
            "functionSelector": "b24b7ffd",
            "id": 728,
            "mutability": "mutable",
            "name": "votingPeriodBlocks",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 2301,
            "src": "461:33:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 727,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "461:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 744,
              "nodeType": "Block",
              "src": "680:48:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "313030",
                        "id": 741,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "720:3:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        },
                        "value": "100"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "33",
                            "id": 738,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "713:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 734,
                                "name": "rep",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 825,
                                "src": "691:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ReputationInterface_$105",
                                  "typeString": "contract ReputationInterface"
                                }
                              },
                              "id": 735,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "totalSupply",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 90,
                              "src": "691:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                "typeString": "function () view external returns (uint256)"
                              }
                            },
                            "id": 736,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "691:17:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8053,
                          "src": "691:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 739,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "691:24:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 740,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8070,
                      "src": "691:28:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 742,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "691:33:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 733,
                  "id": 743,
                  "nodeType": "Return",
                  "src": "684:40:3"
                }
              ]
            },
            "documentation": {
              "id": 729,
              "nodeType": "StructuredDocumentation",
              "src": "498:127:3",
              "text": "@notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed"
            },
            "functionSelector": "24bc1a64",
            "id": 745,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "quorumVotes",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 730,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "647:2:3"
            },
            "returnParameters": {
              "id": 733,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 732,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 745,
                  "src": "671:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 731,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "671:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "670:9:3"
            },
            "scope": 2301,
            "src": "627:101:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 764,
              "nodeType": "Block",
              "src": "905:61:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "313030",
                        "id": 761,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "958:3:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        },
                        "value": "100"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 758,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "951:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 755,
                                "name": "blockNumber",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 748,
                                "src": "934:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 753,
                                "name": "rep",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 825,
                                "src": "916:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ReputationInterface_$105",
                                  "typeString": "contract ReputationInterface"
                                }
                              },
                              "id": 754,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "totalSupplyAt",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 97,
                              "src": "916:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) view external returns (uint256)"
                              }
                            },
                            "id": 756,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "916:30:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 757,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8053,
                          "src": "916:34:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 759,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "916:37:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 760,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8070,
                      "src": "916:41:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 762,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "916:46:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 752,
                  "id": 763,
                  "nodeType": "Return",
                  "src": "909:53:3"
                }
              ]
            },
            "documentation": {
              "id": 746,
              "nodeType": "StructuredDocumentation",
              "src": "736:82:3",
              "text": "@notice The number of votes required in order for a voter to become a proposer"
            },
            "functionSelector": "7629a4ac",
            "id": 765,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "proposalThreshold",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 749,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 748,
                  "mutability": "mutable",
                  "name": "blockNumber",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 765,
                  "src": "847:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 747,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "847:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "846:21:3"
            },
            "returnParameters": {
              "id": 752,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 751,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 765,
                  "src": "895:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 750,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "895:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "894:9:3"
            },
            "scope": 2301,
            "src": "820:146:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 773,
              "nodeType": "Block",
              "src": "1116:17:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "3130",
                    "id": 771,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1127:2:3",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_10_by_1",
                      "typeString": "int_const 10"
                    },
                    "value": "10"
                  },
                  "functionReturnParameters": 770,
                  "id": 772,
                  "nodeType": "Return",
                  "src": "1120:9:3"
                }
              ]
            },
            "documentation": {
              "id": 766,
              "nodeType": "StructuredDocumentation",
              "src": "975:76:3",
              "text": "@notice The maximum number of actions that can be included in a proposal"
            },
            "functionSelector": "7bdbe4d0",
            "id": 774,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "proposalMaxOperations",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 767,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1083:2:3"
            },
            "returnParameters": {
              "id": 770,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 769,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 774,
                  "src": "1107:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 768,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1107:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1106:9:3"
            },
            "scope": 2301,
            "src": "1053:80:3",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 782,
              "nodeType": "Block",
              "src": "1284:16:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "31",
                    "id": 780,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1295:1:3",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "1"
                  },
                  "functionReturnParameters": 779,
                  "id": 781,
                  "nodeType": "Return",
                  "src": "1288:8:3"
                }
              ]
            },
            "documentation": {
              "id": 775,
              "nodeType": "StructuredDocumentation",
              "src": "1150:79:3",
              "text": "@notice The delay before voting on a proposal may take place, once proposed"
            },
            "functionSelector": "3932abb1",
            "id": 783,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "votingDelay",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 776,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1251:2:3"
            },
            "returnParameters": {
              "id": 779,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 778,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 783,
                  "src": "1275:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 777,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1275:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1274:9:3"
            },
            "scope": 2301,
            "src": "1231:69:3",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 791,
              "nodeType": "Block",
              "src": "1429:33:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 789,
                    "name": "votingPeriodBlocks",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 728,
                    "src": "1440:18:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 788,
                  "id": 790,
                  "nodeType": "Return",
                  "src": "1433:25:3"
                }
              ]
            },
            "documentation": {
              "id": 784,
              "nodeType": "StructuredDocumentation",
              "src": "1314:59:3",
              "text": "@notice The duration of voting on a proposal, in blocks"
            },
            "functionSelector": "02a251a3",
            "id": 792,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "votingPeriod",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 785,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1396:2:3"
            },
            "returnParameters": {
              "id": 788,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 787,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 792,
                  "src": "1420:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 786,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1420:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1419:9:3"
            },
            "scope": 2301,
            "src": "1375:87:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 800,
              "nodeType": "Block",
              "src": "1654:21:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "32",
                    "id": 798,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1665:6:3",
                    "subdenomination": "days",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_172800_by_1",
                      "typeString": "int_const 172800"
                    },
                    "value": "2"
                  },
                  "functionReturnParameters": 797,
                  "id": 799,
                  "nodeType": "Return",
                  "src": "1658:13:3"
                }
              ]
            },
            "documentation": {
              "id": 793,
              "nodeType": "StructuredDocumentation",
              "src": "1509:90:3",
              "text": "@notice The duration of time after proposal passed thershold before it can be expected"
            },
            "functionSelector": "8b5d4b2c",
            "id": 801,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "queuePeriod",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 794,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1621:2:3"
            },
            "returnParameters": {
              "id": 797,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 796,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 801,
                  "src": "1645:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 795,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1645:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1644:9:3"
            },
            "scope": 2301,
            "src": "1601:74:3",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 809,
              "nodeType": "Block",
              "src": "1885:21:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "31",
                    "id": 807,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1896:6:3",
                    "subdenomination": "days",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_86400_by_1",
                      "typeString": "int_const 86400"
                    },
                    "value": "1"
                  },
                  "functionReturnParameters": 806,
                  "id": 808,
                  "nodeType": "Return",
                  "src": "1889:13:3"
                }
              ]
            },
            "documentation": {
              "id": 802,
              "nodeType": "StructuredDocumentation",
              "src": "1688:136:3",
              "text": "@notice During the queue period if vote decision has changed, we extend queue period so\n that at least gameChangerPeriod is left"
            },
            "functionSelector": "d2895d16",
            "id": 810,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "gameChangerPeriod",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 803,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1852:2:3"
            },
            "returnParameters": {
              "id": 806,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 805,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 810,
                  "src": "1876:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 804,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1876:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1875:9:3"
            },
            "scope": 2301,
            "src": "1826:80:3",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 818,
              "nodeType": "Block",
              "src": "2051:21:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "33",
                    "id": 816,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2062:6:3",
                    "subdenomination": "days",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_259200_by_1",
                      "typeString": "int_const 259200"
                    },
                    "value": "3"
                  },
                  "functionReturnParameters": 815,
                  "id": 817,
                  "nodeType": "Return",
                  "src": "2055:13:3"
                }
              ]
            },
            "documentation": {
              "id": 811,
              "nodeType": "StructuredDocumentation",
              "src": "1918:78:3",
              "text": "@notice the time a succeeded proposal has to be executed on the blockchain"
            },
            "functionSelector": "a06db7dc",
            "id": 819,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "gracePeriod",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 812,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2018:2:3"
            },
            "returnParameters": {
              "id": 815,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 814,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 819,
                  "src": "2042:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 813,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2042:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2041:9:3"
            },
            "scope": 2301,
            "src": "1998:74:3",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 820,
              "nodeType": "StructuredDocumentation",
              "src": "2084:45:3",
              "text": "@notice The address of the DAO controller"
            },
            "functionSelector": "f77c4791",
            "id": 822,
            "mutability": "mutable",
            "name": "controller",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 2301,
            "src": "2131:28:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Controller_$51",
              "typeString": "contract Controller"
            },
            "typeName": {
              "contractScope": null,
              "id": 821,
              "name": "Controller",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 51,
              "src": "2131:10:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Controller_$51",
                "typeString": "contract Controller"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 823,
              "nodeType": "StructuredDocumentation",
              "src": "2163:51:3",
              "text": "@notice The address of the DAO reputation token"
            },
            "functionSelector": "ccc07959",
            "id": 825,
            "mutability": "mutable",
            "name": "rep",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 2301,
            "src": "2216:30:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ReputationInterface_$105",
              "typeString": "contract ReputationInterface"
            },
            "typeName": {
              "contractScope": null,
              "id": 824,
              "name": "ReputationInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 105,
              "src": "2216:19:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ReputationInterface_$105",
                "typeString": "contract ReputationInterface"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 826,
              "nodeType": "StructuredDocumentation",
              "src": "2250:48:3",
              "text": "@notice The address of the Governor Guardian"
            },
            "functionSelector": "452a9320",
            "id": 828,
            "mutability": "mutable",
            "name": "guardian",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 2301,
            "src": "2300:23:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 827,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "2300:7:3",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 829,
              "nodeType": "StructuredDocumentation",
              "src": "2327:41:3",
              "text": "@notice The total number of proposals"
            },
            "functionSelector": "da35c664",
            "id": 831,
            "mutability": "mutable",
            "name": "proposalCount",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 2301,
            "src": "2370:28:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 830,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "2370:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "canonicalName": "CompoundVotingMachine.Proposal",
            "id": 883,
            "members": [
              {
                "constant": false,
                "id": 834,
                "mutability": "mutable",
                "name": "id",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "2472:10:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 833,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2472:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 837,
                "mutability": "mutable",
                "name": "proposer",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "2524:16:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 836,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "2524:7:3",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 840,
                "mutability": "mutable",
                "name": "eta",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "2650:11:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 839,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2650:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 844,
                "mutability": "mutable",
                "name": "targets",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "2737:17:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                  "typeString": "address[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 842,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2737:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 843,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "2737:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                    "typeString": "address[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 848,
                "mutability": "mutable",
                "name": "values",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "2853:16:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                  "typeString": "uint256[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 846,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2853:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 847,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "2853:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                    "typeString": "uint256[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 852,
                "mutability": "mutable",
                "name": "signatures",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "2940:19:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                  "typeString": "string[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 850,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2940:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "id": 851,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "2940:8:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                    "typeString": "string[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 856,
                "mutability": "mutable",
                "name": "calldatas",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "3032:17:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                  "typeString": "bytes[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 854,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3032:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "id": 855,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "3032:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                    "typeString": "bytes[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 859,
                "mutability": "mutable",
                "name": "startBlock",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "3155:18:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 858,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3155:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 862,
                "mutability": "mutable",
                "name": "endBlock",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "3262:16:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 861,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3262:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 865,
                "mutability": "mutable",
                "name": "forVotes",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "3346:16:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 864,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3346:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 868,
                "mutability": "mutable",
                "name": "againstVotes",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "3435:20:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 867,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3435:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 871,
                "mutability": "mutable",
                "name": "canceled",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "3525:13:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 870,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "3525:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 874,
                "mutability": "mutable",
                "name": "executed",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "3608:13:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 873,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "3608:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 879,
                "mutability": "mutable",
                "name": "receipts",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "3688:36:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Receipt_$893_storage_$",
                  "typeString": "mapping(address => struct CompoundVotingMachine.Receipt)"
                },
                "typeName": {
                  "id": 878,
                  "keyType": {
                    "id": 876,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3696:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "3688:27:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Receipt_$893_storage_$",
                    "typeString": "mapping(address => struct CompoundVotingMachine.Receipt)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 877,
                    "name": "Receipt",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 893,
                    "src": "3707:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                      "typeString": "struct CompoundVotingMachine.Receipt"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 882,
                "mutability": "mutable",
                "name": "quoromRequired",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 883,
                "src": "3779:22:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 881,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3779:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Proposal",
            "nodeType": "StructDefinition",
            "scope": 2301,
            "src": "2402:1403:3",
            "visibility": "public"
          },
          {
            "canonicalName": "CompoundVotingMachine.Receipt",
            "id": 893,
            "members": [
              {
                "constant": false,
                "id": 886,
                "mutability": "mutable",
                "name": "hasVoted",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 893,
                "src": "3924:13:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 885,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "3924:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 889,
                "mutability": "mutable",
                "name": "support",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 893,
                "src": "4002:12:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 888,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "4002:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 892,
                "mutability": "mutable",
                "name": "votes",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 893,
                "src": "4083:13:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 891,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "4083:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Receipt",
            "nodeType": "StructDefinition",
            "scope": 2301,
            "src": "3855:245:3",
            "visibility": "public"
          },
          {
            "canonicalName": "CompoundVotingMachine.ProposalState",
            "id": 902,
            "members": [
              {
                "id": 894,
                "name": "Pending",
                "nodeType": "EnumValue",
                "src": "4181:7:3"
              },
              {
                "id": 895,
                "name": "Active",
                "nodeType": "EnumValue",
                "src": "4192:6:3"
              },
              {
                "id": 896,
                "name": "ActiveTimelock",
                "nodeType": "EnumValue",
                "src": "4202:14:3"
              },
              {
                "id": 897,
                "name": "Canceled",
                "nodeType": "EnumValue",
                "src": "4291:8:3"
              },
              {
                "id": 898,
                "name": "Defeated",
                "nodeType": "EnumValue",
                "src": "4303:8:3"
              },
              {
                "id": 899,
                "name": "Succeeded",
                "nodeType": "EnumValue",
                "src": "4315:9:3"
              },
              {
                "id": 900,
                "name": "Expired",
                "nodeType": "EnumValue",
                "src": "4404:7:3"
              },
              {
                "id": 901,
                "name": "Executed",
                "nodeType": "EnumValue",
                "src": "4415:8:3"
              }
            ],
            "name": "ProposalState",
            "nodeType": "EnumDefinition",
            "src": "4158:268:3"
          },
          {
            "constant": false,
            "documentation": {
              "id": 903,
              "nodeType": "StructuredDocumentation",
              "src": "4429:62:3",
              "text": "@notice The official record of all proposals ever proposed"
            },
            "functionSelector": "013cf08b",
            "id": 907,
            "mutability": "mutable",
            "name": "proposals",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 2301,
            "src": "4493:45:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
              "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal)"
            },
            "typeName": {
              "id": 906,
              "keyType": {
                "id": 904,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4501:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "4493:28:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal)"
              },
              "valueType": {
                "contractScope": null,
                "id": 905,
                "name": "Proposal",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 883,
                "src": "4512:8:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                  "typeString": "struct CompoundVotingMachine.Proposal"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 908,
              "nodeType": "StructuredDocumentation",
              "src": "4542:49:3",
              "text": "@notice The latest proposal for each proposer"
            },
            "functionSelector": "17977c61",
            "id": 912,
            "mutability": "mutable",
            "name": "latestProposalIds",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 2301,
            "src": "4593:52:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 911,
              "keyType": {
                "id": 909,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "4601:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "4593:27:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 910,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4612:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "documentation": {
              "id": 913,
              "nodeType": "StructuredDocumentation",
              "src": "4649:58:3",
              "text": "@notice The EIP-712 typehash for the contract's domain"
            },
            "functionSelector": "20606b70",
            "id": 918,
            "mutability": "constant",
            "name": "DOMAIN_TYPEHASH",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 2301,
            "src": "4709:131:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 914,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "4709:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                  "id": 916,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "4767:69:3",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866",
                    "typeString": "literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""
                  },
                  "value": "EIP712Domain(string name,uint256 chainId,address verifyingContract)"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866",
                    "typeString": "literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""
                  }
                ],
                "id": 915,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "4753:9:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 917,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "4753:87:3",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "documentation": {
              "id": 919,
              "nodeType": "StructuredDocumentation",
              "src": "4844:75:3",
              "text": "@notice The EIP-712 typehash for the ballot struct used by the contract"
            },
            "functionSelector": "deaaa7cc",
            "id": 924,
            "mutability": "constant",
            "name": "BALLOT_TYPEHASH",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 2301,
            "src": "4921:96:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 920,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "4921:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c20737570706f727429",
                  "id": 922,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "4975:41:3",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee",
                    "typeString": "literal_string \"Ballot(uint256 proposalId,bool support)\""
                  },
                  "value": "Ballot(uint256 proposalId,bool support)"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_8e25870c07e0b0b3884c78da52790939a455c275406c44ae8b434b692fb916ee",
                    "typeString": "literal_string \"Ballot(uint256 proposalId,bool support)\""
                  }
                ],
                "id": 921,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "4965:9:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 923,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "4965:52:3",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 925,
              "nodeType": "StructuredDocumentation",
              "src": "5021:59:3",
              "text": "@notice An event emitted when a new proposal is created"
            },
            "id": 949,
            "name": "ProposalCreated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 948,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 927,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 949,
                  "src": "5107:10:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 926,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5107:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 929,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "proposer",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 949,
                  "src": "5121:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 928,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5121:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 932,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "targets",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 949,
                  "src": "5141:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 930,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5141:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 931,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5141:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 935,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "values",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 949,
                  "src": "5162:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 933,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "5162:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 934,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5162:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 938,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "signatures",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 949,
                  "src": "5182:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 936,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "5182:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 937,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5182:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 941,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "calldatas",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 949,
                  "src": "5205:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                    "typeString": "bytes[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 939,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "5205:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 940,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5205:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                      "typeString": "bytes[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 943,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "startBlock",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 949,
                  "src": "5226:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 942,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5226:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 945,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "endBlock",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 949,
                  "src": "5248:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 944,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5248:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 947,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "description",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 949,
                  "src": "5268:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 946,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5268:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5103:186:3"
            },
            "src": "5082:208:3"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 950,
              "nodeType": "StructuredDocumentation",
              "src": "5293:68:3",
              "text": "@notice An event emitted when a vote has been cast on a proposal"
            },
            "id": 960,
            "name": "VoteCast",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 959,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 952,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "voter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 960,
                  "src": "5381:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 951,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5381:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 954,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "proposalId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 960,
                  "src": "5398:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 953,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5398:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 956,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "support",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 960,
                  "src": "5420:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 955,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5420:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 958,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "votes",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 960,
                  "src": "5436:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 957,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5436:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5377:75:3"
            },
            "src": "5363:90:3"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 961,
              "nodeType": "StructuredDocumentation",
              "src": "5456:62:3",
              "text": "@notice An event emitted when a proposal has been canceled"
            },
            "id": 965,
            "name": "ProposalCanceled",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 964,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 963,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 965,
                  "src": "5543:10:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 962,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5543:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5542:12:3"
            },
            "src": "5520:35:3"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 966,
              "nodeType": "StructuredDocumentation",
              "src": "5558:60:3",
              "text": "@notice An event emitted when a proposal has been queued"
            },
            "id": 972,
            "name": "ProposalQueued",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 971,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 968,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 972,
                  "src": "5641:10:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 967,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5641:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 970,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "eta",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 972,
                  "src": "5653:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 969,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5653:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5640:25:3"
            },
            "src": "5620:46:3"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 973,
              "nodeType": "StructuredDocumentation",
              "src": "5669:62:3",
              "text": "@notice An event emitted when a proposal has been executed"
            },
            "id": 977,
            "name": "ProposalExecuted",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 976,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 975,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 977,
                  "src": "5756:10:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 974,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5756:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5755:12:3"
            },
            "src": "5733:35:3"
          },
          {
            "body": {
              "id": 1004,
              "nodeType": "Block",
              "src": "5963:127:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 992,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 986,
                      "name": "controller",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 822,
                      "src": "5967:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Controller_$51",
                        "typeString": "contract Controller"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 988,
                              "name": "avatar_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 979,
                              "src": "5991:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Avatar_$12",
                                "typeString": "contract Avatar"
                              }
                            },
                            "id": 989,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11,
                            "src": "5991:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_address_$",
                              "typeString": "function () external returns (address)"
                            }
                          },
                          "id": 990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5991:15:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 987,
                        "name": "Controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51,
                        "src": "5980:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Controller_$51_$",
                          "typeString": "type(contract Controller)"
                        }
                      },
                      "id": 991,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5980:27:3",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Controller_$51",
                        "typeString": "contract Controller"
                      }
                    },
                    "src": "5967:40:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Controller_$51",
                      "typeString": "contract Controller"
                    }
                  },
                  "id": 993,
                  "nodeType": "ExpressionStatement",
                  "src": "5967:40:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 998,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 994,
                      "name": "rep",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 825,
                      "src": "6011:3:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ReputationInterface_$105",
                        "typeString": "contract ReputationInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 996,
                          "name": "rep_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 981,
                          "src": "6037:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 995,
                        "name": "ReputationInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 105,
                        "src": "6017:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ReputationInterface_$105_$",
                          "typeString": "type(contract ReputationInterface)"
                        }
                      },
                      "id": 997,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6017:25:3",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ReputationInterface_$105",
                        "typeString": "contract ReputationInterface"
                      }
                    },
                    "src": "6011:31:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReputationInterface_$105",
                      "typeString": "contract ReputationInterface"
                    }
                  },
                  "id": 999,
                  "nodeType": "ExpressionStatement",
                  "src": "6011:31:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1002,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1000,
                      "name": "votingPeriodBlocks",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 728,
                      "src": "6046:18:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1001,
                      "name": "votingPeriodBlocks_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 983,
                      "src": "6067:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6046:40:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1003,
                  "nodeType": "ExpressionStatement",
                  "src": "6046:40:3"
                }
              ]
            },
            "documentation": null,
            "id": 1005,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 984,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 979,
                  "mutability": "mutable",
                  "name": "avatar_",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1005,
                  "src": "5786:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$12",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 978,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12,
                    "src": "5786:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$12",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 981,
                  "mutability": "mutable",
                  "name": "rep_",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1005,
                  "src": "5822:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 980,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5822:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 983,
                  "mutability": "mutable",
                  "name": "votingPeriodBlocks_",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1005,
                  "src": "5860:27:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 982,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5860:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5782:173:3"
            },
            "returnParameters": {
              "id": 985,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5963:0:3"
            },
            "scope": 2301,
            "src": "5771:319:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1198,
              "nodeType": "Block",
              "src": "6608:2035:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1044,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1028,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "6639:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1029,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6639:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 1030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6651:4:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1034,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6674:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1031,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -4,
                                    "src": "6657:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 1032,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "number",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6657:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1033,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7990,
                                "src": "6657:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1035,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6657:19:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1026,
                              "name": "rep",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 825,
                              "src": "6624:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ReputationInterface_$105",
                                "typeString": "contract ReputationInterface"
                              }
                            },
                            "id": 1027,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getVotesAt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 85,
                            "src": "6624:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_bool_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,bool,uint256) view external returns (uint256)"
                            }
                          },
                          "id": 1036,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6624:53:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1041,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6719:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1038,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -4,
                                    "src": "6702:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 1039,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "number",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6702:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1040,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7990,
                                "src": "6702:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1042,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6702:19:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1037,
                            "name": "proposalThreshold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 765,
                            "src": "6684:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 1043,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6684:38:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6624:98:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a70726f706f73653a2070726f706f73657220766f7465732062656c6f772070726f706f73616c207468726573686f6c64",
                        "id": 1045,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6727:73:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9b2b0ca80306099ef62f8972b3271b787834a3477ef373ecb9fa2d532d3c6e00",
                          "typeString": "literal_string \"CompoundVotingMachine::propose: proposer votes below proposal threshold\""
                        },
                        "value": "CompoundVotingMachine::propose: proposer votes below proposal threshold"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9b2b0ca80306099ef62f8972b3271b787834a3477ef373ecb9fa2d532d3c6e00",
                          "typeString": "literal_string \"CompoundVotingMachine::propose: proposer votes below proposal threshold\""
                        }
                      ],
                      "id": 1025,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "6612:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1046,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6612:192:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1047,
                  "nodeType": "ExpressionStatement",
                  "src": "6612:192:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1065,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1059,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1053,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1049,
                                "name": "targets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1009,
                                "src": "6820:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 1050,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6820:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1051,
                                "name": "values",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1012,
                                "src": "6838:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 1052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6838:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6820:31:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1058,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1054,
                                "name": "targets",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1009,
                                "src": "6859:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 1055,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6859:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1056,
                                "name": "signatures",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1015,
                                "src": "6877:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "string memory[] memory"
                                }
                              },
                              "id": 1057,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6877:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6859:35:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6820:74:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1060,
                              "name": "targets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1009,
                              "src": "6902:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 1061,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6902:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1062,
                              "name": "calldatas",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1018,
                              "src": "6920:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                "typeString": "bytes memory[] memory"
                              }
                            },
                            "id": 1063,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6920:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6902:34:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "6820:116:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a70726f706f73653a2070726f706f73616c2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d61746368",
                        "id": 1066,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6941:78:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ea293e96934a39762fe2392c4d4535243cbde472b807874ec86c916dc7c1a822",
                          "typeString": "literal_string \"CompoundVotingMachine::propose: proposal function information arity mismatch\""
                        },
                        "value": "CompoundVotingMachine::propose: proposal function information arity mismatch"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ea293e96934a39762fe2392c4d4535243cbde472b807874ec86c916dc7c1a822",
                          "typeString": "literal_string \"CompoundVotingMachine::propose: proposal function information arity mismatch\""
                        }
                      ],
                      "id": 1048,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "6808:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1067,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6808:215:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1068,
                  "nodeType": "ExpressionStatement",
                  "src": "6808:215:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1073,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1070,
                            "name": "targets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1009,
                            "src": "7039:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 1071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7039:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1072,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7057:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "7039:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a70726f706f73653a206d7573742070726f7669646520616374696f6e73",
                        "id": 1074,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7063:54:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a636739b704b574b4a0bad14d4f29d2e646497f330ae25b3931c01dee8029b4e",
                          "typeString": "literal_string \"CompoundVotingMachine::propose: must provide actions\""
                        },
                        "value": "CompoundVotingMachine::propose: must provide actions"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a636739b704b574b4a0bad14d4f29d2e646497f330ae25b3931c01dee8029b4e",
                          "typeString": "literal_string \"CompoundVotingMachine::propose: must provide actions\""
                        }
                      ],
                      "id": 1069,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "7027:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1075,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7027:94:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1076,
                  "nodeType": "ExpressionStatement",
                  "src": "7027:94:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1082,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1078,
                            "name": "targets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1009,
                            "src": "7137:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 1079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7137:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1080,
                            "name": "proposalMaxOperations",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 774,
                            "src": "7155:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                              "typeString": "function () pure returns (uint256)"
                            }
                          },
                          "id": 1081,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7155:23:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7137:41:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a70726f706f73653a20746f6f206d616e7920616374696f6e73",
                        "id": 1083,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7183:50:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4c7f80aab7b616febdc852427ea6c4ea1fd8a58487e5b2f3ebd88c47dcea8183",
                          "typeString": "literal_string \"CompoundVotingMachine::propose: too many actions\""
                        },
                        "value": "CompoundVotingMachine::propose: too many actions"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4c7f80aab7b616febdc852427ea6c4ea1fd8a58487e5b2f3ebd88c47dcea8183",
                          "typeString": "literal_string \"CompoundVotingMachine::propose: too many actions\""
                        }
                      ],
                      "id": 1077,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "7125:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1084,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7125:112:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1085,
                  "nodeType": "ExpressionStatement",
                  "src": "7125:112:3"
                },
                {
                  "assignments": [
                    1087
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1087,
                      "mutability": "mutable",
                      "name": "latestProposalId",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1198,
                      "src": "7242:24:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1086,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7242:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1092,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1088,
                      "name": "latestProposalIds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 912,
                      "src": "7269:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 1091,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1089,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "7287:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1090,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7287:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7269:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7242:56:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1093,
                      "name": "latestProposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1087,
                      "src": "7307:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1094,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7327:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7307:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1124,
                  "nodeType": "IfStatement",
                  "src": "7303:543:3",
                  "trueBody": {
                    "id": 1123,
                    "nodeType": "Block",
                    "src": "7330:516:3",
                    "statements": [
                      {
                        "assignments": [
                          1097
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1097,
                            "mutability": "mutable",
                            "name": "proposersLatestProposalState",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1123,
                            "src": "7335:42:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$902",
                              "typeString": "enum CompoundVotingMachine.ProposalState"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1096,
                              "name": "ProposalState",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 902,
                              "src": "7335:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$902",
                                "typeString": "enum CompoundVotingMachine.ProposalState"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1101,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1099,
                              "name": "latestProposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1087,
                              "src": "7390:16:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1098,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1689,
                            "src": "7384:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$902_$",
                              "typeString": "function (uint256) view returns (enum CompoundVotingMachine.ProposalState)"
                            }
                          },
                          "id": 1100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7384:23:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$902",
                            "typeString": "enum CompoundVotingMachine.ProposalState"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7335:72:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1111,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ProposalState_$902",
                                  "typeString": "enum CompoundVotingMachine.ProposalState"
                                },
                                "id": 1106,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1103,
                                  "name": "proposersLatestProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1097,
                                  "src": "7425:28:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$902",
                                    "typeString": "enum CompoundVotingMachine.ProposalState"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1104,
                                    "name": "ProposalState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 902,
                                    "src": "7457:13:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                      "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                                    }
                                  },
                                  "id": 1105,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "Active",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7457:20:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$902",
                                    "typeString": "enum CompoundVotingMachine.ProposalState"
                                  }
                                },
                                "src": "7425:52:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ProposalState_$902",
                                  "typeString": "enum CompoundVotingMachine.ProposalState"
                                },
                                "id": 1110,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1107,
                                  "name": "proposersLatestProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1097,
                                  "src": "7486:28:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$902",
                                    "typeString": "enum CompoundVotingMachine.ProposalState"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1108,
                                    "name": "ProposalState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 902,
                                    "src": "7523:13:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                      "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                                    }
                                  },
                                  "id": 1109,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "ActiveTimelock",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7523:28:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$902",
                                    "typeString": "enum CompoundVotingMachine.ProposalState"
                                  }
                                },
                                "src": "7486:65:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "7425:126:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a70726f706f73653a206f6e65206c6976652070726f706f73616c207065722070726f706f7365722c20666f756e6420616e20616c7265616479206163746976652070726f706f73616c",
                              "id": 1112,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7557:98:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_27825fe0193b582a8b83985f7770fd4173284ad2001b98c550388fe256abf350",
                                "typeString": "literal_string \"CompoundVotingMachine::propose: one live proposal per proposer, found an already active proposal\""
                              },
                              "value": "CompoundVotingMachine::propose: one live proposal per proposer, found an already active proposal"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_27825fe0193b582a8b83985f7770fd4173284ad2001b98c550388fe256abf350",
                                "typeString": "literal_string \"CompoundVotingMachine::propose: one live proposal per proposer, found an already active proposal\""
                              }
                            ],
                            "id": 1102,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7412:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7412:248:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1114,
                        "nodeType": "ExpressionStatement",
                        "src": "7412:248:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalState_$902",
                                "typeString": "enum CompoundVotingMachine.ProposalState"
                              },
                              "id": 1119,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1116,
                                "name": "proposersLatestProposalState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1097,
                                "src": "7678:28:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$902",
                                  "typeString": "enum CompoundVotingMachine.ProposalState"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1117,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 902,
                                  "src": "7710:13:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                    "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                                  }
                                },
                                "id": 1118,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Pending",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7710:21:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$902",
                                  "typeString": "enum CompoundVotingMachine.ProposalState"
                                }
                              },
                              "src": "7678:53:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a70726f706f73653a206f6e65206c6976652070726f706f73616c207065722070726f706f7365722c20666f756e6420616e20616c72656164792070656e64696e672070726f706f73616c",
                              "id": 1120,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7737:99:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ebfc16e0eb0eb5aa072ca281b12ce58284d7add9528bb265de9eaf4cd0d82ab3",
                                "typeString": "literal_string \"CompoundVotingMachine::propose: one live proposal per proposer, found an already pending proposal\""
                              },
                              "value": "CompoundVotingMachine::propose: one live proposal per proposer, found an already pending proposal"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ebfc16e0eb0eb5aa072ca281b12ce58284d7add9528bb265de9eaf4cd0d82ab3",
                                "typeString": "literal_string \"CompoundVotingMachine::propose: one live proposal per proposer, found an already pending proposal\""
                              }
                            ],
                            "id": 1115,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7665:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7665:176:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1122,
                        "nodeType": "ExpressionStatement",
                        "src": "7665:176:3"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    1126
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1126,
                      "mutability": "mutable",
                      "name": "startBlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1198,
                      "src": "7850:18:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1125,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7850:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1133,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 1130,
                          "name": "votingDelay",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 783,
                          "src": "7888:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                            "typeString": "function () pure returns (uint256)"
                          }
                        },
                        "id": 1131,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7888:13:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1127,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -4,
                          "src": "7871:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 1128,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "number",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7871:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1129,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7973,
                      "src": "7871:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 1132,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7871:31:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7850:52:3"
                },
                {
                  "assignments": [
                    1135
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1135,
                      "mutability": "mutable",
                      "name": "endBlock",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1198,
                      "src": "7906:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1134,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7906:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1141,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 1138,
                          "name": "votingPeriod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 792,
                          "src": "7940:12:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 1139,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7940:14:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1136,
                        "name": "startBlock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1126,
                        "src": "7925:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1137,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7973,
                      "src": "7925:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 1140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7925:30:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7906:49:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "7960:15:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 1142,
                      "name": "proposalCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 831,
                      "src": "7960:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1144,
                  "nodeType": "ExpressionStatement",
                  "src": "7960:15:3"
                },
                {
                  "assignments": [
                    1146
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1146,
                      "mutability": "mutable",
                      "name": "newProposal",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1198,
                      "src": "7979:27:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_memory_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1145,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 883,
                        "src": "7979:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1165,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1148,
                        "name": "proposalCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 831,
                        "src": "8031:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1149,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "8060:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8060:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1151,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8081:1:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 1152,
                        "name": "targets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1009,
                        "src": "8097:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1153,
                        "name": "values",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1012,
                        "src": "8118:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1154,
                        "name": "signatures",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1015,
                        "src": "8142:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                          "typeString": "string memory[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1155,
                        "name": "calldatas",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1018,
                        "src": "8169:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes memory[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1156,
                        "name": "startBlock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1126,
                        "src": "8196:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1157,
                        "name": "endBlock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1135,
                        "src": "8222:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1158,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8246:1:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1159,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8267:1:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 1160,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8284:5:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 1161,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8305:5:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 1162,
                          "name": "quorumVotes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 745,
                          "src": "8332:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 1163,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8332:13:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                          "typeString": "string memory[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes memory[] memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1147,
                      "name": "Proposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 883,
                      "src": "8012:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Proposal_$883_storage_ptr_$",
                        "typeString": "type(struct CompoundVotingMachine.Proposal storage pointer)"
                      }
                    },
                    "id": 1164,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "id",
                      "proposer",
                      "eta",
                      "targets",
                      "values",
                      "signatures",
                      "calldatas",
                      "startBlock",
                      "endBlock",
                      "forVotes",
                      "againstVotes",
                      "canceled",
                      "executed",
                      "quoromRequired"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "8012:339:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$883_memory_ptr",
                      "typeString": "struct CompoundVotingMachine.Proposal memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7979:372:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1166,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 907,
                        "src": "8356:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                          "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                        }
                      },
                      "id": 1169,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1167,
                          "name": "newProposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1146,
                          "src": "8366:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_memory_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal memory"
                          }
                        },
                        "id": 1168,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "id",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 834,
                        "src": "8366:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8356:25:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_storage",
                        "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1170,
                      "name": "newProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1146,
                      "src": "8384:11:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_memory_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal memory"
                      }
                    },
                    "src": "8356:39:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$883_storage",
                      "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                    }
                  },
                  "id": 1172,
                  "nodeType": "ExpressionStatement",
                  "src": "8356:39:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1179,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1173,
                        "name": "latestProposalIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 912,
                        "src": "8399:17:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 1176,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1174,
                          "name": "newProposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1146,
                          "src": "8417:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_memory_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal memory"
                          }
                        },
                        "id": 1175,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "proposer",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 837,
                        "src": "8417:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8399:39:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1177,
                        "name": "newProposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1146,
                        "src": "8441:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_memory_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal memory"
                        }
                      },
                      "id": 1178,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "id",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 834,
                      "src": "8441:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8399:56:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1180,
                  "nodeType": "ExpressionStatement",
                  "src": "8399:56:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1182,
                          "name": "newProposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1146,
                          "src": "8485:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_memory_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal memory"
                          }
                        },
                        "id": 1183,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "id",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 834,
                        "src": "8485:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1184,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "8504:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1185,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8504:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1186,
                        "name": "targets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1009,
                        "src": "8519:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1187,
                        "name": "values",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1012,
                        "src": "8531:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1188,
                        "name": "signatures",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1015,
                        "src": "8542:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                          "typeString": "string memory[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1189,
                        "name": "calldatas",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1018,
                        "src": "8557:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes memory[] memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1190,
                        "name": "startBlock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1126,
                        "src": "8571:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1191,
                        "name": "endBlock",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1135,
                        "src": "8586:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1192,
                        "name": "description",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1020,
                        "src": "8599:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                          "typeString": "string memory[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes memory[] memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 1181,
                      "name": "ProposalCreated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 949,
                      "src": "8465:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,address,address[] memory,uint256[] memory,string memory[] memory,bytes memory[] memory,uint256,uint256,string memory)"
                      }
                    },
                    "id": 1193,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8465:149:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1194,
                  "nodeType": "EmitStatement",
                  "src": "8460:154:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1195,
                      "name": "newProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1146,
                      "src": "8625:11:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_memory_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal memory"
                      }
                    },
                    "id": 1196,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "id",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 834,
                    "src": "8625:14:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1024,
                  "id": 1197,
                  "nodeType": "Return",
                  "src": "8618:21:3"
                }
              ]
            },
            "documentation": {
              "id": 1006,
              "nodeType": "StructuredDocumentation",
              "src": "6093:326:3",
              "text": "@notice make a proposal to be voted on\n @param targets list of contracts to be excuted on\n @param values list of eth value to be used in each contract call\n @param signatures the list of functions to execute\n @param calldatas the list of parameters to pass to each function\n @return uint256 proposal id"
            },
            "functionSelector": "da95691a",
            "id": 1199,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "propose",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1021,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1009,
                  "mutability": "mutable",
                  "name": "targets",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1199,
                  "src": "6441:24:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1007,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "6441:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 1008,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6441:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1012,
                  "mutability": "mutable",
                  "name": "values",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1199,
                  "src": "6469:23:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1010,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "6469:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1011,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6469:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1015,
                  "mutability": "mutable",
                  "name": "signatures",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1199,
                  "src": "6496:26:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1013,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "6496:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 1014,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6496:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1018,
                  "mutability": "mutable",
                  "name": "calldatas",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1199,
                  "src": "6526:24:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                    "typeString": "bytes[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1016,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "6526:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 1017,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6526:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                      "typeString": "bytes[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1020,
                  "mutability": "mutable",
                  "name": "description",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1199,
                  "src": "6554:25:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1019,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6554:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6437:145:3"
            },
            "returnParameters": {
              "id": 1024,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1023,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1199,
                  "src": "6599:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1022,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6599:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6598:9:3"
            },
            "scope": 2301,
            "src": "6421:2222:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1270,
              "nodeType": "Block",
              "src": "8984:601:3",
              "statements": [
                {
                  "assignments": [
                    1208
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1208,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1270,
                      "src": "8988:25:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1207,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 883,
                        "src": "8988:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1212,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1209,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 907,
                      "src": "9016:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                        "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                      }
                    },
                    "id": 1211,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1210,
                      "name": "proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1202,
                      "src": "9026:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9016:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$883_storage",
                      "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8988:49:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1216,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1213,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1208,
                        "src": "9120:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                        }
                      },
                      "id": 1214,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "eta",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 840,
                      "src": "9120:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1215,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9136:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9120:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "id": 1229,
                      "name": "hasVoteChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1204,
                      "src": "9306:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "id": 1261,
                      "nodeType": "Block",
                      "src": "9517:16:3",
                      "statements": [
                        {
                          "expression": null,
                          "functionReturnParameters": 1206,
                          "id": 1260,
                          "nodeType": "Return",
                          "src": "9522:7:3"
                        }
                      ]
                    },
                    "id": 1262,
                    "nodeType": "IfStatement",
                    "src": "9302:231:3",
                    "trueBody": {
                      "id": 1259,
                      "nodeType": "Block",
                      "src": "9322:189:3",
                      "statements": [
                        {
                          "assignments": [
                            1231
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1231,
                              "mutability": "mutable",
                              "name": "timeLeft",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 1259,
                              "src": "9327:16:3",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1230,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "9327:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 1238,
                          "initialValue": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1235,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "9363:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 1236,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "9363:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1232,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1208,
                                  "src": "9346:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                    "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                  }
                                },
                                "id": 1233,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "eta",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 840,
                                "src": "9346:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1234,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7990,
                              "src": "9346:16:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1237,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9346:33:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "9327:52:3"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1257,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1239,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1208,
                                "src": "9384:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                  "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                }
                              },
                              "id": 1241,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "eta",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 840,
                              "src": "9384:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "condition": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1248,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 1245,
                                      "name": "timeLeft",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1231,
                                      "src": "9421:8:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 1246,
                                        "name": "gameChangerPeriod",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 810,
                                        "src": "9432:17:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                          "typeString": "function () pure returns (uint256)"
                                        }
                                      },
                                      "id": 1247,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9432:19:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9421:30:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1253,
                                        "name": "timeLeft",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1231,
                                        "src": "9492:8:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 1250,
                                          "name": "gameChangerPeriod",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 810,
                                          "src": "9468:17:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                            "typeString": "function () pure returns (uint256)"
                                          }
                                        },
                                        "id": 1251,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9468:19:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 1252,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7990,
                                      "src": "9468:23:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 1254,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9468:33:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1255,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "9421:80:3",
                                  "trueExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1249,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9459:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1242,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1208,
                                    "src": "9399:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                      "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                    }
                                  },
                                  "id": 1243,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "eta",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 840,
                                  "src": "9399:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1244,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7973,
                                "src": "9399:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1256,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9399:107:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9384:122:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1258,
                          "nodeType": "ExpressionStatement",
                          "src": "9384:122:3"
                        }
                      ]
                    }
                  },
                  "id": 1263,
                  "nodeType": "IfStatement",
                  "src": "9116:417:3",
                  "trueBody": {
                    "id": 1228,
                    "nodeType": "Block",
                    "src": "9139:59:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1217,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1208,
                              "src": "9144:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                              }
                            },
                            "id": 1219,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "eta",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 840,
                            "src": "9144:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 1223,
                                  "name": "queuePeriod",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 801,
                                  "src": "9179:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                    "typeString": "function () pure returns (uint256)"
                                  }
                                },
                                "id": 1224,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9179:13:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1220,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "9159:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 1221,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "9159:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1222,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7973,
                              "src": "9159:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1225,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9159:34:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9144:49:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1227,
                        "nodeType": "ExpressionStatement",
                        "src": "9144:49:3"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1265,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1202,
                        "src": "9556:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1266,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1208,
                          "src": "9568:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 1267,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "eta",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 840,
                        "src": "9568:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1264,
                      "name": "ProposalQueued",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 972,
                      "src": "9541:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256)"
                      }
                    },
                    "id": 1268,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9541:40:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1269,
                  "nodeType": "EmitStatement",
                  "src": "9536:45:3"
                }
              ]
            },
            "documentation": {
              "id": 1200,
              "nodeType": "StructuredDocumentation",
              "src": "8646:266:3",
              "text": "@notice helper to set the effective time of a proposal that passed quorom\n @dev also extends the ETA in case of a game changer in vote decision\n @param proposalId the id of the proposal\n @param hasVoteChanged did the current vote changed the decision"
            },
            "id": 1271,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_updateETA",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1205,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1202,
                  "mutability": "mutable",
                  "name": "proposalId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1271,
                  "src": "8934:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1201,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8934:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1204,
                  "mutability": "mutable",
                  "name": "hasVoteChanged",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1271,
                  "src": "8954:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1203,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8954:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8933:41:3"
            },
            "returnParameters": {
              "id": 1206,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8984:0:3"
            },
            "scope": 2301,
            "src": "8914:671:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1349,
              "nodeType": "Block",
              "src": "9751:638:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_ProposalState_$902",
                          "typeString": "enum CompoundVotingMachine.ProposalState"
                        },
                        "id": 1283,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1279,
                              "name": "proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1274,
                              "src": "9773:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1278,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1689,
                            "src": "9767:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$902_$",
                              "typeString": "function (uint256) view returns (enum CompoundVotingMachine.ProposalState)"
                            }
                          },
                          "id": 1280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9767:17:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$902",
                            "typeString": "enum CompoundVotingMachine.ProposalState"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1281,
                            "name": "ProposalState",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 902,
                            "src": "9788:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                              "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                            }
                          },
                          "id": 1282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Succeeded",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9788:23:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$902",
                            "typeString": "enum CompoundVotingMachine.ProposalState"
                          }
                        },
                        "src": "9767:44:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a657865637574653a2070726f706f73616c2063616e206f6e6c7920626520657865637574656420696620697420697320737563636565646564",
                        "id": 1284,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9816:82:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_391cf009723a5124e555741d4d3ea8bb007dac7eba574ae6912190fe267acd5f",
                          "typeString": "literal_string \"CompoundVotingMachine::execute: proposal can only be executed if it is succeeded\""
                        },
                        "value": "CompoundVotingMachine::execute: proposal can only be executed if it is succeeded"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_391cf009723a5124e555741d4d3ea8bb007dac7eba574ae6912190fe267acd5f",
                          "typeString": "literal_string \"CompoundVotingMachine::execute: proposal can only be executed if it is succeeded\""
                        }
                      ],
                      "id": 1277,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "9755:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1285,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9755:147:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1286,
                  "nodeType": "ExpressionStatement",
                  "src": "9755:147:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1294,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1288,
                              "name": "proposals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 907,
                              "src": "9918:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                                "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                              }
                            },
                            "id": 1290,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1289,
                              "name": "proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1274,
                              "src": "9928:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9918:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$883_storage",
                              "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                            }
                          },
                          "id": 1291,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "eta",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 840,
                          "src": "9918:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1292,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "9947:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 1293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "9947:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9918:44:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a657865637574653a2070726f706f73616c2063616e206f6e6c79206265206578656375746564206966206e6f2067616d65206368616e67657273",
                        "id": 1295,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9967:83:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a270aeaf5aefac129d241479d94f30f070bc20853c91f27ece0b5d82ab90156e",
                          "typeString": "literal_string \"CompoundVotingMachine::execute: proposal can only be executed if no game changers\""
                        },
                        "value": "CompoundVotingMachine::execute: proposal can only be executed if no game changers"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a270aeaf5aefac129d241479d94f30f070bc20853c91f27ece0b5d82ab90156e",
                          "typeString": "literal_string \"CompoundVotingMachine::execute: proposal can only be executed if no game changers\""
                        }
                      ],
                      "id": 1287,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "9906:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1296,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9906:148:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1297,
                  "nodeType": "ExpressionStatement",
                  "src": "9906:148:3"
                },
                {
                  "assignments": [
                    1299
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1299,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1349,
                      "src": "10058:25:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1298,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 883,
                        "src": "10058:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1303,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1300,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 907,
                      "src": "10086:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                        "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                      }
                    },
                    "id": 1302,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1301,
                      "name": "proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1274,
                      "src": "10096:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "10086:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$883_storage",
                      "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10058:49:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1308,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1304,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1299,
                        "src": "10111:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                        }
                      },
                      "id": 1306,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "executed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 874,
                      "src": "10111:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1307,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10131:4:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "10111:24:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1309,
                  "nodeType": "ExpressionStatement",
                  "src": "10111:24:3"
                },
                {
                  "body": {
                    "id": 1343,
                    "nodeType": "Block",
                    "src": "10193:156:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1323,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1299,
                                  "src": "10223:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                    "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                  }
                                },
                                "id": 1324,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "targets",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 844,
                                "src": "10223:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 1326,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1325,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1311,
                                "src": "10240:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10223:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1327,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1299,
                                  "src": "10248:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                    "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                  }
                                },
                                "id": 1328,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "values",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 848,
                                "src": "10248:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                  "typeString": "uint256[] storage ref"
                                }
                              },
                              "id": 1330,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1329,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1311,
                                "src": "10264:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10248:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1331,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1299,
                                  "src": "10272:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                    "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                  }
                                },
                                "id": 1332,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "signatures",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 852,
                                "src": "10272:19:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                                  "typeString": "string storage ref[] storage ref"
                                }
                              },
                              "id": 1334,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1333,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1311,
                                "src": "10292:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10272:22:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage",
                                "typeString": "string storage ref"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1335,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1299,
                                  "src": "10300:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                    "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                  }
                                },
                                "id": 1336,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "calldatas",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 856,
                                "src": "10300:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
                                  "typeString": "bytes storage ref[] storage ref"
                                }
                              },
                              "id": 1338,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1337,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1311,
                                "src": "10319:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10300:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1339,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1299,
                                "src": "10327:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                  "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                }
                              },
                              "id": 1340,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "eta",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 840,
                              "src": "10327:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_string_storage",
                                "typeString": "string storage ref"
                              },
                              {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1322,
                            "name": "_executeTransaction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1460,
                            "src": "10198:19:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,uint256,string memory,bytes memory,uint256) returns (bytes memory)"
                            }
                          },
                          "id": 1341,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10198:146:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 1342,
                        "nodeType": "ExpressionStatement",
                        "src": "10198:146:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1318,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1314,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1311,
                      "src": "10159:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1315,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1299,
                          "src": "10163:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 1316,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "targets",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 844,
                        "src": "10163:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 1317,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "10163:23:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10159:27:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1344,
                  "initializationExpression": {
                    "assignments": [
                      1311
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1311,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1344,
                        "src": "10144:9:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1310,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10144:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1313,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1312,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10156:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "10144:13:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1320,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "10188:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1319,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1311,
                        "src": "10188:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1321,
                    "nodeType": "ExpressionStatement",
                    "src": "10188:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "10139:210:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1346,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1274,
                        "src": "10374:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1345,
                      "name": "ProposalExecuted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 977,
                      "src": "10357:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10357:28:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1348,
                  "nodeType": "EmitStatement",
                  "src": "10352:33:3"
                }
              ]
            },
            "documentation": {
              "id": 1272,
              "nodeType": "StructuredDocumentation",
              "src": "9588:109:3",
              "text": "@notice execute the proposal list of transactions\n @dev anyone can call this once its ETA has arrived"
            },
            "functionSelector": "fe0d94c1",
            "id": 1350,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "execute",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1275,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1274,
                  "mutability": "mutable",
                  "name": "proposalId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1350,
                  "src": "9716:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1273,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9716:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9715:20:3"
            },
            "returnParameters": {
              "id": 1276,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9751:0:3"
            },
            "scope": 2301,
            "src": "9699:690:3",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1459,
              "nodeType": "Block",
              "src": "10709:698:3",
              "statements": [
                {
                  "assignments": [
                    1367
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1367,
                      "mutability": "mutable",
                      "name": "callData",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1459,
                      "src": "10713:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1366,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "10713:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1368,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10713:21:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1375,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1371,
                            "name": "signature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1357,
                            "src": "10749:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 1370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10743:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": {
                            "id": 1369,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "10743:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 1372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10743:16:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 1373,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "10743:23:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1374,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10770:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "10743:28:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 1397,
                    "nodeType": "Block",
                    "src": "10804:93:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1381,
                            "name": "callData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1367,
                            "src": "10809:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1389,
                                            "name": "signature",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1357,
                                            "src": "10865:9:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          ],
                                          "id": 1388,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "10859:5:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": {
                                            "id": 1387,
                                            "name": "bytes",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "10859:5:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 1390,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10859:16:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 1386,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "10849:9:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 1391,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10849:27:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 1385,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10842:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes4_$",
                                    "typeString": "type(bytes4)"
                                  },
                                  "typeName": {
                                    "id": 1384,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10842:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1392,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10842:35:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1393,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1359,
                                "src": "10883:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1382,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "10820:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1383,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10820:16:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 1394,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10820:72:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "10809:83:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 1396,
                        "nodeType": "ExpressionStatement",
                        "src": "10809:83:3"
                      }
                    ]
                  },
                  "id": 1398,
                  "nodeType": "IfStatement",
                  "src": "10739:158:3",
                  "trueBody": {
                    "id": 1380,
                    "nodeType": "Block",
                    "src": "10773:25:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1376,
                            "name": "callData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1367,
                            "src": "10778:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1377,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1359,
                            "src": "10789:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "10778:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 1379,
                        "nodeType": "ExpressionStatement",
                        "src": "10778:15:3"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    1400
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1400,
                      "mutability": "mutable",
                      "name": "ok",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1459,
                      "src": "10901:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1399,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "10901:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1401,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10901:7:3"
                },
                {
                  "assignments": [
                    1403
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1403,
                      "mutability": "mutable",
                      "name": "result",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1459,
                      "src": "10912:19:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1402,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "10912:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1404,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10912:19:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1410,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1405,
                      "name": "target",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1353,
                      "src": "10940:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1408,
                          "name": "controller",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 822,
                          "src": "10958:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Controller_$51",
                            "typeString": "contract Controller"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_Controller_$51",
                            "typeString": "contract Controller"
                          }
                        ],
                        "id": 1407,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "10950:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 1406,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10950:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 1409,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10950:19:3",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "10940:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 1450,
                    "nodeType": "Block",
                    "src": "11039:213:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1433,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1355,
                              "src": "11091:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1427,
                                          "name": "controller",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 822,
                                          "src": "11060:10:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_Controller_$51",
                                            "typeString": "contract Controller"
                                          }
                                        },
                                        "id": 1428,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "avatar",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 32,
                                        "src": "11060:17:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_Avatar_$12_$",
                                          "typeString": "function () view external returns (contract Avatar)"
                                        }
                                      },
                                      "id": 1429,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11060:19:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_Avatar_$12",
                                        "typeString": "contract Avatar"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_Avatar_$12",
                                        "typeString": "contract Avatar"
                                      }
                                    ],
                                    "id": 1426,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "11052:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 1425,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "11052:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 1430,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11052:28:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1424,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11044:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_payable_$",
                                  "typeString": "type(address payable)"
                                },
                                "typeName": {
                                  "id": 1423,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11044:8:3",
                                  "stateMutability": "payable",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1431,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11044:37:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "id": 1432,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "11044:46:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 1434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11044:53:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1435,
                        "nodeType": "ExpressionStatement",
                        "src": "11044:53:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 1436,
                                "name": "ok",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1400,
                                "src": "11144:2:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1437,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1403,
                                "src": "11148:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "id": 1438,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "11143:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "tuple(bool,bytes memory)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1441,
                                "name": "target",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1353,
                                "src": "11186:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1442,
                                "name": "callData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1367,
                                "src": "11198:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1443,
                                    "name": "controller",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 822,
                                    "src": "11212:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Controller_$51",
                                      "typeString": "contract Controller"
                                    }
                                  },
                                  "id": 1444,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "avatar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 32,
                                  "src": "11212:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_Avatar_$12_$",
                                    "typeString": "function () view external returns (contract Avatar)"
                                  }
                                },
                                "id": 1445,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11212:19:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Avatar_$12",
                                  "typeString": "contract Avatar"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1446,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1355,
                                "src": "11237:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_contract$_Avatar_$12",
                                  "typeString": "contract Avatar"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1439,
                                "name": "controller",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 822,
                                "src": "11158:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Controller_$51",
                                  "typeString": "contract Controller"
                                }
                              },
                              "id": 1440,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "genericCall",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 27,
                              "src": "11158:22:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_contract$_Avatar_$12_$_t_uint256_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (address,bytes memory,contract Avatar,uint256) external returns (bool,bytes memory)"
                              }
                            },
                            "id": 1447,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11158:89:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "tuple(bool,bytes memory)"
                            }
                          },
                          "src": "11143:104:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1449,
                        "nodeType": "ExpressionStatement",
                        "src": "11143:104:3"
                      }
                    ]
                  },
                  "id": 1451,
                  "nodeType": "IfStatement",
                  "src": "10936:316:3",
                  "trueBody": {
                    "id": 1422,
                    "nodeType": "Block",
                    "src": "10971:62:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1420,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 1411,
                                "name": "ok",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1400,
                                "src": "10977:2:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1412,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1403,
                                "src": "10981:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "id": 1413,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "10976:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "tuple(bool,bytes memory)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1418,
                                "name": "callData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1367,
                                "src": "11019:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1414,
                                  "name": "target",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1353,
                                  "src": "10991:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 1415,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "call",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "10991:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                }
                              },
                              "id": 1417,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "names": [
                                "value"
                              ],
                              "nodeType": "FunctionCallOptions",
                              "options": [
                                {
                                  "argumentTypes": null,
                                  "id": 1416,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1355,
                                  "src": "11011:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "src": "10991:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 1419,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10991:37:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "tuple(bool,bytes memory)"
                            }
                          },
                          "src": "10976:52:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1421,
                        "nodeType": "ExpressionStatement",
                        "src": "10976:52:3"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1453,
                        "name": "ok",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1400,
                        "src": "11267:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e",
                        "id": 1454,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11274:76:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_60b10abb74f539bad76545e55d7bc2c7ba134e1722f86751781aeaf74418505a",
                          "typeString": "literal_string \"CompoundVotingMachine::executeTransaction: Transaction execution reverted.\""
                        },
                        "value": "CompoundVotingMachine::executeTransaction: Transaction execution reverted."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_60b10abb74f539bad76545e55d7bc2c7ba134e1722f86751781aeaf74418505a",
                          "typeString": "literal_string \"CompoundVotingMachine::executeTransaction: Transaction execution reverted.\""
                        }
                      ],
                      "id": 1452,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "11255:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1455,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11255:99:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1456,
                  "nodeType": "ExpressionStatement",
                  "src": "11255:99:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1457,
                    "name": "result",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1403,
                    "src": "11397:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 1365,
                  "id": 1458,
                  "nodeType": "Return",
                  "src": "11390:13:3"
                }
              ]
            },
            "documentation": {
              "id": 1351,
              "nodeType": "StructuredDocumentation",
              "src": "10392:153:3",
              "text": "@notice internal helper to execute a single transaction of a proposal\n @dev special execution is done if target is a method in the DAO controller"
            },
            "id": 1460,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_executeTransaction",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1362,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1353,
                  "mutability": "mutable",
                  "name": "target",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1460,
                  "src": "10579:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1352,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10579:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1355,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1460,
                  "src": "10597:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1354,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10597:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1357,
                  "mutability": "mutable",
                  "name": "signature",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1460,
                  "src": "10614:23:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1356,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "10614:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1359,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1460,
                  "src": "10641:17:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1358,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "10641:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1361,
                  "mutability": "mutable",
                  "name": "eta",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1460,
                  "src": "10662:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1360,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10662:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10575:101:3"
            },
            "returnParameters": {
              "id": 1365,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1364,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1460,
                  "src": "10695:12:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1363,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "10695:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10694:14:3"
            },
            "scope": 2301,
            "src": "10547:860:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1516,
              "nodeType": "Block",
              "src": "11761:475:3",
              "statements": [
                {
                  "assignments": [
                    1467
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1467,
                      "mutability": "mutable",
                      "name": "state",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1516,
                      "src": "11765:19:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$902",
                        "typeString": "enum CompoundVotingMachine.ProposalState"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1466,
                        "name": "ProposalState",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 902,
                        "src": "11765:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ProposalState_$902",
                          "typeString": "enum CompoundVotingMachine.ProposalState"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1471,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1469,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1463,
                        "src": "11793:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1468,
                      "name": "state",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1689,
                      "src": "11787:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$902_$",
                        "typeString": "function (uint256) view returns (enum CompoundVotingMachine.ProposalState)"
                      }
                    },
                    "id": 1470,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11787:17:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ProposalState_$902",
                      "typeString": "enum CompoundVotingMachine.ProposalState"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11765:39:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_ProposalState_$902",
                          "typeString": "enum CompoundVotingMachine.ProposalState"
                        },
                        "id": 1476,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1473,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1467,
                          "src": "11820:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$902",
                            "typeString": "enum CompoundVotingMachine.ProposalState"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1474,
                            "name": "ProposalState",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 902,
                            "src": "11829:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                              "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                            }
                          },
                          "id": 1475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Executed",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "11829:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$902",
                            "typeString": "enum CompoundVotingMachine.ProposalState"
                          }
                        },
                        "src": "11820:31:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a63616e63656c3a2063616e6e6f742063616e63656c2065786563757465642070726f706f73616c",
                        "id": 1477,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11856:64:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_dec57154dec3e174e12a15bf3b3200fa8cbbfa553c217429fed3a0911ace016b",
                          "typeString": "literal_string \"CompoundVotingMachine::cancel: cannot cancel executed proposal\""
                        },
                        "value": "CompoundVotingMachine::cancel: cannot cancel executed proposal"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_dec57154dec3e174e12a15bf3b3200fa8cbbfa553c217429fed3a0911ace016b",
                          "typeString": "literal_string \"CompoundVotingMachine::cancel: cannot cancel executed proposal\""
                        }
                      ],
                      "id": 1472,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "11808:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1478,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11808:116:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1479,
                  "nodeType": "ExpressionStatement",
                  "src": "11808:116:3"
                },
                {
                  "assignments": [
                    1481
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1481,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1516,
                      "src": "11929:25:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1480,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 883,
                        "src": "11929:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1485,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1482,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 907,
                      "src": "11957:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                        "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                      }
                    },
                    "id": 1484,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1483,
                      "name": "proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1463,
                      "src": "11967:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "11957:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$883_storage",
                      "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11929:49:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1502,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1489,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1481,
                                "src": "12009:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                  "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                }
                              },
                              "id": 1490,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "proposer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 837,
                              "src": "12009:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 1491,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12028:4:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1495,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12051:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1492,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -4,
                                    "src": "12034:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 1493,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "number",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12034:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1494,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7990,
                                "src": "12034:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12034:19:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1487,
                              "name": "rep",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 825,
                              "src": "11994:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ReputationInterface_$105",
                                "typeString": "contract ReputationInterface"
                              }
                            },
                            "id": 1488,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getVotesAt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 85,
                            "src": "11994:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_bool_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,bool,uint256) view external returns (uint256)"
                            }
                          },
                          "id": 1497,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11994:60:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1499,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1481,
                                "src": "12079:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                  "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                }
                              },
                              "id": 1500,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "startBlock",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 859,
                              "src": "12079:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1498,
                            "name": "proposalThreshold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 765,
                            "src": "12061:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 1501,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12061:38:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11994:105:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a63616e63656c3a2070726f706f7365722061626f7665207468726573686f6c64",
                        "id": 1503,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12104:57:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_114f1b1da925eec5869e86d294d73d06733c7cc944f3f7b3d0a90fd06b9b0d14",
                          "typeString": "literal_string \"CompoundVotingMachine::cancel: proposer above threshold\""
                        },
                        "value": "CompoundVotingMachine::cancel: proposer above threshold"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_114f1b1da925eec5869e86d294d73d06733c7cc944f3f7b3d0a90fd06b9b0d14",
                          "typeString": "literal_string \"CompoundVotingMachine::cancel: proposer above threshold\""
                        }
                      ],
                      "id": 1486,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "11982:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11982:183:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1505,
                  "nodeType": "ExpressionStatement",
                  "src": "11982:183:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1510,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1506,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1481,
                        "src": "12170:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                        }
                      },
                      "id": 1508,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "canceled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 871,
                      "src": "12170:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1509,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12190:4:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "12170:24:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1511,
                  "nodeType": "ExpressionStatement",
                  "src": "12170:24:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1513,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1463,
                        "src": "12221:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1512,
                      "name": "ProposalCanceled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 965,
                      "src": "12204:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1514,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12204:28:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1515,
                  "nodeType": "EmitStatement",
                  "src": "12199:33:3"
                }
              ]
            },
            "documentation": {
              "id": 1461,
              "nodeType": "StructuredDocumentation",
              "src": "11410:306:3",
              "text": "@notice cancel a proposal in case proposer no longer holds the votes that were required to propose\n @dev could be cheating trying to bypass the single proposal per address by delegating to another address\n or when delegators do not concur with the proposal done in their name, they can withdraw"
            },
            "functionSelector": "40e58ee5",
            "id": 1517,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "cancel",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1464,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1463,
                  "mutability": "mutable",
                  "name": "proposalId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1517,
                  "src": "11734:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1462,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11734:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11733:20:3"
            },
            "returnParameters": {
              "id": 1465,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11761:0:3"
            },
            "scope": 2301,
            "src": "11718:518:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1551,
              "nodeType": "Block",
              "src": "12482:109:3",
              "statements": [
                {
                  "assignments": [
                    1536
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1536,
                      "mutability": "mutable",
                      "name": "p",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1551,
                      "src": "12486:18:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1535,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 883,
                        "src": "12486:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1540,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1537,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 907,
                      "src": "12507:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                        "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                      }
                    },
                    "id": 1539,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1538,
                      "name": "proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1520,
                      "src": "12517:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "12507:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$883_storage",
                      "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12486:42:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1541,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1536,
                          "src": "12540:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 1542,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "targets",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 844,
                        "src": "12540:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1543,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1536,
                          "src": "12551:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 1544,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "values",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 848,
                        "src": "12551:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1545,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1536,
                          "src": "12561:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 1546,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "signatures",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 852,
                        "src": "12561:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_string_storage_$dyn_storage",
                          "typeString": "string storage ref[] storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1547,
                          "name": "p",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1536,
                          "src": "12575:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 1548,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "calldatas",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 856,
                        "src": "12575:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
                          "typeString": "bytes storage ref[] storage ref"
                        }
                      }
                    ],
                    "id": 1549,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "12539:48:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_array$_t_address_$dyn_storage_$_t_array$_t_uint256_$dyn_storage_$_t_array$_t_string_storage_$dyn_storage_$_t_array$_t_bytes_storage_$dyn_storage_$",
                      "typeString": "tuple(address[] storage ref,uint256[] storage ref,string storage ref[] storage ref,bytes storage ref[] storage ref)"
                    }
                  },
                  "functionReturnParameters": 1534,
                  "id": 1550,
                  "nodeType": "Return",
                  "src": "12532:55:3"
                }
              ]
            },
            "documentation": {
              "id": 1518,
              "nodeType": "StructuredDocumentation",
              "src": "12239:52:3",
              "text": "@notice get the actions to be done in a proposal"
            },
            "functionSelector": "328dd982",
            "id": 1552,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getActions",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1521,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1520,
                  "mutability": "mutable",
                  "name": "proposalId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1552,
                  "src": "12313:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1519,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12313:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12312:20:3"
            },
            "returnParameters": {
              "id": 1534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1524,
                  "mutability": "mutable",
                  "name": "targets",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1552,
                  "src": "12364:24:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1522,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "12364:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 1523,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "12364:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1527,
                  "mutability": "mutable",
                  "name": "values",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1552,
                  "src": "12393:23:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1525,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "12393:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1526,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "12393:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1530,
                  "mutability": "mutable",
                  "name": "signatures",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1552,
                  "src": "12421:26:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1528,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "12421:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 1529,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "12421:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1533,
                  "mutability": "mutable",
                  "name": "calldatas",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1552,
                  "src": "12452:24:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                    "typeString": "bytes[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1531,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "12452:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 1532,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "12452:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                      "typeString": "bytes[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12359:121:3"
            },
            "scope": 2301,
            "src": "12293:298:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1569,
              "nodeType": "Block",
              "src": "12754:52:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1562,
                          "name": "proposals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 907,
                          "src": "12765:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                            "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                          }
                        },
                        "id": 1564,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1563,
                          "name": "proposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1555,
                          "src": "12775:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "12765:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage",
                          "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                        }
                      },
                      "id": 1565,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "receipts",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 879,
                      "src": "12765:30:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Receipt_$893_storage_$",
                        "typeString": "mapping(address => struct CompoundVotingMachine.Receipt storage ref)"
                      }
                    },
                    "id": 1567,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1566,
                      "name": "voter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1557,
                      "src": "12796:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "12765:37:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Receipt_$893_storage",
                      "typeString": "struct CompoundVotingMachine.Receipt storage ref"
                    }
                  },
                  "functionReturnParameters": 1561,
                  "id": 1568,
                  "nodeType": "Return",
                  "src": "12758:44:3"
                }
              ]
            },
            "documentation": {
              "id": 1553,
              "nodeType": "StructuredDocumentation",
              "src": "12594:59:3",
              "text": "@notice get the receipt of a single voter in a proposal"
            },
            "functionSelector": "e23a9a52",
            "id": 1570,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReceipt",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1558,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1555,
                  "mutability": "mutable",
                  "name": "proposalId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1570,
                  "src": "12675:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1554,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12675:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1557,
                  "mutability": "mutable",
                  "name": "voter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1570,
                  "src": "12695:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1556,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12695:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12674:35:3"
            },
            "returnParameters": {
              "id": 1561,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1560,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1570,
                  "src": "12737:14:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Receipt_$893_memory_ptr",
                    "typeString": "struct CompoundVotingMachine.Receipt"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1559,
                    "name": "Receipt",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 893,
                    "src": "12737:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                      "typeString": "struct CompoundVotingMachine.Receipt"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12736:16:3"
            },
            "scope": 2301,
            "src": "12655:151:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1688,
              "nodeType": "Block",
              "src": "12930:1183:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1585,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1579,
                            "name": "proposalCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 831,
                            "src": "12946:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1580,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1573,
                            "src": "12963:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12946:27:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1584,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1582,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1573,
                            "src": "12977:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1583,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12990:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "12977:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "12946:45:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a73746174653a20696e76616c69642070726f706f73616c206964",
                        "id": 1586,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12996:51:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b6b9cb933e57ddd68e06e915a91a6f7e3ab42567d3591b7bffaf2dcf791ea5f4",
                          "typeString": "literal_string \"CompoundVotingMachine::state: invalid proposal id\""
                        },
                        "value": "CompoundVotingMachine::state: invalid proposal id"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b6b9cb933e57ddd68e06e915a91a6f7e3ab42567d3591b7bffaf2dcf791ea5f4",
                          "typeString": "literal_string \"CompoundVotingMachine::state: invalid proposal id\""
                        }
                      ],
                      "id": 1578,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "12934:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1587,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12934:117:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1588,
                  "nodeType": "ExpressionStatement",
                  "src": "12934:117:3"
                },
                {
                  "assignments": [
                    1590
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1590,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1688,
                      "src": "13056:25:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1589,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 883,
                        "src": "13056:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1594,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1591,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 907,
                      "src": "13084:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                        "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                      }
                    },
                    "id": 1593,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1592,
                      "name": "proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1573,
                      "src": "13094:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13084:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$883_storage",
                      "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13056:49:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 1595,
                      "name": "proposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1590,
                      "src": "13114:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                      }
                    },
                    "id": 1596,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "canceled",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 871,
                    "src": "13114:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1605,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1601,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -4,
                          "src": "13182:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 1602,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "number",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "13182:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1603,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1590,
                          "src": "13198:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 1604,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "startBlock",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 859,
                        "src": "13198:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "13182:35:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1610,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1590,
                          "src": "13267:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 1611,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "executed",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 874,
                        "src": "13267:17:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1616,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1590,
                                "src": "13339:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                  "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                }
                              },
                              "id": 1617,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "eta",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 840,
                              "src": "13339:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1618,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13354:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "13339:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1624,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1620,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "13359:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 1621,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13359:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1622,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1590,
                                "src": "13377:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                  "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                }
                              },
                              "id": 1623,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "eta",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 840,
                              "src": "13377:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "13359:30:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "13339:50:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1639,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1633,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1630,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1590,
                                  "src": "13531:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                    "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                  }
                                },
                                "id": 1631,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "eta",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 840,
                                "src": "13531:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1632,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13547:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "13531:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1638,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1634,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "13552:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 1635,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "13552:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1636,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1590,
                                  "src": "13568:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                    "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                  }
                                },
                                "id": 1637,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "endBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 862,
                                "src": "13568:17:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13552:33:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "13531:54:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1654,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1648,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1644,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1590,
                                    "src": "13747:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                      "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                    }
                                  },
                                  "id": 1645,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "forVotes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 865,
                                  "src": "13747:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1646,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1590,
                                    "src": "13768:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                      "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                    }
                                  },
                                  "id": 1647,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "againstVotes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 868,
                                  "src": "13768:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13747:42:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1653,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1649,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1590,
                                    "src": "13796:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                      "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                    }
                                  },
                                  "id": 1650,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "forVotes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 865,
                                  "src": "13796:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1651,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1590,
                                    "src": "13816:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                      "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                    }
                                  },
                                  "id": 1652,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "quoromRequired",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 882,
                                  "src": "13816:23:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13796:43:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "13747:92:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 1672,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1662,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1659,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1590,
                                      "src": "13897:8:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                        "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                      }
                                    },
                                    "id": 1660,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "eta",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 840,
                                    "src": "13897:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1661,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13912:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "13897:16:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1671,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1663,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "13920:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 1664,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "13920:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 1668,
                                          "name": "gracePeriod",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 819,
                                          "src": "13956:11:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                            "typeString": "function () pure returns (uint256)"
                                          }
                                        },
                                        "id": 1669,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13956:13:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1665,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1590,
                                          "src": "13939:8:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                          }
                                        },
                                        "id": 1666,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "eta",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 840,
                                        "src": "13939:12:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 1667,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "add",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7973,
                                      "src": "13939:16:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 1670,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13939:31:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "13920:50:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "13897:73:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 1680,
                                "nodeType": "Block",
                                "src": "14070:40:3",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1677,
                                        "name": "ProposalState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 902,
                                        "src": "14082:13:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                          "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                                        }
                                      },
                                      "id": 1678,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "Succeeded",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "14082:23:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$902",
                                        "typeString": "enum CompoundVotingMachine.ProposalState"
                                      }
                                    },
                                    "functionReturnParameters": 1577,
                                    "id": 1679,
                                    "nodeType": "Return",
                                    "src": "14075:30:3"
                                  }
                                ]
                              },
                              "id": 1681,
                              "nodeType": "IfStatement",
                              "src": "13889:221:3",
                              "trueBody": {
                                "id": 1676,
                                "nodeType": "Block",
                                "src": "13975:89:3",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1673,
                                        "name": "ProposalState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 902,
                                        "src": "14038:13:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                          "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                                        }
                                      },
                                      "id": 1674,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "Expired",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "14038:21:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$902",
                                        "typeString": "enum CompoundVotingMachine.ProposalState"
                                      }
                                    },
                                    "functionReturnParameters": 1577,
                                    "id": 1675,
                                    "nodeType": "Return",
                                    "src": "14031:28:3"
                                  }
                                ]
                              }
                            },
                            "id": 1682,
                            "nodeType": "IfStatement",
                            "src": "13739:371:3",
                            "trueBody": {
                              "id": 1658,
                              "nodeType": "Block",
                              "src": "13844:39:3",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1655,
                                      "name": "ProposalState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 902,
                                      "src": "13856:13:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                        "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                                      }
                                    },
                                    "id": 1656,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "Defeated",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "13856:22:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$902",
                                      "typeString": "enum CompoundVotingMachine.ProposalState"
                                    }
                                  },
                                  "functionReturnParameters": 1577,
                                  "id": 1657,
                                  "nodeType": "Return",
                                  "src": "13849:29:3"
                                }
                              ]
                            }
                          },
                          "id": 1683,
                          "nodeType": "IfStatement",
                          "src": "13496:614:3",
                          "trueBody": {
                            "id": 1643,
                            "nodeType": "Block",
                            "src": "13590:143:3",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1640,
                                    "name": "ProposalState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 902,
                                    "src": "13708:13:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                      "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                                    }
                                  },
                                  "id": 1641,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "Active",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "13708:20:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$902",
                                    "typeString": "enum CompoundVotingMachine.ProposalState"
                                  }
                                },
                                "functionReturnParameters": 1577,
                                "id": 1642,
                                "nodeType": "Return",
                                "src": "13701:27:3"
                              }
                            ]
                          }
                        },
                        "id": 1684,
                        "nodeType": "IfStatement",
                        "src": "13331:779:3",
                        "trueBody": {
                          "id": 1629,
                          "nodeType": "Block",
                          "src": "13445:45:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1626,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 902,
                                  "src": "13457:13:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                    "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                                  }
                                },
                                "id": 1627,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "ActiveTimelock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "13457:28:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$902",
                                  "typeString": "enum CompoundVotingMachine.ProposalState"
                                }
                              },
                              "functionReturnParameters": 1577,
                              "id": 1628,
                              "nodeType": "Return",
                              "src": "13450:35:3"
                            }
                          ]
                        }
                      },
                      "id": 1685,
                      "nodeType": "IfStatement",
                      "src": "13263:847:3",
                      "trueBody": {
                        "id": 1615,
                        "nodeType": "Block",
                        "src": "13286:39:3",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1612,
                                "name": "ProposalState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 902,
                                "src": "13298:13:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                  "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                                }
                              },
                              "id": 1613,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Executed",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13298:22:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$902",
                                "typeString": "enum CompoundVotingMachine.ProposalState"
                              }
                            },
                            "functionReturnParameters": 1577,
                            "id": 1614,
                            "nodeType": "Return",
                            "src": "13291:29:3"
                          }
                        ]
                      }
                    },
                    "id": 1686,
                    "nodeType": "IfStatement",
                    "src": "13178:932:3",
                    "trueBody": {
                      "id": 1609,
                      "nodeType": "Block",
                      "src": "13219:38:3",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1606,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 902,
                              "src": "13231:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                              }
                            },
                            "id": 1607,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Pending",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "13231:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$902",
                              "typeString": "enum CompoundVotingMachine.ProposalState"
                            }
                          },
                          "functionReturnParameters": 1577,
                          "id": 1608,
                          "nodeType": "Return",
                          "src": "13224:28:3"
                        }
                      ]
                    }
                  },
                  "id": 1687,
                  "nodeType": "IfStatement",
                  "src": "13110:1000:3",
                  "trueBody": {
                    "id": 1600,
                    "nodeType": "Block",
                    "src": "13133:39:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1597,
                            "name": "ProposalState",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 902,
                            "src": "13145:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                              "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                            }
                          },
                          "id": 1598,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Canceled",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "13145:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$902",
                            "typeString": "enum CompoundVotingMachine.ProposalState"
                          }
                        },
                        "functionReturnParameters": 1577,
                        "id": 1599,
                        "nodeType": "Return",
                        "src": "13138:29:3"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 1571,
              "nodeType": "StructuredDocumentation",
              "src": "12809:48:3",
              "text": "@notice get the current status of a proposal"
            },
            "functionSelector": "3e4f49e6",
            "id": 1689,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "state",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1574,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1573,
                  "mutability": "mutable",
                  "name": "proposalId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1689,
                  "src": "12874:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1572,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12874:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12873:20:3"
            },
            "returnParameters": {
              "id": 1577,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1576,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1689,
                  "src": "12915:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ProposalState_$902",
                    "typeString": "enum CompoundVotingMachine.ProposalState"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1575,
                    "name": "ProposalState",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 902,
                    "src": "12915:13:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ProposalState_$902",
                      "typeString": "enum CompoundVotingMachine.ProposalState"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12914:15:3"
            },
            "scope": 2301,
            "src": "12859:1254:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1722,
              "nodeType": "Block",
              "src": "14299:247:3",
              "statements": [
                {
                  "assignments": [
                    1698
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1698,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1722,
                      "src": "14360:25:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1697,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 883,
                        "src": "14360:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1702,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1699,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 907,
                      "src": "14388:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                        "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                      }
                    },
                    "id": 1701,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1700,
                      "name": "proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1692,
                      "src": "14398:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "14388:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$883_storage",
                      "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14360:49:3"
                },
                {
                  "assignments": [
                    1704
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1704,
                      "mutability": "mutable",
                      "name": "votes",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1722,
                      "src": "14413:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1703,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14413:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1713,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1707,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "14444:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1708,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "14444:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 1709,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14456:4:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1710,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1698,
                          "src": "14462:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 1711,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "startBlock",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 859,
                        "src": "14462:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1705,
                        "name": "rep",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 825,
                        "src": "14429:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ReputationInterface_$105",
                          "typeString": "contract ReputationInterface"
                        }
                      },
                      "id": 1706,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getVotesAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 85,
                      "src": "14429:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_bool_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (address,bool,uint256) view external returns (uint256)"
                      }
                    },
                    "id": 1712,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14429:53:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14413:69:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1715,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "14503:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1716,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "14503:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1717,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1692,
                        "src": "14515:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1718,
                        "name": "support",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1694,
                        "src": "14527:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1719,
                        "name": "votes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1704,
                        "src": "14536:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1714,
                      "name": "_castVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2288,
                      "src": "14493:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,bool,uint256)"
                      }
                    },
                    "id": 1720,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14493:49:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "functionReturnParameters": 1696,
                  "id": 1721,
                  "nodeType": "Return",
                  "src": "14486:56:3"
                }
              ]
            },
            "documentation": {
              "id": 1690,
              "nodeType": "StructuredDocumentation",
              "src": "14116:122:3",
              "text": "@notice cast your vote on a proposal\n @param proposalId the proposal to vote on\n @param support for or against"
            },
            "functionSelector": "15373e3d",
            "id": 1723,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "castVote",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1695,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1692,
                  "mutability": "mutable",
                  "name": "proposalId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1723,
                  "src": "14258:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1691,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14258:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1694,
                  "mutability": "mutable",
                  "name": "support",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1723,
                  "src": "14278:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1693,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14278:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14257:34:3"
            },
            "returnParameters": {
              "id": 1696,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14299:0:3"
            },
            "scope": 2301,
            "src": "14240:306:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "canonicalName": "CompoundVotingMachine.VoteSig",
            "id": 1732,
            "members": [
              {
                "constant": false,
                "id": 1725,
                "mutability": "mutable",
                "name": "support",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 1732,
                "src": "14568:12:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 1724,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "14568:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1727,
                "mutability": "mutable",
                "name": "v",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 1732,
                "src": "14584:7:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 1726,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "14584:5:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1729,
                "mutability": "mutable",
                "name": "r",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 1732,
                "src": "14595:9:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 1728,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "14595:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1731,
                "mutability": "mutable",
                "name": "s",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 1732,
                "src": "14608:9:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 1730,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "14608:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "VoteSig",
            "nodeType": "StructDefinition",
            "scope": 2301,
            "src": "14549:72:3",
            "visibility": "public"
          },
          {
            "body": {
              "id": 2051,
              "nodeType": "Block",
              "src": "14741:2321:3",
              "statements": [
                {
                  "assignments": [
                    1744
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1744,
                      "mutability": "mutable",
                      "name": "domainSeparator",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2051,
                      "src": "14745:23:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1743,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "14745:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1763,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1748,
                            "name": "DOMAIN_TYPEHASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 918,
                            "src": "14806:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1752,
                                    "name": "name",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 725,
                                    "src": "14844:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 1751,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14838:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 1750,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14838:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1753,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14838:11:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 1749,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "14828:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 1754,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14828:22:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 1755,
                              "name": "getChainId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2300,
                              "src": "14857:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                "typeString": "function () pure returns (uint256)"
                              }
                            },
                            "id": 1756,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14857:12:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1759,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "14884:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_CompoundVotingMachine_$2301",
                                  "typeString": "contract CompoundVotingMachine"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_CompoundVotingMachine_$2301",
                                  "typeString": "contract CompoundVotingMachine"
                                }
                              ],
                              "id": 1758,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14876:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1757,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "14876:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1760,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14876:13:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1746,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "14789:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "14789:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1761,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14789:106:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1745,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "14774:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1762,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14774:126:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14745:155:3"
                },
                {
                  "assignments": [
                    1765
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1765,
                      "mutability": "mutable",
                      "name": "structHashFor",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2051,
                      "src": "14904:21:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1764,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "14904:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1774,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1769,
                            "name": "BALLOT_TYPEHASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 924,
                            "src": "14952:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1770,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1734,
                            "src": "14969:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 1771,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14981:4:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1767,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "14941:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1768,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "14941:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1772,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14941:45:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1766,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "14931:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1773,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14931:56:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14904:83:3"
                },
                {
                  "assignments": [
                    1776
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1776,
                      "mutability": "mutable",
                      "name": "structHashAgainst",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2051,
                      "src": "14991:25:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1775,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "14991:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1785,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1780,
                            "name": "BALLOT_TYPEHASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 924,
                            "src": "15043:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1781,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1734,
                            "src": "15060:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 1782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15072:5:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1778,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "15032:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1779,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "15032:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1783,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15032:46:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1777,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "15022:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1784,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15022:57:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14991:88:3"
                },
                {
                  "assignments": [
                    1787
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1787,
                      "mutability": "mutable",
                      "name": "digestFor",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2051,
                      "src": "15083:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1786,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "15083:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1796,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "1901",
                            "id": 1791,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15138:10:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                              "typeString": "literal_string \"\u0019\u0001\""
                            },
                            "value": "\u0019\u0001"
                          },
                          {
                            "argumentTypes": null,
                            "id": 1792,
                            "name": "domainSeparator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1744,
                            "src": "15150:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1793,
                            "name": "structHashFor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1765,
                            "src": "15167:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                              "typeString": "literal_string \"\u0019\u0001\""
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1789,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "15121:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1790,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "15121:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1794,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15121:60:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1788,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "15106:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1795,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15106:80:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15083:103:3"
                },
                {
                  "assignments": [
                    1798
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1798,
                      "mutability": "mutable",
                      "name": "digestAgainst",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2051,
                      "src": "15190:21:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1797,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "15190:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1807,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "1901",
                            "id": 1802,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15249:10:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                              "typeString": "literal_string \"\u0019\u0001\""
                            },
                            "value": "\u0019\u0001"
                          },
                          {
                            "argumentTypes": null,
                            "id": 1803,
                            "name": "domainSeparator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1744,
                            "src": "15261:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1804,
                            "name": "structHashAgainst",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1776,
                            "src": "15278:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                              "typeString": "literal_string \"\u0019\u0001\""
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1800,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "15232:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1801,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "15232:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1805,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15232:64:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1799,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "15217:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1806,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15217:84:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15190:111:3"
                },
                {
                  "assignments": [
                    1809
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1809,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2051,
                      "src": "15306:25:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1808,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 883,
                        "src": "15306:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1813,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1810,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 907,
                      "src": "15334:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                        "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                      }
                    },
                    "id": 1812,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 1811,
                      "name": "proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1734,
                      "src": "15344:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "15334:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$883_storage",
                      "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15306:49:3"
                },
                {
                  "assignments": [
                    1815
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1815,
                      "mutability": "mutable",
                      "name": "total",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2051,
                      "src": "15360:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1814,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15360:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1816,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15360:13:3"
                },
                {
                  "body": {
                    "id": 1899,
                    "nodeType": "Block",
                    "src": "15422:547:3",
                    "statements": [
                      {
                        "assignments": [
                          1829
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1829,
                            "mutability": "mutable",
                            "name": "digest",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1899,
                            "src": "15427:14:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 1828,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "15427:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1831,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 1830,
                          "name": "digestFor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1787,
                          "src": "15444:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15427:26:3"
                      },
                      {
                        "assignments": [
                          1833
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1833,
                            "mutability": "mutable",
                            "name": "signatory",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1899,
                            "src": "15459:17:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1832,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "15459:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1849,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1835,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1829,
                              "src": "15493:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1836,
                                  "name": "votesFor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1737,
                                  "src": "15501:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                  }
                                },
                                "id": 1838,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1837,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1818,
                                  "src": "15510:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15501:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VoteSig_$1732_memory_ptr",
                                  "typeString": "struct CompoundVotingMachine.VoteSig memory"
                                }
                              },
                              "id": 1839,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "v",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1727,
                              "src": "15501:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1840,
                                  "name": "votesFor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1737,
                                  "src": "15516:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                  }
                                },
                                "id": 1842,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1841,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1818,
                                  "src": "15525:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15516:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VoteSig_$1732_memory_ptr",
                                  "typeString": "struct CompoundVotingMachine.VoteSig memory"
                                }
                              },
                              "id": 1843,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "r",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1729,
                              "src": "15516:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1844,
                                  "name": "votesFor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1737,
                                  "src": "15531:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                  }
                                },
                                "id": 1846,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1845,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1818,
                                  "src": "15540:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15531:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VoteSig_$1732_memory_ptr",
                                  "typeString": "struct CompoundVotingMachine.VoteSig memory"
                                }
                              },
                              "id": 1847,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "s",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1731,
                              "src": "15531:13:3",
                              "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": 1834,
                            "name": "ecrecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -6,
                            "src": "15483:9:3",
                            "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": 1848,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15483:62:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15459:86:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1856,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1851,
                                "name": "signatory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1833,
                                "src": "15563:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1854,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15584:1:3",
                                    "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": 1853,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "15576:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1852,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15576:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1855,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15576:10:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "15563:23:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a63617374566f746542795369673a20696e76616c6964207369676e6174757265",
                              "id": 1857,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15592:57:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_50d9672d7084bae246b52b4eba77e59964de45253c5ce1a356c04edf7e38d90a",
                                "typeString": "literal_string \"CompoundVotingMachine::castVoteBySig: invalid signature\""
                              },
                              "value": "CompoundVotingMachine::castVoteBySig: invalid signature"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_50d9672d7084bae246b52b4eba77e59964de45253c5ce1a356c04edf7e38d90a",
                                "typeString": "literal_string \"CompoundVotingMachine::castVoteBySig: invalid signature\""
                              }
                            ],
                            "id": 1850,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15550:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1858,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15550:104:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1859,
                        "nodeType": "ExpressionStatement",
                        "src": "15550:104:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1866,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1861,
                                    "name": "votesFor",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1737,
                                    "src": "15672:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                    }
                                  },
                                  "id": 1863,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1862,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1818,
                                    "src": "15681:1:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "15672:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_VoteSig_$1732_memory_ptr",
                                    "typeString": "struct CompoundVotingMachine.VoteSig memory"
                                  }
                                },
                                "id": 1864,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "support",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1725,
                                "src": "15672:19:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 1865,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15695:4:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "src": "15672:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a63617374566f746542795369673a20696e76616c696420737570706f72742076616c756520696e20666f72206261746368",
                              "id": 1867,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15705:74:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1163311ab93482b1a371307126938883d2d515d50627c76970d202a28fe98d8d",
                                "typeString": "literal_string \"CompoundVotingMachine::castVoteBySig: invalid support value in for batch\""
                              },
                              "value": "CompoundVotingMachine::castVoteBySig: invalid support value in for batch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1163311ab93482b1a371307126938883d2d515d50627c76970d202a28fe98d8d",
                                "typeString": "literal_string \"CompoundVotingMachine::castVoteBySig: invalid support value in for batch\""
                              }
                            ],
                            "id": 1860,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15659:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1868,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15659:125:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1869,
                        "nodeType": "ExpressionStatement",
                        "src": "15659:125:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1878,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1870,
                            "name": "total",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1815,
                            "src": "15789:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1873,
                                "name": "signatory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1833,
                                "src": "15813:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 1874,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15824:4:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1875,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1809,
                                  "src": "15830:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                    "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                  }
                                },
                                "id": 1876,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "startBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 859,
                                "src": "15830:19:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1871,
                                "name": "rep",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 825,
                                "src": "15798:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ReputationInterface_$105",
                                  "typeString": "contract ReputationInterface"
                                }
                              },
                              "id": 1872,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getVotesAt",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 85,
                              "src": "15798:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_bool_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,bool,uint256) view external returns (uint256)"
                              }
                            },
                            "id": 1877,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15798:52:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15789:61:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1879,
                        "nodeType": "ExpressionStatement",
                        "src": "15789:61:3"
                      },
                      {
                        "assignments": [
                          1881
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1881,
                            "mutability": "mutable",
                            "name": "receipt",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1899,
                            "src": "15855:23:3",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                              "typeString": "struct CompoundVotingMachine.Receipt"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1880,
                              "name": "Receipt",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 893,
                              "src": "15855:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                                "typeString": "struct CompoundVotingMachine.Receipt"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1886,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1882,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1809,
                              "src": "15881:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                              }
                            },
                            "id": 1883,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "receipts",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 879,
                            "src": "15881:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Receipt_$893_storage_$",
                              "typeString": "mapping(address => struct CompoundVotingMachine.Receipt storage ref)"
                            }
                          },
                          "id": 1885,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1884,
                            "name": "signatory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1833,
                            "src": "15899:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15881:28:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Receipt_$893_storage",
                            "typeString": "struct CompoundVotingMachine.Receipt storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15855:54:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1887,
                              "name": "receipt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1881,
                              "src": "15914:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                                "typeString": "struct CompoundVotingMachine.Receipt storage pointer"
                              }
                            },
                            "id": 1889,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "hasVoted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 886,
                            "src": "15914:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 1890,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15933:4:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "15914:23:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1892,
                        "nodeType": "ExpressionStatement",
                        "src": "15914:23:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1897,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1893,
                              "name": "receipt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1881,
                              "src": "15942:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                                "typeString": "struct CompoundVotingMachine.Receipt storage pointer"
                              }
                            },
                            "id": 1895,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "support",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 889,
                            "src": "15942:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 1896,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15960:4:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "15942:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1898,
                        "nodeType": "ExpressionStatement",
                        "src": "15942:22:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1824,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1821,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1818,
                      "src": "15396:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1822,
                        "name": "votesFor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1737,
                        "src": "15400:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                        }
                      },
                      "id": 1823,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "15400:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15396:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1900,
                  "initializationExpression": {
                    "assignments": [
                      1818
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1818,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1900,
                        "src": "15382:8:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 1817,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "15382:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1820,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1819,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15393:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "15382:12:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1826,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "15417:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1825,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1818,
                        "src": "15417:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "id": 1827,
                    "nodeType": "ExpressionStatement",
                    "src": "15417:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "15377:592:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1904,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1901,
                        "name": "votesFor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1737,
                        "src": "15976:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                        }
                      },
                      "id": 1902,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "15976:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1903,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15994:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "15976:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1931,
                  "nodeType": "IfStatement",
                  "src": "15972:179:3",
                  "trueBody": {
                    "id": 1930,
                    "nodeType": "Block",
                    "src": "15997:154:3",
                    "statements": [
                      {
                        "assignments": [
                          1906
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1906,
                            "mutability": "mutable",
                            "name": "voteAddressHash",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1930,
                            "src": "16002:23:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1905,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16002:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1922,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 1916,
                                              "name": "votesFor",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1737,
                                              "src": "16077:8:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1914,
                                              "name": "abi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -1,
                                              "src": "16066:3:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_abi",
                                                "typeString": "abi"
                                              }
                                            },
                                            "id": 1915,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "encode",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "16066:10:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                              "typeString": "function () pure returns (bytes memory)"
                                            }
                                          },
                                          "id": 1917,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "16066:20:3",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 1913,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -8,
                                        "src": "16056:9:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 1918,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16056:31:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 1912,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "16048:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 1911,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "16048:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 1919,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16048:40:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1910,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "16040:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint160_$",
                                  "typeString": "type(uint160)"
                                },
                                "typeName": {
                                  "id": 1909,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16040:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1920,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16040:49:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 1908,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "16032:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 1907,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16032:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 1921,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16032:58:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16002:88:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1924,
                              "name": "voteAddressHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1906,
                              "src": "16105:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1925,
                              "name": "proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1734,
                              "src": "16122:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 1926,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16134:4:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "argumentTypes": null,
                              "id": 1927,
                              "name": "total",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1815,
                              "src": "16140:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1923,
                            "name": "_castVote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2288,
                            "src": "16095:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,bool,uint256)"
                            }
                          },
                          "id": 1928,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16095:51:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1929,
                        "nodeType": "ExpressionStatement",
                        "src": "16095:51:3"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1934,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1932,
                      "name": "total",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1815,
                      "src": "16155:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1933,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16163:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "16155:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1935,
                  "nodeType": "ExpressionStatement",
                  "src": "16155:9:3"
                },
                {
                  "body": {
                    "id": 2018,
                    "nodeType": "Block",
                    "src": "16217:598:3",
                    "statements": [
                      {
                        "assignments": [
                          1948
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1948,
                            "mutability": "mutable",
                            "name": "digest",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2018,
                            "src": "16222:14:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 1947,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "16222:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1950,
                        "initialValue": {
                          "argumentTypes": null,
                          "id": 1949,
                          "name": "digestAgainst",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1798,
                          "src": "16239:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16222:30:3"
                      },
                      {
                        "assignments": [
                          1952
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1952,
                            "mutability": "mutable",
                            "name": "signatory",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2018,
                            "src": "16258:17:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1951,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16258:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1968,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1954,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1948,
                              "src": "16298:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1955,
                                  "name": "votesAgainst",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1740,
                                  "src": "16311:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                  }
                                },
                                "id": 1957,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1956,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1937,
                                  "src": "16324:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "16311:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VoteSig_$1732_memory_ptr",
                                  "typeString": "struct CompoundVotingMachine.VoteSig memory"
                                }
                              },
                              "id": 1958,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "v",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1727,
                              "src": "16311:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1959,
                                  "name": "votesAgainst",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1740,
                                  "src": "16335:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                  }
                                },
                                "id": 1961,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1960,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1937,
                                  "src": "16348:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "16335:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VoteSig_$1732_memory_ptr",
                                  "typeString": "struct CompoundVotingMachine.VoteSig memory"
                                }
                              },
                              "id": 1962,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "r",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1729,
                              "src": "16335:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1963,
                                  "name": "votesAgainst",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1740,
                                  "src": "16359:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                  }
                                },
                                "id": 1965,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1964,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1937,
                                  "src": "16372:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "16359:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VoteSig_$1732_memory_ptr",
                                  "typeString": "struct CompoundVotingMachine.VoteSig memory"
                                }
                              },
                              "id": 1966,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "s",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1731,
                              "src": "16359:17:3",
                              "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": 1953,
                            "name": "ecrecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -6,
                            "src": "16282:9:3",
                            "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": 1967,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16282:100:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16258:124:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1975,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1970,
                                "name": "signatory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1952,
                                "src": "16400:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1973,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16421:1:3",
                                    "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": 1972,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "16413:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1971,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16413:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1974,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16413:10:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "16400:23:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a63617374566f746542795369673a20696e76616c6964207369676e6174757265",
                              "id": 1976,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16429:57:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_50d9672d7084bae246b52b4eba77e59964de45253c5ce1a356c04edf7e38d90a",
                                "typeString": "literal_string \"CompoundVotingMachine::castVoteBySig: invalid signature\""
                              },
                              "value": "CompoundVotingMachine::castVoteBySig: invalid signature"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_50d9672d7084bae246b52b4eba77e59964de45253c5ce1a356c04edf7e38d90a",
                                "typeString": "literal_string \"CompoundVotingMachine::castVoteBySig: invalid signature\""
                              }
                            ],
                            "id": 1969,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "16387:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1977,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16387:104:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1978,
                        "nodeType": "ExpressionStatement",
                        "src": "16387:104:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1985,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1980,
                                    "name": "votesAgainst",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1740,
                                    "src": "16509:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                    }
                                  },
                                  "id": 1982,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1981,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1937,
                                    "src": "16522:1:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "16509:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_VoteSig_$1732_memory_ptr",
                                    "typeString": "struct CompoundVotingMachine.VoteSig memory"
                                  }
                                },
                                "id": 1983,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "support",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1725,
                                "src": "16509:23:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 1984,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16536:5:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "src": "16509:32:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a63617374566f746542795369673a20696e76616c696420737570706f72742076616c756520696e20616761696e7374206261746368",
                              "id": 1986,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16547:78:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fb98b1737a49ce9852af0ca5e1954945f972d25b971545e6b0c5f3a441f85523",
                                "typeString": "literal_string \"CompoundVotingMachine::castVoteBySig: invalid support value in against batch\""
                              },
                              "value": "CompoundVotingMachine::castVoteBySig: invalid support value in against batch"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_fb98b1737a49ce9852af0ca5e1954945f972d25b971545e6b0c5f3a441f85523",
                                "typeString": "literal_string \"CompoundVotingMachine::castVoteBySig: invalid support value in against batch\""
                              }
                            ],
                            "id": 1979,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "16496:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1987,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16496:134:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1988,
                        "nodeType": "ExpressionStatement",
                        "src": "16496:134:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1997,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1989,
                            "name": "total",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1815,
                            "src": "16635:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1992,
                                "name": "signatory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1952,
                                "src": "16659:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "74727565",
                                "id": 1993,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16670:4:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1994,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1809,
                                  "src": "16676:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                    "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                  }
                                },
                                "id": 1995,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "startBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 859,
                                "src": "16676:19:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1990,
                                "name": "rep",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 825,
                                "src": "16644:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ReputationInterface_$105",
                                  "typeString": "contract ReputationInterface"
                                }
                              },
                              "id": 1991,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getVotesAt",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 85,
                              "src": "16644:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_bool_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,bool,uint256) view external returns (uint256)"
                              }
                            },
                            "id": 1996,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16644:52:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16635:61:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1998,
                        "nodeType": "ExpressionStatement",
                        "src": "16635:61:3"
                      },
                      {
                        "assignments": [
                          2000
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2000,
                            "mutability": "mutable",
                            "name": "receipt",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2018,
                            "src": "16701:23:3",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                              "typeString": "struct CompoundVotingMachine.Receipt"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1999,
                              "name": "Receipt",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 893,
                              "src": "16701:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                                "typeString": "struct CompoundVotingMachine.Receipt"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2005,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2001,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1809,
                              "src": "16727:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                              }
                            },
                            "id": 2002,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "receipts",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 879,
                            "src": "16727:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Receipt_$893_storage_$",
                              "typeString": "mapping(address => struct CompoundVotingMachine.Receipt storage ref)"
                            }
                          },
                          "id": 2004,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2003,
                            "name": "signatory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1952,
                            "src": "16745:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16727:28:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Receipt_$893_storage",
                            "typeString": "struct CompoundVotingMachine.Receipt storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16701:54:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2006,
                              "name": "receipt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2000,
                              "src": "16760:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                                "typeString": "struct CompoundVotingMachine.Receipt storage pointer"
                              }
                            },
                            "id": 2008,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "hasVoted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 886,
                            "src": "16760:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2009,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16779:4:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "16760:23:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2011,
                        "nodeType": "ExpressionStatement",
                        "src": "16760:23:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2012,
                              "name": "receipt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2000,
                              "src": "16788:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                                "typeString": "struct CompoundVotingMachine.Receipt storage pointer"
                              }
                            },
                            "id": 2014,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "support",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 889,
                            "src": "16788:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2015,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16806:4:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "16788:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2017,
                        "nodeType": "ExpressionStatement",
                        "src": "16788:22:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1943,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1940,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1937,
                      "src": "16187:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1941,
                        "name": "votesAgainst",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1740,
                        "src": "16191:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                        }
                      },
                      "id": 1942,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16191:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16187:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2019,
                  "initializationExpression": {
                    "assignments": [
                      1937
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1937,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2019,
                        "src": "16173:8:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 1936,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "16173:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1939,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1938,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16184:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "16173:12:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1945,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "16212:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1944,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1937,
                        "src": "16212:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "id": 1946,
                    "nodeType": "ExpressionStatement",
                    "src": "16212:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "16168:647:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2023,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2020,
                        "name": "votesAgainst",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1740,
                        "src": "16822:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                        }
                      },
                      "id": 2021,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16822:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2022,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16844:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "16822:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2050,
                  "nodeType": "IfStatement",
                  "src": "16818:188:3",
                  "trueBody": {
                    "id": 2049,
                    "nodeType": "Block",
                    "src": "16847:159:3",
                    "statements": [
                      {
                        "assignments": [
                          2025
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2025,
                            "mutability": "mutable",
                            "name": "voteAddressHash",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2049,
                            "src": "16852:23:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2024,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16852:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2041,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 2035,
                                              "name": "votesAgainst",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1740,
                                              "src": "16927:12:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct CompoundVotingMachine.VoteSig memory[] memory"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2033,
                                              "name": "abi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -1,
                                              "src": "16916:3:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_abi",
                                                "typeString": "abi"
                                              }
                                            },
                                            "id": 2034,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "encode",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "16916:10:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                              "typeString": "function () pure returns (bytes memory)"
                                            }
                                          },
                                          "id": 2036,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "16916:24:3",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 2032,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -8,
                                        "src": "16906:9:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 2037,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16906:35:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 2031,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "16898:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 2030,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "16898:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 2038,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16898:44:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 2029,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "16890:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint160_$",
                                  "typeString": "type(uint160)"
                                },
                                "typeName": {
                                  "id": 2028,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16890:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2039,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16890:53:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 2027,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "16882:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 2026,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16882:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 2040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16882:62:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16852:92:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2043,
                              "name": "voteAddressHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2025,
                              "src": "16959:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2044,
                              "name": "proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1734,
                              "src": "16976:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 2045,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16988:5:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            {
                              "argumentTypes": null,
                              "id": 2046,
                              "name": "total",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1815,
                              "src": "16995:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2042,
                            "name": "_castVote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2288,
                            "src": "16949:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,bool,uint256)"
                            }
                          },
                          "id": 2047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16949:52:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2048,
                        "nodeType": "ExpressionStatement",
                        "src": "16949:52:3"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "functionSelector": "739f1c6c",
            "id": 2052,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "ecRecoverTest",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 1741,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1734,
                  "mutability": "mutable",
                  "name": "proposalId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2052,
                  "src": "14650:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1733,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14650:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1737,
                  "mutability": "mutable",
                  "name": "votesFor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2052,
                  "src": "14672:25:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct CompoundVotingMachine.VoteSig[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 1735,
                      "name": "VoteSig",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 1732,
                      "src": "14672:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_VoteSig_$1732_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.VoteSig"
                      }
                    },
                    "id": 1736,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "14672:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_storage_$dyn_storage_ptr",
                      "typeString": "struct CompoundVotingMachine.VoteSig[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1740,
                  "mutability": "mutable",
                  "name": "votesAgainst",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2052,
                  "src": "14701:29:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct CompoundVotingMachine.VoteSig[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 1738,
                      "name": "VoteSig",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 1732,
                      "src": "14701:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_VoteSig_$1732_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.VoteSig"
                      }
                    },
                    "id": 1739,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "14701:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_VoteSig_$1732_storage_$dyn_storage_ptr",
                      "typeString": "struct CompoundVotingMachine.VoteSig[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14646:87:3"
            },
            "returnParameters": {
              "id": 1742,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14741:0:3"
            },
            "scope": 2301,
            "src": "14624:2438:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2151,
              "nodeType": "Block",
              "src": "17252:748:3",
              "statements": [
                {
                  "assignments": [
                    2067
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2067,
                      "mutability": "mutable",
                      "name": "domainSeparator",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2151,
                      "src": "17256:23:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2066,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "17256:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2086,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2071,
                            "name": "DOMAIN_TYPEHASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 918,
                            "src": "17317:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2075,
                                    "name": "name",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 725,
                                    "src": "17355:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 2074,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "17349:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 2073,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17349:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 2076,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17349:11:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 2072,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "17339:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 2077,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17339:22:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 2078,
                              "name": "getChainId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2300,
                              "src": "17368:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$__$returns$_t_uint256_$",
                                "typeString": "function () pure returns (uint256)"
                              }
                            },
                            "id": 2079,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17368:12:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2082,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "17395:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_CompoundVotingMachine_$2301",
                                  "typeString": "contract CompoundVotingMachine"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_CompoundVotingMachine_$2301",
                                  "typeString": "contract CompoundVotingMachine"
                                }
                              ],
                              "id": 2081,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17387:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2080,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "17387:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2083,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17387:13:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2069,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "17300:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 2070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "17300:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 2084,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17300:106:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 2068,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "17285:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 2085,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17285:126:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17256:155:3"
                },
                {
                  "assignments": [
                    2088
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2088,
                      "mutability": "mutable",
                      "name": "structHash",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2151,
                      "src": "17415:18:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2087,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "17415:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2097,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2092,
                            "name": "BALLOT_TYPEHASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 924,
                            "src": "17460:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2093,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2055,
                            "src": "17477:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2094,
                            "name": "support",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2057,
                            "src": "17489:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2090,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "17449:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 2091,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "17449:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 2095,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17449:48:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 2089,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "17439:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 2096,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17439:59:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17415:83:3"
                },
                {
                  "assignments": [
                    2099
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2099,
                      "mutability": "mutable",
                      "name": "digest",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2151,
                      "src": "17502:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2098,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "17502:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2108,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "1901",
                            "id": 2103,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17554:10:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                              "typeString": "literal_string \"\u0019\u0001\""
                            },
                            "value": "\u0019\u0001"
                          },
                          {
                            "argumentTypes": null,
                            "id": 2104,
                            "name": "domainSeparator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2067,
                            "src": "17566:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2105,
                            "name": "structHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2088,
                            "src": "17583:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                              "typeString": "literal_string \"\u0019\u0001\""
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2101,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "17537:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 2102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "17537:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 2106,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17537:57:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 2100,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "17522:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 2107,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17522:77:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17502:97:3"
                },
                {
                  "assignments": [
                    2110
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2110,
                      "mutability": "mutable",
                      "name": "signatory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2151,
                      "src": "17603:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2109,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "17603:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2117,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2112,
                        "name": "digest",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2099,
                        "src": "17633:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2113,
                        "name": "v",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2059,
                        "src": "17641:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2114,
                        "name": "r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2061,
                        "src": "17644:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2115,
                        "name": "s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2063,
                        "src": "17647:1:3",
                        "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": 2111,
                      "name": "ecrecover",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -6,
                      "src": "17623:9:3",
                      "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": 2116,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17623:26:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17603:46:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2119,
                          "name": "signatory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2110,
                          "src": "17665:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2122,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17686:1:3",
                              "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": 2121,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "17678:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 2120,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "17678:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 2123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17678:10:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "17665:23:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a63617374566f746542795369673a20696e76616c6964207369676e6174757265",
                        "id": 2125,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17693:57:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_50d9672d7084bae246b52b4eba77e59964de45253c5ce1a356c04edf7e38d90a",
                          "typeString": "literal_string \"CompoundVotingMachine::castVoteBySig: invalid signature\""
                        },
                        "value": "CompoundVotingMachine::castVoteBySig: invalid signature"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_50d9672d7084bae246b52b4eba77e59964de45253c5ce1a356c04edf7e38d90a",
                          "typeString": "literal_string \"CompoundVotingMachine::castVoteBySig: invalid signature\""
                        }
                      ],
                      "id": 2118,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "17653:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17653:101:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2127,
                  "nodeType": "ExpressionStatement",
                  "src": "17653:101:3"
                },
                {
                  "assignments": [
                    2129
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2129,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2151,
                      "src": "17816:25:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2128,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 883,
                        "src": "17816:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2133,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2130,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 907,
                      "src": "17844:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                        "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                      }
                    },
                    "id": 2132,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2131,
                      "name": "proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2055,
                      "src": "17854:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "17844:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$883_storage",
                      "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17816:49:3"
                },
                {
                  "assignments": [
                    2135
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2135,
                      "mutability": "mutable",
                      "name": "votes",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2151,
                      "src": "17869:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2134,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "17869:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2143,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2138,
                        "name": "signatory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2110,
                        "src": "17900:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 2139,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17911:4:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2140,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2129,
                          "src": "17917:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 2141,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "startBlock",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 859,
                        "src": "17917:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2136,
                        "name": "rep",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 825,
                        "src": "17885:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ReputationInterface_$105",
                          "typeString": "contract ReputationInterface"
                        }
                      },
                      "id": 2137,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getVotesAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 85,
                      "src": "17885:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_bool_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (address,bool,uint256) view external returns (uint256)"
                      }
                    },
                    "id": 2142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17885:52:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17869:68:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2145,
                        "name": "signatory",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2110,
                        "src": "17958:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2146,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2055,
                        "src": "17969:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2147,
                        "name": "support",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2057,
                        "src": "17981:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2148,
                        "name": "votes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2135,
                        "src": "17990:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2144,
                      "name": "_castVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2288,
                      "src": "17948:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,bool,uint256)"
                      }
                    },
                    "id": 2149,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17948:48:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "functionReturnParameters": 2065,
                  "id": 2150,
                  "nodeType": "Return",
                  "src": "17941:55:3"
                }
              ]
            },
            "documentation": {
              "id": 2053,
              "nodeType": "StructuredDocumentation",
              "src": "17065:77:3",
              "text": "@notice helper to cast a vote for someone else by using eip712 signatures"
            },
            "functionSelector": "4634c61f",
            "id": 2152,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "castVoteBySig",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2064,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2055,
                  "mutability": "mutable",
                  "name": "proposalId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2152,
                  "src": "17170:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2054,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17170:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2057,
                  "mutability": "mutable",
                  "name": "support",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2152,
                  "src": "17192:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2056,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "17192:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2059,
                  "mutability": "mutable",
                  "name": "v",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2152,
                  "src": "17208:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 2058,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "17208:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2061,
                  "mutability": "mutable",
                  "name": "r",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2152,
                  "src": "17219:9:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2060,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "17219:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2063,
                  "mutability": "mutable",
                  "name": "s",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2152,
                  "src": "17232:9:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2062,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "17232:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17166:78:3"
            },
            "returnParameters": {
              "id": 2065,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17252:0:3"
            },
            "scope": 2301,
            "src": "17144:856:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2287,
              "nodeType": "Block",
              "src": "18150:1011:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2177,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$902",
                            "typeString": "enum CompoundVotingMachine.ProposalState"
                          },
                          "id": 2170,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2166,
                                "name": "proposalId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2157,
                                "src": "18172:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2165,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1689,
                              "src": "18166:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$902_$",
                                "typeString": "function (uint256) view returns (enum CompoundVotingMachine.ProposalState)"
                              }
                            },
                            "id": 2167,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18166:17:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$902",
                              "typeString": "enum CompoundVotingMachine.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2168,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 902,
                              "src": "18187:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                              }
                            },
                            "id": 2169,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Active",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "18187:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$902",
                              "typeString": "enum CompoundVotingMachine.ProposalState"
                            }
                          },
                          "src": "18166:41:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$902",
                            "typeString": "enum CompoundVotingMachine.ProposalState"
                          },
                          "id": 2176,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2172,
                                "name": "proposalId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2157,
                                "src": "18221:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2171,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1689,
                              "src": "18215:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_enum$_ProposalState_$902_$",
                                "typeString": "function (uint256) view returns (enum CompoundVotingMachine.ProposalState)"
                              }
                            },
                            "id": 2173,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18215:17:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$902",
                              "typeString": "enum CompoundVotingMachine.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2174,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 902,
                              "src": "18236:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$902_$",
                                "typeString": "type(enum CompoundVotingMachine.ProposalState)"
                              }
                            },
                            "id": 2175,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "ActiveTimelock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "18236:28:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$902",
                              "typeString": "enum CompoundVotingMachine.ProposalState"
                            }
                          },
                          "src": "18215:49:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "18166:98:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a5f63617374566f74653a20766f74696e6720697320636c6f736564",
                        "id": 2178,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18269:52:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_166a3717390e8c16823d39628636f1683e4e5f1fc99f80eddfa0336084d64c4c",
                          "typeString": "literal_string \"CompoundVotingMachine::_castVote: voting is closed\""
                        },
                        "value": "CompoundVotingMachine::_castVote: voting is closed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_166a3717390e8c16823d39628636f1683e4e5f1fc99f80eddfa0336084d64c4c",
                          "typeString": "literal_string \"CompoundVotingMachine::_castVote: voting is closed\""
                        }
                      ],
                      "id": 2164,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "18154:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2179,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18154:171:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2180,
                  "nodeType": "ExpressionStatement",
                  "src": "18154:171:3"
                },
                {
                  "assignments": [
                    2182
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2182,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2287,
                      "src": "18330:25:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2181,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 883,
                        "src": "18330:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2186,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2183,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 907,
                      "src": "18358:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$883_storage_$",
                        "typeString": "mapping(uint256 => struct CompoundVotingMachine.Proposal storage ref)"
                      }
                    },
                    "id": 2185,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2184,
                      "name": "proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2157,
                      "src": "18368:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "18358:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$883_storage",
                      "typeString": "struct CompoundVotingMachine.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18330:49:3"
                },
                {
                  "assignments": [
                    2188
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2188,
                      "mutability": "mutable",
                      "name": "receipt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2287,
                      "src": "18383:23:3",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                        "typeString": "struct CompoundVotingMachine.Receipt"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2187,
                        "name": "Receipt",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 893,
                        "src": "18383:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Receipt"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2193,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2189,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2182,
                        "src": "18409:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                        }
                      },
                      "id": 2190,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "receipts",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 879,
                      "src": "18409:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Receipt_$893_storage_$",
                        "typeString": "mapping(address => struct CompoundVotingMachine.Receipt storage ref)"
                      }
                    },
                    "id": 2192,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 2191,
                      "name": "voter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2155,
                      "src": "18427:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "18409:24:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Receipt_$893_storage",
                      "typeString": "struct CompoundVotingMachine.Receipt storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18383:50:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2198,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2195,
                            "name": "receipt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2188,
                            "src": "18449:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                              "typeString": "struct CompoundVotingMachine.Receipt storage pointer"
                            }
                          },
                          "id": 2196,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "hasVoted",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 886,
                          "src": "18449:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 2197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "18469:5:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "src": "18449:25:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6d706f756e64566f74696e674d616368696e653a3a5f63617374566f74653a20766f74657220616c726561647920766f746564",
                        "id": 2199,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18479:55:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6824e3a066b1002ee17ca2800724b8d51655237d4073c6836bcd605f27934aaa",
                          "typeString": "literal_string \"CompoundVotingMachine::_castVote: voter already voted\""
                        },
                        "value": "CompoundVotingMachine::_castVote: voter already voted"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6824e3a066b1002ee17ca2800724b8d51655237d4073c6836bcd605f27934aaa",
                          "typeString": "literal_string \"CompoundVotingMachine::_castVote: voter already voted\""
                        }
                      ],
                      "id": 2194,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "18437:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18437:101:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2201,
                  "nodeType": "ExpressionStatement",
                  "src": "18437:101:3"
                },
                {
                  "assignments": [
                    2203
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2203,
                      "mutability": "mutable",
                      "name": "hasChanged",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2287,
                      "src": "18543:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2202,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "18543:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2209,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2208,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2204,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2182,
                        "src": "18561:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                        }
                      },
                      "id": 2205,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "forVotes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 865,
                      "src": "18561:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2206,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2182,
                        "src": "18581:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                        }
                      },
                      "id": 2207,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "againstVotes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 868,
                      "src": "18581:21:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "18561:41:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18543:59:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 2210,
                    "name": "support",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2159,
                    "src": "18610:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2232,
                    "nodeType": "Block",
                    "src": "18683:66:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2230,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2222,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2182,
                              "src": "18688:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                              }
                            },
                            "id": 2224,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "againstVotes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 868,
                            "src": "18688:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2228,
                                "name": "votes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2161,
                                "src": "18738:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2225,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2182,
                                  "src": "18712:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                    "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                  }
                                },
                                "id": 2226,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "againstVotes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 868,
                                "src": "18712:21:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2227,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7973,
                              "src": "18712:25:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2229,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18712:32:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18688:56:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2231,
                        "nodeType": "ExpressionStatement",
                        "src": "18688:56:3"
                      }
                    ]
                  },
                  "id": 2233,
                  "nodeType": "IfStatement",
                  "src": "18606:143:3",
                  "trueBody": {
                    "id": 2221,
                    "nodeType": "Block",
                    "src": "18619:58:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2211,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2182,
                              "src": "18624:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                              }
                            },
                            "id": 2213,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "forVotes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 865,
                            "src": "18624:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2217,
                                "name": "votes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2161,
                                "src": "18666:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2214,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2182,
                                  "src": "18644:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                    "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                  }
                                },
                                "id": 2215,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "forVotes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 865,
                                "src": "18644:17:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2216,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7973,
                              "src": "18644:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2218,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18644:28:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18624:48:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2220,
                        "nodeType": "ExpressionStatement",
                        "src": "18624:48:3"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2243,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2234,
                      "name": "hasChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2203,
                      "src": "18753:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 2242,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 2235,
                        "name": "hasChanged",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2203,
                        "src": "18766:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2240,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2236,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2182,
                                "src": "18781:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                  "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                }
                              },
                              "id": 2237,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "forVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 865,
                              "src": "18781:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2238,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2182,
                                "src": "18801:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                                  "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                                }
                              },
                              "id": 2239,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "againstVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 868,
                              "src": "18801:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "18781:41:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 2241,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "18780:43:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "18766:57:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "18753:70:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2244,
                  "nodeType": "ExpressionStatement",
                  "src": "18753:70:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2249,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2245,
                        "name": "receipt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2188,
                        "src": "18827:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Receipt storage pointer"
                        }
                      },
                      "id": 2247,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "hasVoted",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 886,
                      "src": "18827:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 2248,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18846:4:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "18827:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2250,
                  "nodeType": "ExpressionStatement",
                  "src": "18827:23:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2255,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2251,
                        "name": "receipt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2188,
                        "src": "18854:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Receipt storage pointer"
                        }
                      },
                      "id": 2253,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "support",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 889,
                      "src": "18854:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2254,
                      "name": "support",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2159,
                      "src": "18872:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "18854:25:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2256,
                  "nodeType": "ExpressionStatement",
                  "src": "18854:25:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2261,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2257,
                        "name": "receipt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2188,
                        "src": "18883:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Receipt_$893_storage_ptr",
                          "typeString": "struct CompoundVotingMachine.Receipt storage pointer"
                        }
                      },
                      "id": 2259,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "votes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 892,
                      "src": "18883:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2260,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2161,
                      "src": "18899:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "18883:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2262,
                  "nodeType": "ExpressionStatement",
                  "src": "18883:21:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2273,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2267,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2263,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2182,
                          "src": "18967:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 2264,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "forVotes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 865,
                        "src": "18967:17:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2265,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2182,
                          "src": "18988:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 2266,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "quoromRequired",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 882,
                        "src": "18988:23:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "18967:44:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2272,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2268,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2182,
                          "src": "19018:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 2269,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "againstVotes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 868,
                        "src": "19018:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2270,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2182,
                          "src": "19043:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$883_storage_ptr",
                            "typeString": "struct CompoundVotingMachine.Proposal storage pointer"
                          }
                        },
                        "id": 2271,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "quoromRequired",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 882,
                        "src": "19043:23:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "19018:48:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "18967:99:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2279,
                  "nodeType": "IfStatement",
                  "src": "18959:146:3",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2275,
                          "name": "proposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2157,
                          "src": "19082:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 2276,
                          "name": "hasChanged",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2203,
                          "src": "19094:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "id": 2274,
                        "name": "_updateETA",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1271,
                        "src": "19071:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$",
                          "typeString": "function (uint256,bool)"
                        }
                      },
                      "id": 2277,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19071:34:3",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 2278,
                    "nodeType": "ExpressionStatement",
                    "src": "19071:34:3"
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2281,
                        "name": "voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2155,
                        "src": "19123:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2282,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2157,
                        "src": "19130:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2283,
                        "name": "support",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2159,
                        "src": "19142:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2284,
                        "name": "votes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2161,
                        "src": "19151:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2280,
                      "name": "VoteCast",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 960,
                      "src": "19114:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bool_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,bool,uint256)"
                      }
                    },
                    "id": 2285,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19114:43:3",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2286,
                  "nodeType": "EmitStatement",
                  "src": "19109:48:3"
                }
              ]
            },
            "documentation": {
              "id": 2153,
              "nodeType": "StructuredDocumentation",
              "src": "18003:42:3",
              "text": "@notice internal helper to cast a vote"
            },
            "id": 2288,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_castVote",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2162,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2155,
                  "mutability": "mutable",
                  "name": "voter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2288,
                  "src": "18069:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2154,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18069:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2157,
                  "mutability": "mutable",
                  "name": "proposalId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2288,
                  "src": "18086:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2156,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "18086:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2159,
                  "mutability": "mutable",
                  "name": "support",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2288,
                  "src": "18108:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2158,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "18108:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2161,
                  "mutability": "mutable",
                  "name": "votes",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2288,
                  "src": "18124:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2160,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "18124:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18065:75:3"
            },
            "returnParameters": {
              "id": 2163,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18150:0:3"
            },
            "scope": 2301,
            "src": "18047:1114:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2299,
              "nodeType": "Block",
              "src": "20435:82:3",
              "statements": [
                {
                  "assignments": [
                    2294
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2294,
                      "mutability": "mutable",
                      "name": "chainId",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2299,
                      "src": "20439:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2293,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "20439:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2295,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20439:15:3"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "20467:29:3",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "20472:20:3",
                        "value": {
                          "arguments": [],
                          "functionName": {
                            "name": "chainid",
                            "nodeType": "YulIdentifier",
                            "src": "20483:7:3"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "20483:9:3"
                        },
                        "variableNames": [
                          {
                            "name": "chainId",
                            "nodeType": "YulIdentifier",
                            "src": "20472:7:3"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 2294,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "20472:7:3",
                      "valueSize": 1
                    }
                  ],
                  "id": 2296,
                  "nodeType": "InlineAssembly",
                  "src": "20458:38:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2297,
                    "name": "chainId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2294,
                    "src": "20506:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2292,
                  "id": 2298,
                  "nodeType": "Return",
                  "src": "20499:14:3"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "3408e470",
            "id": 2300,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getChainId",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2289,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20402:2:3"
            },
            "returnParameters": {
              "id": 2292,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2291,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2300,
                  "src": "20426:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2290,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20426:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20425:9:3"
            },
            "scope": 2301,
            "src": "20383:134:3",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 2302,
        "src": "202:20317:3"
      }
    ],
    "src": "32:20488:3"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.12+commit.27d51765.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.3.0",
  "updatedAt": "2021-01-17T13:45:27.016Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "cancel(uint256)": {
        "details": "could be cheating trying to bypass the single proposal per address by delegating to another address or when delegators do not concur with the proposal done in their name, they can withdraw"
      },
      "castVote(uint256,bool)": {
        "params": {
          "proposalId": "the proposal to vote on",
          "support": "for or against"
        }
      },
      "execute(uint256)": {
        "details": "anyone can call this once its ETA has arrived"
      },
      "propose(address[],uint256[],string[],bytes[],string)": {
        "params": {
          "calldatas": "the list of parameters to pass to each function",
          "signatures": "the list of functions to execute",
          "targets": "list of contracts to be excuted on",
          "values": "list of eth value to be used in each contract call"
        },
        "returns": {
          "_0": "uint256 proposal id"
        }
      }
    },
    "version": 1
  },
  "userdoc": {
    "events": {
      "ProposalCanceled(uint256)": {
        "notice": "An event emitted when a proposal has been canceled"
      },
      "ProposalCreated(uint256,address,address[],uint256[],string[],bytes[],uint256,uint256,string)": {
        "notice": "An event emitted when a new proposal is created"
      },
      "ProposalExecuted(uint256)": {
        "notice": "An event emitted when a proposal has been executed"
      },
      "ProposalQueued(uint256,uint256)": {
        "notice": "An event emitted when a proposal has been queued"
      },
      "VoteCast(address,uint256,bool,uint256)": {
        "notice": "An event emitted when a vote has been cast on a proposal"
      }
    },
    "kind": "user",
    "methods": {
      "BALLOT_TYPEHASH()": {
        "notice": "The EIP-712 typehash for the ballot struct used by the contract"
      },
      "DOMAIN_TYPEHASH()": {
        "notice": "The EIP-712 typehash for the contract's domain"
      },
      "cancel(uint256)": {
        "notice": "cancel a proposal in case proposer no longer holds the votes that were required to propose"
      },
      "castVote(uint256,bool)": {
        "notice": "cast your vote on a proposal"
      },
      "castVoteBySig(uint256,bool,uint8,bytes32,bytes32)": {
        "notice": "helper to cast a vote for someone else by using eip712 signatures"
      },
      "controller()": {
        "notice": "The address of the DAO controller"
      },
      "execute(uint256)": {
        "notice": "execute the proposal list of transactions"
      },
      "gameChangerPeriod()": {
        "notice": "During the queue period if vote decision has changed, we extend queue period so that at least gameChangerPeriod is left"
      },
      "getActions(uint256)": {
        "notice": "get the actions to be done in a proposal"
      },
      "getReceipt(uint256,address)": {
        "notice": "get the receipt of a single voter in a proposal"
      },
      "gracePeriod()": {
        "notice": "the time a succeeded proposal has to be executed on the blockchain"
      },
      "guardian()": {
        "notice": "The address of the Governor Guardian"
      },
      "latestProposalIds(address)": {
        "notice": "The latest proposal for each proposer"
      },
      "name()": {
        "notice": "The name of this contract"
      },
      "proposalCount()": {
        "notice": "The total number of proposals"
      },
      "proposalMaxOperations()": {
        "notice": "The maximum number of actions that can be included in a proposal"
      },
      "proposalThreshold(uint256)": {
        "notice": "The number of votes required in order for a voter to become a proposer"
      },
      "proposals(uint256)": {
        "notice": "The official record of all proposals ever proposed"
      },
      "propose(address[],uint256[],string[],bytes[],string)": {
        "notice": "make a proposal to be voted on"
      },
      "queuePeriod()": {
        "notice": "The duration of time after proposal passed thershold before it can be expected"
      },
      "quorumVotes()": {
        "notice": "The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed"
      },
      "rep()": {
        "notice": "The address of the DAO reputation token"
      },
      "state(uint256)": {
        "notice": "get the current status of a proposal"
      },
      "votingDelay()": {
        "notice": "The delay before voting on a proposal may take place, once proposed"
      },
      "votingPeriod()": {
        "notice": "The duration of voting on a proposal, in blocks"
      },
      "votingPeriodBlocks()": {
        "notice": "the number of blocks a proposal is open for voting (before passing quorum)"
      }
    },
    "version": 1
  }
}