{
  "contractName": "Voting",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "hasInitialized",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_script",
          "type": "bytes"
        }
      ],
      "name": "getEVMScriptExecutor",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRecoveryVault",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "MODIFY_QUORUM_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "MODIFY_SUPPORT_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "token",
          "type": "address"
        }
      ],
      "name": "allowRecoverability",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "appId",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitializationBlock",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "transferToVault",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_sender",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        },
        {
          "name": "_params",
          "type": "uint256[]"
        }
      ],
      "name": "canPerform",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getEVMScriptRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "voteTime",
      "outputs": [
        {
          "name": "",
          "type": "uint64"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "CREATE_VOTES_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "kernel",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "minAcceptQuorumPct",
      "outputs": [
        {
          "name": "",
          "type": "uint64"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isPetrified",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "votesLength",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "supportRequiredPct",
      "outputs": [
        {
          "name": "",
          "type": "uint64"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "token",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "PCT_BASE",
      "outputs": [
        {
          "name": "",
          "type": "uint64"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "voteId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "name": "creator",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "metadata",
          "type": "string"
        }
      ],
      "name": "StartVote",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "voteId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "name": "voter",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "supports",
          "type": "bool"
        },
        {
          "indexed": false,
          "name": "stake",
          "type": "uint256"
        }
      ],
      "name": "CastVote",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "voteId",
          "type": "uint256"
        }
      ],
      "name": "ExecuteVote",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "supportRequiredPct",
          "type": "uint64"
        }
      ],
      "name": "ChangeSupportRequired",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "minAcceptQuorumPct",
          "type": "uint64"
        }
      ],
      "name": "ChangeMinQuorum",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "executor",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "script",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "input",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "returnData",
          "type": "bytes"
        }
      ],
      "name": "ScriptResult",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_token",
          "type": "address"
        },
        {
          "name": "_supportRequiredPct",
          "type": "uint64"
        },
        {
          "name": "_minAcceptQuorumPct",
          "type": "uint64"
        },
        {
          "name": "_voteTime",
          "type": "uint64"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_supportRequiredPct",
          "type": "uint64"
        }
      ],
      "name": "changeSupportRequiredPct",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_minAcceptQuorumPct",
          "type": "uint64"
        }
      ],
      "name": "changeMinAcceptQuorumPct",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_executionScript",
          "type": "bytes"
        },
        {
          "name": "_metadata",
          "type": "string"
        }
      ],
      "name": "newVote",
      "outputs": [
        {
          "name": "voteId",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_executionScript",
          "type": "bytes"
        },
        {
          "name": "_metadata",
          "type": "string"
        },
        {
          "name": "_castVote",
          "type": "bool"
        },
        {
          "name": "_executesIfDecided",
          "type": "bool"
        }
      ],
      "name": "newVote",
      "outputs": [
        {
          "name": "voteId",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_voteId",
          "type": "uint256"
        },
        {
          "name": "_supports",
          "type": "bool"
        },
        {
          "name": "_executesIfDecided",
          "type": "bool"
        }
      ],
      "name": "vote",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_voteId",
          "type": "uint256"
        }
      ],
      "name": "executeVote",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isForwarder",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_evmScript",
          "type": "bytes"
        }
      ],
      "name": "forward",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_sender",
          "type": "address"
        },
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "canForward",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_voteId",
          "type": "uint256"
        },
        {
          "name": "_voter",
          "type": "address"
        }
      ],
      "name": "canVote",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_voteId",
          "type": "uint256"
        }
      ],
      "name": "canExecute",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_voteId",
          "type": "uint256"
        }
      ],
      "name": "getVote",
      "outputs": [
        {
          "name": "open",
          "type": "bool"
        },
        {
          "name": "executed",
          "type": "bool"
        },
        {
          "name": "startDate",
          "type": "uint64"
        },
        {
          "name": "snapshotBlock",
          "type": "uint64"
        },
        {
          "name": "supportRequired",
          "type": "uint64"
        },
        {
          "name": "minAcceptQuorum",
          "type": "uint64"
        },
        {
          "name": "yea",
          "type": "uint256"
        },
        {
          "name": "nay",
          "type": "uint256"
        },
        {
          "name": "votingPower",
          "type": "uint256"
        },
        {
          "name": "script",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_voteId",
          "type": "uint256"
        },
        {
          "name": "_voter",
          "type": "address"
        }
      ],
      "name": "getVoterState",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526200001d62000023640100000000026401000000009004565b62000309565b60006200003e6200015e640100000000026401000000009004565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a4544000000000000000081525090151562000121576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000e5578082015181840152602081019050620000c8565b50505050905090810190601f168015620001135780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200015c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620001ab640100000000026401000000009004565b565b6000620001a67febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e60010260001916620002f764010000000002620034e5176401000000009004565b905090565b6000620001c66200015e640100000000026401000000009004565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a45440000000000000000815250901515620002a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200026d57808201518184015260208101905062000250565b50505050905090810190601f1680156200029b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50620002f4817febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e600102600019166200030264010000000002620043bb179091906401000000009004565b50565b600081549050919050565b8082555050565b614edf80620003196000396000f3006080604052600436106101ac576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630803fac0146101b15780632914b9bd146101e057806332f0a3b5146102895780633c624c75146102e05780634b12311c146103135780635a55c1f0146103825780635eb24332146104bf57806362de7e5a146104f65780637c1d0b87146105295780637e7db6e11461056057806380afdea8146105bb5780638b3dd749146105ee5780639d4941d814610619578063a1658fad1461065c578063a479e50814610708578063bcf93dd61461075f578063be2c64d41461079e578063c0774df3146107d1578063cc63604a14610872578063cdb2867b146108b7578063d4aae0c41461091c578063d5db2c8014610973578063d948d468146109da578063dc474b1a14610a43578063de4796ed14610a82578063de4f634714610ab1578063df133bca14610adc578063df3d330514610b21578063f4b0051314610ba0578063f98a4eca14610c1f578063fad167ab14610c4c578063fc0c546a14610c8b578063fc157cb414610ce2578063fd64eccb14610d21575b600080fd5b3480156101bd57600080fd5b506101c6610d50565b604051808215151515815260200191505060405180910390f35b3480156101ec57600080fd5b50610247600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610d7b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561029557600080fd5b5061029e610e9a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102ec57600080fd5b506102f5610f47565b60405180826000191660001916815260200191505060405180910390f35b34801561031f57600080fd5b5061035e60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f80565b6040518082600281111561036e57fe5b60ff16815260200191505060405180910390f35b34801561038e57600080fd5b506103ad600480360381019080803590602001909291905050506110d1565b604051808b1515151581526020018a1515151581526020018967ffffffffffffffff1667ffffffffffffffff1681526020018867ffffffffffffffff1667ffffffffffffffff1681526020018767ffffffffffffffff1667ffffffffffffffff1681526020018667ffffffffffffffff1667ffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561047b578082015181840152602081019050610460565b50505050905090810190601f1680156104a85780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390f35b3480156104cb57600080fd5b506104f4600480360381019080803567ffffffffffffffff16906020019092919050505061132b565b005b34801561050257600080fd5b5061050b611605565b60405180826000191660001916815260200191505060405180910390f35b34801561053557600080fd5b5061055e600480360381019080803567ffffffffffffffff16906020019092919050505061163e565b005b34801561056c57600080fd5b506105a1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a16565b604051808215151515815260200191505060405180910390f35b3480156105c757600080fd5b506105d0611a21565b60405180826000191660001916815260200191505060405180910390f35b3480156105fa57600080fd5b50610603611a58565b6040518082815260200191505060405180910390f35b34801561062557600080fd5b5061065a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a8f565b005b34801561066857600080fd5b506106ee600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560001916906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611ec1565b604051808215151515815260200191505060405180910390f35b34801561071457600080fd5b5061071d6120c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076b57600080fd5b506107746121e3565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b3480156107aa57600080fd5b506107b36121fd565b60405180826000191660001916815260200191505060405180910390f35b3480156107dd57600080fd5b50610858600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612236565b604051808215151515815260200191505060405180910390f35b34801561087e57600080fd5b5061089d60048036038101908080359060200190929190505050612287565b604051808215151515815260200191505060405180910390f35b3480156108c357600080fd5b5061090260048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124ae565b604051808215151515815260200191505060405180910390f35b34801561092857600080fd5b506109316126ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561097f57600080fd5b506109c4600480360381019080803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390505050612721565b6040518082815260200191505060405180910390f35b3480156109e657600080fd5b50610a41600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506128ef565b005b348015610a4f57600080fd5b50610a586129f9565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b348015610a8e57600080fd5b50610a97612a13565b604051808215151515815260200191505060405180910390f35b348015610abd57600080fd5b50610ac6612a44565b6040518082815260200191505060405180910390f35b348015610ae857600080fd5b50610b1f60048036038101908080359060200190929190803515159060200190929190803515159060200190929190505050612a4a565b005b348015610b2d57600080fd5b50610b9e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190505050612c2a565b005b348015610bac57600080fd5b50610c09600480360381019080803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390803515159060200190929190803515159060200190929190505050612fd2565b6040518082815260200191505060405180910390f35b348015610c2b57600080fd5b50610c4a600480360381019080803590602001909291905050506131a1565b005b348015610c5857600080fd5b50610c6161337b565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b348015610c9757600080fd5b50610ca0613395565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610cee57600080fd5b50610cf76133ba565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b348015610d2d57600080fd5b50610d366133c6565b604051808215151515815260200191505060405180910390f35b600080610d5b611a58565b905060008114158015610d75575080610d726133cf565b10155b91505090565b6000610d856120c8565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e0c578082015181840152602081019050610df1565b50505050905090810190601f168015610e395780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015610e5857600080fd5b505af1158015610e6c573d6000803e3d6000fd5b505050506040513d6020811015610e8257600080fd5b81019080805190602001909291905050509050919050565b6000610ea46126ea565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610f0757600080fd5b505af1158015610f1b573d6000803e3d6000fd5b505050506040513d6020811015610f3157600080fd5b8101908080519060200190929190505050905090565b60405180807f4d4f444946595f51554f52554d5f524f4c4500000000000000000000000000008152506012019050604051809103902081565b60008260035481106040805190810160405280600e81526020017f564f54494e475f4e4f5f564f5445000000000000000000000000000000000000815250901515611066576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561102b578082015181840152602081019050611010565b50505050905090810190601f1680156110585780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506002600085815260200190815260200160002060060160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b6000806000806000806000806000606060008b60035481106040805190810160405280600e81526020017f564f54494e475f4e4f5f564f54450000000000000000000000000000000000008152509015156111c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561118c578082015181840152602081019050611171565b50505050905090810190601f1680156111b95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600260008e815260200190815260200160002091506111e6826133d7565b9b508160000160009054906101000a900460ff169a508160000160019054906101000a900467ffffffffffffffff1699508160000160099054906101000a900467ffffffffffffffff1698508160000160119054906101000a900467ffffffffffffffff1697508160010160009054906101000a900467ffffffffffffffff169650816002015495508160030154945081600401549350816005018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113155780601f106112ea57610100808354040283529160200191611315565b820191906000526020600020905b8154815290600101906020018083116112f857829003601f168201915b5050505050925050509193959799509193959799565b60405180807f4d4f444946595f51554f52554d5f524f4c450000000000000000000000000000815250601201905060405180910390206113958267ffffffffffffffff16600160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16613463565b6113a0338383611ec1565b6040805190810160405280600f81526020017f4150505f415554485f4641494c4544000000000000000000000000000000000081525090151561147e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611443578082015181840152602081019050611428565b50505050905090810190601f1680156114705780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600060149054906101000a900467ffffffffffffffff1667ffffffffffffffff168367ffffffffffffffff1611156040805190810160405280601981526020017f564f54494e475f4348414e47455f51554f52554d5f504354530000000000000081525090151561158b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611550578082015181840152602081019050611535565b50505050905090810190601f16801561157d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082600160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f3172f2e9273c729c2a47cc8bf7e7f18506e3e3035126d562602bd2155bc78a5083604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390a1505050565b60405180807f4d4f444946595f535550504f52545f524f4c45000000000000000000000000008152506013019050604051809103902081565b60405180807f4d4f444946595f535550504f52545f524f4c4500000000000000000000000000815250601301905060405180910390206116a88267ffffffffffffffff16600060149054906101000a900467ffffffffffffffff1667ffffffffffffffff16613463565b6116b3338383611ec1565b6040805190810160405280600f81526020017f4150505f415554485f4641494c45440000000000000000000000000000000000815250901515611791576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561175657808201518184015260208101905061173b565b50505050905090810190601f1680156117835780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508267ffffffffffffffff16600160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1611156040805190810160405280601a81526020017f564f54494e475f4348414e47455f535550504f52545f5043545300000000000081525090151561189e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611863578082015181840152602081019050611848565b50505050905090810190601f1680156118905780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50670de0b6b3a764000067ffffffffffffffff168367ffffffffffffffff16106040805190810160405280601a81526020017f564f54494e475f4348414e47455f535550505f544f4f5f42494700000000000081525090151561199c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611961578082015181840152602081019050611946565b50505050905090810190601f16801561198e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082600060146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f903b617f7f36eb047a29b89d1bf7885fdae31d250c3320fccf11d045c11b396e83604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390a1505050565b600060019050919050565b6000611a537fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b600102600019166134da565b905090565b6000611a8a7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e600102600019166134e5565b905090565b600080611a9b83611a16565b6040805190810160405280601281526020017f5245434f5645525f444953414c4c4f5745440000000000000000000000000000815250901515611b79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611b3e578082015181840152602081019050611b23565b50505050905090810190601f168015611b6b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50611b82610e9a565b9150611b8d826134f0565b6040805190810160405280601a81526020017f5245434f5645525f5641554c545f4e4f545f434f4e5452414354000000000000815250901515611c6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611c30578082015181840152602081019050611c15565b50505050905090810190601f168015611c5d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d04578173ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611cfe573d6000803e3d6000fd5b50611ebc565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611d9f57600080fd5b505af1158015611db3573d6000803e3d6000fd5b505050506040513d6020811015611dc957600080fd5b810190808051906020019092919050505090508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611e7f57600080fd5b505af1158015611e93573d6000803e3d6000fd5b505050506040513d6020811015611ea957600080fd5b8101908080519060200190929190505050505b505050565b60008060606000611ed0610d50565b1515611edf57600093506120be565b611ee76126ea565b9250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f2757600093506120be565b602085510290508491508082528273ffffffffffffffffffffffffffffffffffffffff1663fdef9106883089866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612031578082015181840152602081019050612016565b50505050905090810190601f16801561205e5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561208057600080fd5b505af1158015612094573d6000803e3d6000fd5b505050506040513d60208110156120aa57600080fd5b810190808051906020019092919050505093505b5050509392505050565b6000806120d36126ea565b73ffffffffffffffffffffffffffffffffffffffff1663be00bbd87fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb6001027fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b15801561219f57600080fd5b505af11580156121b3573d6000803e3d6000fd5b505050506040513d60208110156121c957600080fd5b810190808051906020019092919050505090508091505090565b600160089054906101000a900467ffffffffffffffff1681565b60405180807f4352454154455f564f5445535f524f4c450000000000000000000000000000008152506011019050604051809103902081565b600061227f8360405180807f4352454154455f564f5445535f524f4c450000000000000000000000000000008152506011019050604051809103902061227a613542565b611ec1565b905092915050565b60008060008360035481106040805190810160405280600e81526020017f564f54494e475f4e4f5f564f5445000000000000000000000000000000000000815250901515612370576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561233557808201518184015260208101905061231a565b50505050905090810190601f1680156123625780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506002600086815260200190815260200160002092508260000160009054906101000a900460ff16156123a657600093506124a6565b6123db836002015484600401548560000160119054906101000a900467ffffffffffffffff1667ffffffffffffffff16613547565b156123e957600193506124a6565b6124048360030154846002015461359c90919063ffffffff16565b915061240f836133d7565b1561241d57600093506124a6565b61244e8360020154838560000160119054906101000a900467ffffffffffffffff1667ffffffffffffffff16613547565b151561245d57600093506124a6565b612492836002015484600401548560010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16613547565b15156124a157600093506124a6565b600193505b505050919050565b6000808360035481106040805190810160405280600e81526020017f564f54494e475f4e4f5f564f5445000000000000000000000000000000000000815250901515612595576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561255a57808201518184015260208101905061253f565b50505050905090810190601f1680156125875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506002600086815260200190815260200160002091506125b4826133d7565b80156126e0575060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ee2cd7e868560000160099054906101000a900467ffffffffffffffff166040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff16815260200192505050602060405180830381600087803b1580156126a357600080fd5b505af11580156126b7573d6000803e3d6000fd5b505050506040513d60208110156126cd57600080fd5b8101908080519060200190929190505050115b9250505092915050565b600061271c7f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b60010260001916613691565b905090565b600060405180807f4352454154455f564f5445535f524f4c45000000000000000000000000000000815250601101905060405180910390206127943382600060405190808252806020026020018201604052801561278e5781602001602082028038833980820191505090505b50611ec1565b6040805190810160405280600f81526020017f4150505f415554485f4641494c45440000000000000000000000000000000000815250901515612872576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561283757808201518184015260208101905061281c565b50505050905090810190601f1680156128645780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506128e486868080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505085858080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505060018061369c565b915050949350505050565b6128f93382612236565b6040805190810160405280601681526020017f564f54494e475f43414e5f4e4f545f464f5257415244000000000000000000008152509015156129d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561299c578082015181840152602081019050612981565b50505050905090810190601f1680156129c95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506129f581602060405190810160405280600081525060018061369c565b5050565b600160009054906101000a900467ffffffffffffffff1681565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612a3e611a58565b14905090565b60035481565b8260035481106040805190810160405280600e81526020017f564f54494e475f4e4f5f564f5445000000000000000000000000000000000000815250901515612b2e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612af3578082015181840152602081019050612ad8565b50505050905090810190601f168015612b205780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50612b3984336124ae565b6040805190810160405280601381526020017f564f54494e475f43414e5f4e4f545f564f544500000000000000000000000000815250901515612c17576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612bdc578082015181840152602081019050612bc1565b50505050905090810190601f168015612c095780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50612c2484843385613a8a565b50505050565b6000612c34611a58565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a45440000000000000000815250901515612d13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cd8578082015181840152602081019050612cbd565b50505050905090810190601f168015612d055780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50612d1c613dd9565b8267ffffffffffffffff168267ffffffffffffffff1611156040805190810160405280601081526020017f564f54494e475f494e49545f5043545300000000000000000000000000000000815250901515612e12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612dd7578082015181840152602081019050612dbc565b50505050905090810190601f168015612e045780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50670de0b6b3a764000067ffffffffffffffff168367ffffffffffffffff16106040805190810160405280601b81526020017f564f54494e475f494e49545f535550504f52545f544f4f5f4249470000000000815250901515612f10576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612ed5578082015181840152602081019050612eba565b50505050905090810190601f168015612f025780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50836000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600060146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555081600160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080600160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050505050565b600060405180807f4352454154455f564f5445535f524f4c45000000000000000000000000000000815250601101905060405180910390206130453382600060405190808252806020026020018201604052801561303f5781602001602082028038833980820191505090505b50611ec1565b6040805190810160405280600f81526020017f4150505f415554485f4641494c45440000000000000000000000000000000000815250901515613123576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156130e85780820151818401526020810190506130cd565b50505050905090810190601f1680156131155780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061319488888080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505087878080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050868661369c565b9150509695505050505050565b8060035481106040805190810160405280600e81526020017f564f54494e475f4e4f5f564f5445000000000000000000000000000000000000815250901515613285576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561324a57808201518184015260208101905061322f565b50505050905090810190601f1680156132775780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061328f82612287565b6040805190810160405280601681526020017f564f54494e475f43414e5f4e4f545f455845435554450000000000000000000081525090151561336d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613332578082015181840152602081019050613317565b50505050905090810190601f16801561335f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061337782613f06565b5050565b600060149054906101000a900467ffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b670de0b6b3a764000081565b60006001905090565b600043905090565b6000613424600160089054906101000a900467ffffffffffffffff168360000160019054906101000a900467ffffffffffffffff1667ffffffffffffffff1661407d90919063ffffffff16565b67ffffffffffffffff16613436614186565b67ffffffffffffffff1610801561345c57508160000160009054906101000a900460ff16155b9050919050565b606060026040519080825280602002602001820160405280156134955781602001602082028038833980820191505090505b509050828160008151811015156134a857fe5b9060200190602002018181525050818160018151811015156134c657fe5b906020019060200201818152505092915050565b600081549050919050565b600081549050919050565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613531576000915061353c565b823b90506000811191505b50919050565b606090565b600080600084141561355c5760009150613594565b83613582670de0b6b3a764000067ffffffffffffffff168761419d90919063ffffffff16565b81151561358b57fe5b04905082811191505b509392505050565b6000808284019050838110156040805190810160405280601181526020017f4d4154485f4144445f4f564552464c4f57000000000000000000000000000000815250901515613686576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561364b578082015181840152602081019050613630565b50505050905090810190601f1680156136785780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508091505092915050565b600081549050919050565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663981b24d08260000160099054906101000a900467ffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff168152602001915050602060405180830381600087803b15801561375357600080fd5b505af1158015613767573d6000803e3d6000fd5b505050506040513d602081101561377d57600080fd5b81019080805190602001909291905050509150600082116040805190810160405280601681526020017f564f54494e475f4e4f5f564f54494e475f504f57455200000000000000000000815250901515613872576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561383757808201518184015260208101905061381c565b50505050905090810190601f1680156138645780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600360008154809291906001019190505592506002600084815260200190815260200160002090506138a3614186565b8160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060016138d76142af565b038160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600060149054906101000a900467ffffffffffffffff168160000160116101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600160009054906101000a900467ffffffffffffffff168160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550818160040181905550868160050190805190602001906139a5929190614e0e565b503373ffffffffffffffffffffffffffffffffffffffff16837f4d72fe0577a3a3f7da968d7b892779dde102519c25527b29cf7054f245c791b9886040518080602001828103825283818151815260200191508051906020019080838360005b83811015613a20578082015181840152602081019050613a05565b50505050905090810190601f168015613a4d5780820380516001836020036101000a031916815260200191505b509250505060405180910390a3848015613a6d5750613a6c83336124ae565b5b15613a8057613a7f8360013387613a8a565b5b5050949350505050565b60008060006002600088815260200190815260200160002092506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ee2cd7e868560000160099054906101000a900467ffffffffffffffff166040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff16815260200192505050602060405180830381600087803b158015613b8a57600080fd5b505af1158015613b9e573d6000803e3d6000fd5b505050506040513d6020811015613bb457600080fd5b810190808051906020019092919050505091508260060160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905060016002811115613c2557fe5b816002811115613c3157fe5b1415613c5b57613c4e8284600201546142c690919063ffffffff16565b8360020181905550613c9a565b600280811115613c6757fe5b816002811115613c7357fe5b1415613c9957613c908284600301546142c690919063ffffffff16565b83600301819055505b5b8515613cc457613cb782846002015461359c90919063ffffffff16565b8360020181905550613ce4565b613cdb82846003015461359c90919063ffffffff16565b83600301819055505b85613cf0576002613cf3565b60015b8360060160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115613d4f57fe5b02179055508473ffffffffffffffffffffffffffffffffffffffff16877fb34ee265e3d4f5ec4e8b52d59b2a9be8fceca2f274ebc080d8fba797fea9391f888560405180831515151581526020018281526020019250505060405180910390a3838015613dc15750613dc087612287565b5b15613dd057613dcf87613f06565b5b50505050505050565b6000613de3611a58565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a45440000000000000000815250901515613ec2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613e87578082015181840152602081019050613e6c565b50505050905090810190601f168015613eb45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50613f04613ece6133cf565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e600102600019166143bb90919063ffffffff16565b565b6000606060026000848152602001908152602001600020915060018260000160006101000a81548160ff02191690831515021790555060006040519080825280601f01601f191660200182016040528015613f705781602001602082028038833980820191505090505b50905061404a826005018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561400e5780601f10613fe35761010080835404028352916020019161400e565b820191906000526020600020905b815481529060010190602001808311613ff157829003601f168201915b50505050508260006040519080825280602002602001820160405280156140445781602001602082028038833980820191505090505b506143c2565b50827fbf8e2b108bb7c980e08903a8a46527699d5e84905a082d56dacb4150725c8cab60405160405180910390a2505050565b60008082840190508367ffffffffffffffff168167ffffffffffffffff1610156040805190810160405280601381526020017f4d41544836345f4144445f4f564552464c4f570000000000000000000000000081525090151561417b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614140578082015181840152602081019050614125565b50505050905090810190601f16801561416d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508091505092915050565b6000614198614193614cbf565b614cc7565b905090565b60008060008414156141b257600091506142a8565b82840290508284828115156141c357fe5b04146040805190810160405280601181526020017f4d4154485f4d554c5f4f564552464c4f570000000000000000000000000000008152509015156142a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561426857808201518184015260208101905061424d565b50505050905090810190601f1680156142955780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508091505b5092915050565b60006142c16142bc6133cf565b614cc7565b905090565b600080838311156040805190810160405280601281526020017f4d4154485f5355425f554e444552464c4f5700000000000000000000000000008152509015156143ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614370578082015181840152602081019050614355565b50505050905090810190601f16801561439d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390508091505092915050565b8082555050565b60606000806060806143d2610d50565b6040805190810160405280601481526020017f494e49545f4e4f545f494e495449414c495a45440000000000000000000000008152509015156144b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561447557808201518184015260208101905061445a565b50505050905090810190601f1680156144a25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000806144bc6126ea565b91506144c6611a21565b90506144d18a610d7b565b9550600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156040805190810160405280601b81526020017f45564d52554e5f4558454355544f525f554e415641494c41424c4500000000008152509015156145e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156145a757808201518184015260208101905061458c565b50505050905090810190601f1680156145d45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508573ffffffffffffffffffffffffffffffffffffffff1663279cea3590507c0100000000000000000000000000000000000000000000000000000000029450848a8a8a60405160240180806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015614671578082015181840152602081019050614656565b50505050905090810190601f16801561469e5780820380516001836020036101000a031916815260200191505b50848103835286818151815260200191508051906020019080838360005b838110156146d75780820151818401526020810190506146bc565b50505050905090810190601f1680156147045780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019060200280838360005b83811015614740578082015181840152602081019050614725565b505050509050019650505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505093508573ffffffffffffffffffffffffffffffffffffffff168460405180828051906020019080838360005b838110156147f35780820151818401526020810190506147d8565b50505050905090810190601f1680156148205780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af49150506040805190810160405280601981526020017f45564d52554e5f455845435554494f4e5f524556455254454400000000000000815250901515614911576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156148d65780820151818401526020810190506148bb565b50505050905090810190601f1680156149035780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061491a614dde565b92508573ffffffffffffffffffffffffffffffffffffffff167f5229a5dba83a54ae8cb5b51bdd6de9474cacbe9dd332f5185f3a4f4f2e3f4ad98b8b8660405180806020018060200180602001848103845287818151815260200191508051906020019080838360005b8381101561499f578082015181840152602081019050614984565b50505050905090810190601f1680156149cc5780820380516001836020036101000a031916815260200191505b50848103835286818151815260200191508051906020019080838360005b83811015614a055780820151818401526020810190506149ea565b50505050905090810190601f168015614a325780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b83811015614a6b578082015181840152602081019050614a50565b50505050905090810190601f168015614a985780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a28296508173ffffffffffffffffffffffffffffffffffffffff16614acb6126ea565b73ffffffffffffffffffffffffffffffffffffffff16146040805190810160405280601f81526020017f45564d52554e5f50524f5445435445445f53544154455f4d4f44494649454400815250901515614bc0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614b85578082015181840152602081019050614b6a565b50505050905090810190601f168015614bb25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508060001916614bce611a21565b60001916146040805190810160405280601f81526020017f45564d52554e5f50524f5445435445445f53544154455f4d4f44494649454400815250901515614cb1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614c76578082015181840152602081019050614c5b565b50505050905090810190601f168015614ca35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050505050509392505050565b600042905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff168211156040805190810160405280601581526020017f55494e5436345f4e554d4245525f544f4f5f4249470000000000000000000000815250901515614dd5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614d9a578082015181840152602081019050614d7f565b50505050905090810190601f168015614dc75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50819050919050565b60603d8060008114614e05576040519250602082018301604052602082036020843e614e06565b5b505080905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614e4f57805160ff1916838001178555614e7d565b82800160010185558215614e7d579182015b82811115614e7c578251825591602001919060010190614e61565b5b509050614e8a9190614e8e565b5090565b614eb091905b80821115614eac576000816000905550600101614e94565b5090565b905600a165627a7a7230582028457d321329327bec4fa6f53834f8722ef233baa3b4d54ad9caf9ae6c8cb6010029",
  "deployedBytecode": "0x6080604052600436106101ac576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630803fac0146101b15780632914b9bd146101e057806332f0a3b5146102895780633c624c75146102e05780634b12311c146103135780635a55c1f0146103825780635eb24332146104bf57806362de7e5a146104f65780637c1d0b87146105295780637e7db6e11461056057806380afdea8146105bb5780638b3dd749146105ee5780639d4941d814610619578063a1658fad1461065c578063a479e50814610708578063bcf93dd61461075f578063be2c64d41461079e578063c0774df3146107d1578063cc63604a14610872578063cdb2867b146108b7578063d4aae0c41461091c578063d5db2c8014610973578063d948d468146109da578063dc474b1a14610a43578063de4796ed14610a82578063de4f634714610ab1578063df133bca14610adc578063df3d330514610b21578063f4b0051314610ba0578063f98a4eca14610c1f578063fad167ab14610c4c578063fc0c546a14610c8b578063fc157cb414610ce2578063fd64eccb14610d21575b600080fd5b3480156101bd57600080fd5b506101c6610d50565b604051808215151515815260200191505060405180910390f35b3480156101ec57600080fd5b50610247600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610d7b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561029557600080fd5b5061029e610e9a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102ec57600080fd5b506102f5610f47565b60405180826000191660001916815260200191505060405180910390f35b34801561031f57600080fd5b5061035e60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f80565b6040518082600281111561036e57fe5b60ff16815260200191505060405180910390f35b34801561038e57600080fd5b506103ad600480360381019080803590602001909291905050506110d1565b604051808b1515151581526020018a1515151581526020018967ffffffffffffffff1667ffffffffffffffff1681526020018867ffffffffffffffff1667ffffffffffffffff1681526020018767ffffffffffffffff1667ffffffffffffffff1681526020018667ffffffffffffffff1667ffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561047b578082015181840152602081019050610460565b50505050905090810190601f1680156104a85780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390f35b3480156104cb57600080fd5b506104f4600480360381019080803567ffffffffffffffff16906020019092919050505061132b565b005b34801561050257600080fd5b5061050b611605565b60405180826000191660001916815260200191505060405180910390f35b34801561053557600080fd5b5061055e600480360381019080803567ffffffffffffffff16906020019092919050505061163e565b005b34801561056c57600080fd5b506105a1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a16565b604051808215151515815260200191505060405180910390f35b3480156105c757600080fd5b506105d0611a21565b60405180826000191660001916815260200191505060405180910390f35b3480156105fa57600080fd5b50610603611a58565b6040518082815260200191505060405180910390f35b34801561062557600080fd5b5061065a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a8f565b005b34801561066857600080fd5b506106ee600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560001916906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611ec1565b604051808215151515815260200191505060405180910390f35b34801561071457600080fd5b5061071d6120c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076b57600080fd5b506107746121e3565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b3480156107aa57600080fd5b506107b36121fd565b60405180826000191660001916815260200191505060405180910390f35b3480156107dd57600080fd5b50610858600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612236565b604051808215151515815260200191505060405180910390f35b34801561087e57600080fd5b5061089d60048036038101908080359060200190929190505050612287565b604051808215151515815260200191505060405180910390f35b3480156108c357600080fd5b5061090260048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124ae565b604051808215151515815260200191505060405180910390f35b34801561092857600080fd5b506109316126ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561097f57600080fd5b506109c4600480360381019080803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390505050612721565b6040518082815260200191505060405180910390f35b3480156109e657600080fd5b50610a41600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506128ef565b005b348015610a4f57600080fd5b50610a586129f9565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b348015610a8e57600080fd5b50610a97612a13565b604051808215151515815260200191505060405180910390f35b348015610abd57600080fd5b50610ac6612a44565b6040518082815260200191505060405180910390f35b348015610ae857600080fd5b50610b1f60048036038101908080359060200190929190803515159060200190929190803515159060200190929190505050612a4a565b005b348015610b2d57600080fd5b50610b9e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190505050612c2a565b005b348015610bac57600080fd5b50610c09600480360381019080803590602001908201803590602001919091929391929390803590602001908201803590602001919091929391929390803515159060200190929190803515159060200190929190505050612fd2565b6040518082815260200191505060405180910390f35b348015610c2b57600080fd5b50610c4a600480360381019080803590602001909291905050506131a1565b005b348015610c5857600080fd5b50610c6161337b565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b348015610c9757600080fd5b50610ca0613395565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610cee57600080fd5b50610cf76133ba565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b348015610d2d57600080fd5b50610d366133c6565b604051808215151515815260200191505060405180910390f35b600080610d5b611a58565b905060008114158015610d75575080610d726133cf565b10155b91505090565b6000610d856120c8565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e0c578082015181840152602081019050610df1565b50505050905090810190601f168015610e395780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015610e5857600080fd5b505af1158015610e6c573d6000803e3d6000fd5b505050506040513d6020811015610e8257600080fd5b81019080805190602001909291905050509050919050565b6000610ea46126ea565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610f0757600080fd5b505af1158015610f1b573d6000803e3d6000fd5b505050506040513d6020811015610f3157600080fd5b8101908080519060200190929190505050905090565b60405180807f4d4f444946595f51554f52554d5f524f4c4500000000000000000000000000008152506012019050604051809103902081565b60008260035481106040805190810160405280600e81526020017f564f54494e475f4e4f5f564f5445000000000000000000000000000000000000815250901515611066576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561102b578082015181840152602081019050611010565b50505050905090810190601f1680156110585780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506002600085815260200190815260200160002060060160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b6000806000806000806000806000606060008b60035481106040805190810160405280600e81526020017f564f54494e475f4e4f5f564f54450000000000000000000000000000000000008152509015156111c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561118c578082015181840152602081019050611171565b50505050905090810190601f1680156111b95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600260008e815260200190815260200160002091506111e6826133d7565b9b508160000160009054906101000a900460ff169a508160000160019054906101000a900467ffffffffffffffff1699508160000160099054906101000a900467ffffffffffffffff1698508160000160119054906101000a900467ffffffffffffffff1697508160010160009054906101000a900467ffffffffffffffff169650816002015495508160030154945081600401549350816005018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113155780601f106112ea57610100808354040283529160200191611315565b820191906000526020600020905b8154815290600101906020018083116112f857829003601f168201915b5050505050925050509193959799509193959799565b60405180807f4d4f444946595f51554f52554d5f524f4c450000000000000000000000000000815250601201905060405180910390206113958267ffffffffffffffff16600160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16613463565b6113a0338383611ec1565b6040805190810160405280600f81526020017f4150505f415554485f4641494c4544000000000000000000000000000000000081525090151561147e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611443578082015181840152602081019050611428565b50505050905090810190601f1680156114705780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600060149054906101000a900467ffffffffffffffff1667ffffffffffffffff168367ffffffffffffffff1611156040805190810160405280601981526020017f564f54494e475f4348414e47455f51554f52554d5f504354530000000000000081525090151561158b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611550578082015181840152602081019050611535565b50505050905090810190601f16801561157d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082600160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f3172f2e9273c729c2a47cc8bf7e7f18506e3e3035126d562602bd2155bc78a5083604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390a1505050565b60405180807f4d4f444946595f535550504f52545f524f4c45000000000000000000000000008152506013019050604051809103902081565b60405180807f4d4f444946595f535550504f52545f524f4c4500000000000000000000000000815250601301905060405180910390206116a88267ffffffffffffffff16600060149054906101000a900467ffffffffffffffff1667ffffffffffffffff16613463565b6116b3338383611ec1565b6040805190810160405280600f81526020017f4150505f415554485f4641494c45440000000000000000000000000000000000815250901515611791576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561175657808201518184015260208101905061173b565b50505050905090810190601f1680156117835780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508267ffffffffffffffff16600160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1611156040805190810160405280601a81526020017f564f54494e475f4348414e47455f535550504f52545f5043545300000000000081525090151561189e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611863578082015181840152602081019050611848565b50505050905090810190601f1680156118905780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50670de0b6b3a764000067ffffffffffffffff168367ffffffffffffffff16106040805190810160405280601a81526020017f564f54494e475f4348414e47455f535550505f544f4f5f42494700000000000081525090151561199c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611961578082015181840152602081019050611946565b50505050905090810190601f16801561198e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082600060146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f903b617f7f36eb047a29b89d1bf7885fdae31d250c3320fccf11d045c11b396e83604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390a1505050565b600060019050919050565b6000611a537fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b600102600019166134da565b905090565b6000611a8a7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e600102600019166134e5565b905090565b600080611a9b83611a16565b6040805190810160405280601281526020017f5245434f5645525f444953414c4c4f5745440000000000000000000000000000815250901515611b79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611b3e578082015181840152602081019050611b23565b50505050905090810190601f168015611b6b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50611b82610e9a565b9150611b8d826134f0565b6040805190810160405280601a81526020017f5245434f5645525f5641554c545f4e4f545f434f4e5452414354000000000000815250901515611c6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611c30578082015181840152602081019050611c15565b50505050905090810190601f168015611c5d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d04578173ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611cfe573d6000803e3d6000fd5b50611ebc565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611d9f57600080fd5b505af1158015611db3573d6000803e3d6000fd5b505050506040513d6020811015611dc957600080fd5b810190808051906020019092919050505090508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611e7f57600080fd5b505af1158015611e93573d6000803e3d6000fd5b505050506040513d6020811015611ea957600080fd5b8101908080519060200190929190505050505b505050565b60008060606000611ed0610d50565b1515611edf57600093506120be565b611ee76126ea565b9250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f2757600093506120be565b602085510290508491508082528273ffffffffffffffffffffffffffffffffffffffff1663fdef9106883089866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612031578082015181840152602081019050612016565b50505050905090810190601f16801561205e5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561208057600080fd5b505af1158015612094573d6000803e3d6000fd5b505050506040513d60208110156120aa57600080fd5b810190808051906020019092919050505093505b5050509392505050565b6000806120d36126ea565b73ffffffffffffffffffffffffffffffffffffffff1663be00bbd87fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb6001027fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b15801561219f57600080fd5b505af11580156121b3573d6000803e3d6000fd5b505050506040513d60208110156121c957600080fd5b810190808051906020019092919050505090508091505090565b600160089054906101000a900467ffffffffffffffff1681565b60405180807f4352454154455f564f5445535f524f4c450000000000000000000000000000008152506011019050604051809103902081565b600061227f8360405180807f4352454154455f564f5445535f524f4c450000000000000000000000000000008152506011019050604051809103902061227a613542565b611ec1565b905092915050565b60008060008360035481106040805190810160405280600e81526020017f564f54494e475f4e4f5f564f5445000000000000000000000000000000000000815250901515612370576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561233557808201518184015260208101905061231a565b50505050905090810190601f1680156123625780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506002600086815260200190815260200160002092508260000160009054906101000a900460ff16156123a657600093506124a6565b6123db836002015484600401548560000160119054906101000a900467ffffffffffffffff1667ffffffffffffffff16613547565b156123e957600193506124a6565b6124048360030154846002015461359c90919063ffffffff16565b915061240f836133d7565b1561241d57600093506124a6565b61244e8360020154838560000160119054906101000a900467ffffffffffffffff1667ffffffffffffffff16613547565b151561245d57600093506124a6565b612492836002015484600401548560010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16613547565b15156124a157600093506124a6565b600193505b505050919050565b6000808360035481106040805190810160405280600e81526020017f564f54494e475f4e4f5f564f5445000000000000000000000000000000000000815250901515612595576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561255a57808201518184015260208101905061253f565b50505050905090810190601f1680156125875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506002600086815260200190815260200160002091506125b4826133d7565b80156126e0575060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ee2cd7e868560000160099054906101000a900467ffffffffffffffff166040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff16815260200192505050602060405180830381600087803b1580156126a357600080fd5b505af11580156126b7573d6000803e3d6000fd5b505050506040513d60208110156126cd57600080fd5b8101908080519060200190929190505050115b9250505092915050565b600061271c7f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b60010260001916613691565b905090565b600060405180807f4352454154455f564f5445535f524f4c45000000000000000000000000000000815250601101905060405180910390206127943382600060405190808252806020026020018201604052801561278e5781602001602082028038833980820191505090505b50611ec1565b6040805190810160405280600f81526020017f4150505f415554485f4641494c45440000000000000000000000000000000000815250901515612872576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561283757808201518184015260208101905061281c565b50505050905090810190601f1680156128645780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506128e486868080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505085858080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505060018061369c565b915050949350505050565b6128f93382612236565b6040805190810160405280601681526020017f564f54494e475f43414e5f4e4f545f464f5257415244000000000000000000008152509015156129d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561299c578082015181840152602081019050612981565b50505050905090810190601f1680156129c95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506129f581602060405190810160405280600081525060018061369c565b5050565b600160009054906101000a900467ffffffffffffffff1681565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612a3e611a58565b14905090565b60035481565b8260035481106040805190810160405280600e81526020017f564f54494e475f4e4f5f564f5445000000000000000000000000000000000000815250901515612b2e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612af3578082015181840152602081019050612ad8565b50505050905090810190601f168015612b205780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50612b3984336124ae565b6040805190810160405280601381526020017f564f54494e475f43414e5f4e4f545f564f544500000000000000000000000000815250901515612c17576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612bdc578082015181840152602081019050612bc1565b50505050905090810190601f168015612c095780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50612c2484843385613a8a565b50505050565b6000612c34611a58565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a45440000000000000000815250901515612d13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cd8578082015181840152602081019050612cbd565b50505050905090810190601f168015612d055780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50612d1c613dd9565b8267ffffffffffffffff168267ffffffffffffffff1611156040805190810160405280601081526020017f564f54494e475f494e49545f5043545300000000000000000000000000000000815250901515612e12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612dd7578082015181840152602081019050612dbc565b50505050905090810190601f168015612e045780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50670de0b6b3a764000067ffffffffffffffff168367ffffffffffffffff16106040805190810160405280601b81526020017f564f54494e475f494e49545f535550504f52545f544f4f5f4249470000000000815250901515612f10576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612ed5578082015181840152602081019050612eba565b50505050905090810190601f168015612f025780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50836000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600060146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555081600160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080600160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050505050565b600060405180807f4352454154455f564f5445535f524f4c45000000000000000000000000000000815250601101905060405180910390206130453382600060405190808252806020026020018201604052801561303f5781602001602082028038833980820191505090505b50611ec1565b6040805190810160405280600f81526020017f4150505f415554485f4641494c45440000000000000000000000000000000000815250901515613123576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156130e85780820151818401526020810190506130cd565b50505050905090810190601f1680156131155780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061319488888080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505087878080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050868661369c565b9150509695505050505050565b8060035481106040805190810160405280600e81526020017f564f54494e475f4e4f5f564f5445000000000000000000000000000000000000815250901515613285576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561324a57808201518184015260208101905061322f565b50505050905090810190601f1680156132775780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061328f82612287565b6040805190810160405280601681526020017f564f54494e475f43414e5f4e4f545f455845435554450000000000000000000081525090151561336d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613332578082015181840152602081019050613317565b50505050905090810190601f16801561335f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061337782613f06565b5050565b600060149054906101000a900467ffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b670de0b6b3a764000081565b60006001905090565b600043905090565b6000613424600160089054906101000a900467ffffffffffffffff168360000160019054906101000a900467ffffffffffffffff1667ffffffffffffffff1661407d90919063ffffffff16565b67ffffffffffffffff16613436614186565b67ffffffffffffffff1610801561345c57508160000160009054906101000a900460ff16155b9050919050565b606060026040519080825280602002602001820160405280156134955781602001602082028038833980820191505090505b509050828160008151811015156134a857fe5b9060200190602002018181525050818160018151811015156134c657fe5b906020019060200201818152505092915050565b600081549050919050565b600081549050919050565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613531576000915061353c565b823b90506000811191505b50919050565b606090565b600080600084141561355c5760009150613594565b83613582670de0b6b3a764000067ffffffffffffffff168761419d90919063ffffffff16565b81151561358b57fe5b04905082811191505b509392505050565b6000808284019050838110156040805190810160405280601181526020017f4d4154485f4144445f4f564552464c4f57000000000000000000000000000000815250901515613686576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561364b578082015181840152602081019050613630565b50505050905090810190601f1680156136785780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508091505092915050565b600081549050919050565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663981b24d08260000160099054906101000a900467ffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808267ffffffffffffffff168152602001915050602060405180830381600087803b15801561375357600080fd5b505af1158015613767573d6000803e3d6000fd5b505050506040513d602081101561377d57600080fd5b81019080805190602001909291905050509150600082116040805190810160405280601681526020017f564f54494e475f4e4f5f564f54494e475f504f57455200000000000000000000815250901515613872576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561383757808201518184015260208101905061381c565b50505050905090810190601f1680156138645780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600360008154809291906001019190505592506002600084815260200190815260200160002090506138a3614186565b8160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060016138d76142af565b038160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600060149054906101000a900467ffffffffffffffff168160000160116101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600160009054906101000a900467ffffffffffffffff168160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550818160040181905550868160050190805190602001906139a5929190614e0e565b503373ffffffffffffffffffffffffffffffffffffffff16837f4d72fe0577a3a3f7da968d7b892779dde102519c25527b29cf7054f245c791b9886040518080602001828103825283818151815260200191508051906020019080838360005b83811015613a20578082015181840152602081019050613a05565b50505050905090810190601f168015613a4d5780820380516001836020036101000a031916815260200191505b509250505060405180910390a3848015613a6d5750613a6c83336124ae565b5b15613a8057613a7f8360013387613a8a565b5b5050949350505050565b60008060006002600088815260200190815260200160002092506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ee2cd7e868560000160099054906101000a900467ffffffffffffffff166040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff16815260200192505050602060405180830381600087803b158015613b8a57600080fd5b505af1158015613b9e573d6000803e3d6000fd5b505050506040513d6020811015613bb457600080fd5b810190808051906020019092919050505091508260060160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905060016002811115613c2557fe5b816002811115613c3157fe5b1415613c5b57613c4e8284600201546142c690919063ffffffff16565b8360020181905550613c9a565b600280811115613c6757fe5b816002811115613c7357fe5b1415613c9957613c908284600301546142c690919063ffffffff16565b83600301819055505b5b8515613cc457613cb782846002015461359c90919063ffffffff16565b8360020181905550613ce4565b613cdb82846003015461359c90919063ffffffff16565b83600301819055505b85613cf0576002613cf3565b60015b8360060160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115613d4f57fe5b02179055508473ffffffffffffffffffffffffffffffffffffffff16877fb34ee265e3d4f5ec4e8b52d59b2a9be8fceca2f274ebc080d8fba797fea9391f888560405180831515151581526020018281526020019250505060405180910390a3838015613dc15750613dc087612287565b5b15613dd057613dcf87613f06565b5b50505050505050565b6000613de3611a58565b146040805190810160405280601881526020017f494e49545f414c52454144595f494e495449414c495a45440000000000000000815250901515613ec2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613e87578082015181840152602081019050613e6c565b50505050905090810190601f168015613eb45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50613f04613ece6133cf565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e600102600019166143bb90919063ffffffff16565b565b6000606060026000848152602001908152602001600020915060018260000160006101000a81548160ff02191690831515021790555060006040519080825280601f01601f191660200182016040528015613f705781602001602082028038833980820191505090505b50905061404a826005018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561400e5780601f10613fe35761010080835404028352916020019161400e565b820191906000526020600020905b815481529060010190602001808311613ff157829003601f168201915b50505050508260006040519080825280602002602001820160405280156140445781602001602082028038833980820191505090505b506143c2565b50827fbf8e2b108bb7c980e08903a8a46527699d5e84905a082d56dacb4150725c8cab60405160405180910390a2505050565b60008082840190508367ffffffffffffffff168167ffffffffffffffff1610156040805190810160405280601381526020017f4d41544836345f4144445f4f564552464c4f570000000000000000000000000081525090151561417b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614140578082015181840152602081019050614125565b50505050905090810190601f16801561416d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508091505092915050565b6000614198614193614cbf565b614cc7565b905090565b60008060008414156141b257600091506142a8565b82840290508284828115156141c357fe5b04146040805190810160405280601181526020017f4d4154485f4d554c5f4f564552464c4f570000000000000000000000000000008152509015156142a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561426857808201518184015260208101905061424d565b50505050905090810190601f1680156142955780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508091505b5092915050565b60006142c16142bc6133cf565b614cc7565b905090565b600080838311156040805190810160405280601281526020017f4d4154485f5355425f554e444552464c4f5700000000000000000000000000008152509015156143ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614370578082015181840152602081019050614355565b50505050905090810190601f16801561439d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390508091505092915050565b8082555050565b60606000806060806143d2610d50565b6040805190810160405280601481526020017f494e49545f4e4f545f494e495449414c495a45440000000000000000000000008152509015156144b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561447557808201518184015260208101905061445a565b50505050905090810190601f1680156144a25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000806144bc6126ea565b91506144c6611a21565b90506144d18a610d7b565b9550600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156040805190810160405280601b81526020017f45564d52554e5f4558454355544f525f554e415641494c41424c4500000000008152509015156145e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156145a757808201518184015260208101905061458c565b50505050905090810190601f1680156145d45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508573ffffffffffffffffffffffffffffffffffffffff1663279cea3590507c0100000000000000000000000000000000000000000000000000000000029450848a8a8a60405160240180806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015614671578082015181840152602081019050614656565b50505050905090810190601f16801561469e5780820380516001836020036101000a031916815260200191505b50848103835286818151815260200191508051906020019080838360005b838110156146d75780820151818401526020810190506146bc565b50505050905090810190601f1680156147045780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019060200280838360005b83811015614740578082015181840152602081019050614725565b505050509050019650505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505093508573ffffffffffffffffffffffffffffffffffffffff168460405180828051906020019080838360005b838110156147f35780820151818401526020810190506147d8565b50505050905090810190601f1680156148205780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af49150506040805190810160405280601981526020017f45564d52554e5f455845435554494f4e5f524556455254454400000000000000815250901515614911576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156148d65780820151818401526020810190506148bb565b50505050905090810190601f1680156149035780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061491a614dde565b92508573ffffffffffffffffffffffffffffffffffffffff167f5229a5dba83a54ae8cb5b51bdd6de9474cacbe9dd332f5185f3a4f4f2e3f4ad98b8b8660405180806020018060200180602001848103845287818151815260200191508051906020019080838360005b8381101561499f578082015181840152602081019050614984565b50505050905090810190601f1680156149cc5780820380516001836020036101000a031916815260200191505b50848103835286818151815260200191508051906020019080838360005b83811015614a055780820151818401526020810190506149ea565b50505050905090810190601f168015614a325780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b83811015614a6b578082015181840152602081019050614a50565b50505050905090810190601f168015614a985780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a28296508173ffffffffffffffffffffffffffffffffffffffff16614acb6126ea565b73ffffffffffffffffffffffffffffffffffffffff16146040805190810160405280601f81526020017f45564d52554e5f50524f5445435445445f53544154455f4d4f44494649454400815250901515614bc0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614b85578082015181840152602081019050614b6a565b50505050905090810190601f168015614bb25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508060001916614bce611a21565b60001916146040805190810160405280601f81526020017f45564d52554e5f50524f5445435445445f53544154455f4d4f44494649454400815250901515614cb1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614c76578082015181840152602081019050614c5b565b50505050905090810190601f168015614ca35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050505050509392505050565b600042905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff168211156040805190810160405280601581526020017f55494e5436345f4e554d4245525f544f4f5f4249470000000000000000000000815250901515614dd5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614d9a578082015181840152602081019050614d7f565b50505050905090810190601f168015614dc75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50819050919050565b60603d8060008114614e05576040519250602082018301604052602082036020843e614e06565b5b505080905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614e4f57805160ff1916838001178555614e7d565b82800160010185558215614e7d579182015b82811115614e7c578251825591602001919060010190614e61565b5b509050614e8a9190614e8e565b5090565b614eb091905b80821115614eac576000816000905550600101614e94565b5090565b905600a165627a7a7230582028457d321329327bec4fa6f53834f8722ef233baa3b4d54ad9caf9ae6c8cb6010029",
  "sourceMap": "360:12679:8:-;;;344:9:19;:7;;;:9;;;:::i;:::-;360:12679:8;;590:84:28;651:1:26;623:24;:22;;;:24;;;:::i;:::-;:29;654:25;;;;;;;;;;;;;;;;;;615:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;615:65:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;637:30:28;277:2;637:13;;;:30;;;:::i;:::-;590:84::o;889:137:26:-;944:7;970:49;353:66;970:29;;:47;;;;;;;;:49;;;:::i;:::-;963:56;;889:137;:::o;1759:141::-;651:1;623:24;:22;;;:24;;;:::i;:::-;:29;654:25;;;;;;;;;;;;;;;;;;615:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;615:65:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1832:61;1880:12;353:66;1832:29;;:47;;;;;;;;;:61;;;;;:::i;:::-;1759:141;:::o;519:134:31:-;587:12;636:8;630:15;622:23;;620:27;;;:::o;1028:119::-;1134:4;1124:8;1117:22;1115:26;;:::o;360:12679:8:-;;;;;;;",
  "deployedSourceMap": "360:12679:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1136:208:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1136:208:26;;;;;;;;;;;;;;;;;;;;;;;;;;;733:179:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;733:179:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2466:229:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2466:229:18;;;;;;;;;;;;;;;;;;;;;;;;;;;637:76:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;637:76:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10039:162;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10039:162:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9177:856;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9177:856:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9177:856:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4850:376;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4850:376:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;553:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;553:78:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4226:463;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4226:463:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;1333:99:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1333:99:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;796:106:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;796:106:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;889:137:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;889:137:26;;;;;;;;;;;;;;;;;;;;;;;687:446:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;687:446:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;1524:826:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1524:826:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;918:231:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;918:231:34;;;;;;;;;;;;;;;;;;;;;;;;;;;2059:22:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2059:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;473:74;;8:9:-1;5:2;;;30:1;27;20:12;5:2;473:74:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7875:223;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7875:223:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8349:822;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8349:822:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8104:239;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8104:239:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;674:116:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;674:116:17;;;;;;;;;;;;;;;;;;;;;;;;;;;5451:190:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5451:190:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7698:171;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7698:171:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2021:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2021:32:8;;;;;;;;;;;;;;;;;;;;;;;;;;;287:117:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:117:28;;;;;;;;;;;;;;;;;;;;;;;;;;;2226:26:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2226:26:8;;;;;;;;;;;;;;;;;;;;;;;6741:242;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6741:242:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3544:531;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3544:531:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6027:278;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6027:278:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7239:166;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7239:166:8;;;;;;;;;;;;;;;;;;;;;;;;;;1983:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1983:32:8;;;;;;;;;;;;;;;;;;;;;;;;;;;1953:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1953:24:8;;;;;;;;;;;;;;;;;;;;;;;;;;;720:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;720:42:8;;;;;;;;;;;;;;;;;;;;;;;;;;;7411:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7411:78:8;;;;;;;;;;;;;;;;;;;;;;;;;;;1136:208:26;1183:4;1199:27;1229:24;:22;:24::i;:::-;1199:54;;1293:1;1270:19;:24;;:67;;;;;1318:19;1298:16;:14;:16::i;:::-;:39;;1270:67;1263:74;;1136:208;;:::o;733:179:34:-;799:18;855:22;:20;:22::i;:::-;:40;;;896:7;855:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;855:49:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;855:49:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;855:49:34;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;855:49:34;;;;;;;;;;;;;;;;829:76;;733:179;;;:::o;2466:229:18:-;2515:7;2621:8;:6;:8::i;:::-;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2621:27:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2621:27:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2621:27:18;;;;;;;;;;;;;;;;2614:34;;2466:229;:::o;637:76:8:-;682:31;;;;;;;;;;;;;;;;;;;637:76;:::o;10039:162::-;10136:10;10118:7;2670:11;;2660:7;:21;2683:13;;;;;;;;;;;;;;;;;;2652:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2652:45:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10165:5;:14;10171:7;10165:14;;;;;;;;;;;:21;;:29;10187:6;10165:29;;;;;;;;;;;;;;;;;;;;;;;;;10158:36;;10039:162;;;;;:::o;9177:856::-;9297:9;9320:13;9347:16;9377:20;9411:22;9447;9483:11;9508;9533:19;9566:12;9603:18;9258:7;2670:11;;2660:7;:21;2683:13;;;;;;;;;;;;;;;;;;2652:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2652:45:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9624:5;:14;9630:7;9624:14;;;;;;;;;;;9603:35;;9656:18;9668:5;9656:11;:18::i;:::-;9649:25;;9695:5;:14;;;;;;;;;;;;9684:25;;9731:5;:15;;;;;;;;;;;;9719:27;;9772:5;:19;;;;;;;;;;;;9756:35;;9819:5;:24;;;;;;;;;;;;9801:42;;9871:5;:24;;;;;;;;;;;;9853:42;;9911:5;:9;;;9905:15;;9936:5;:9;;;9930:15;;9969:5;:17;;;9955:31;;10005:5;:21;;9996:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9177:856;;;;;;;;;;;;;:::o;4850:376::-;682:31;;;;;;;;;;;;;;;;;;;4963:62;4975:19;4967:28;;5005:18;;;;;;;;;;;4997:27;;4963:3;:62::i;:::-;1031:38:18;1042:10;1054:5;1061:7;1031:10;:38::i;:::-;1071:17;;;;;;;;;;;;;;;;;;1023:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1023:66:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5072:18:8;;;;;;;;;;;5049:41;;:19;:41;;;;5092:24;;;;;;;;;;;;;;;;;;5041:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5041:76:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5148:19;5127:18;;:40;;;;;;;;;;;;;;;;;;5183:36;5199:19;5183:36;;;;;;;;;;;;;;;;;;;;;;4850:376;;;:::o;553:78::-;599:32;;;;;;;;;;;;;;;;;;;553:78;:::o;4226:463::-;599:32;;;;;;;;;;;;;;;;;;;4340:62;4352:19;4344:28;;4382:18;;;;;;;;;;;4374:27;;4340:3;:62::i;:::-;1031:38:18;1042:10;1054:5;1061:7;1031:10;:38::i;:::-;1071:17;;;;;;;;;;;;;;;;;;1023:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1023:66:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4448:19:8;4426:41;;:18;;;;;;;;;;;:41;;;;4469:25;;;;;;;;;;;;;;;;;;4418:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4418:77:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;754:8;4513:30;;:19;:30;;;4545:28;;;;;;;;;;;;;;;;;;4505:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4505:69:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4605:19;4584:18;;:40;;;;;;;;;;;;;;;;;;4640:42;4662:19;4640:42;;;;;;;;;;;;;;;;;;;;;;4226:463;;;:::o;1333:99:32:-;1398:4;1421;1414:11;;1333:99;;;:::o;796:106:17:-;834:7;860:35;601:66;860:15;;:33;;;;:35::i;:::-;853:42;;796:106;:::o;889:137:26:-;944:7;970:49;353:66;970:29;;:47;;;;:49::i;:::-;963:56;;889:137;:::o;687:446:32:-;811:13;1019:14;755:27;775:6;755:19;:27::i;:::-;784:16;;;;;;;;;;;;;;;;;;747:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;747:54:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;827:18;:16;:18::i;:::-;811:34;;863:17;874:5;863:10;:17::i;:::-;882:24;;;;;;;;;;;;;;;;;;855:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;855:52:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;269:1:23;922:13:32;;:6;:13;;;918:209;;;951:5;:14;;:37;974:4;966:21;;;951:37;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;951:37:32;918:209;;;1042:6;1036:23;;;1060:4;1036:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1036:29:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1036:29:32;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1036:29:32;;;;;;;;;;;;;;;;1019:46;;1085:6;1079:22;;;1102:5;1109:6;1079:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1079:37:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1079:37:32;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1079:37:32;;;;;;;;;;;;;;;;;918:209;687:446;;;:::o;1524:826:18:-;1616:4;1702:20;2106:16;2132:18;1637:16;:14;:16::i;:::-;1636:17;1632:60;;;1676:5;1669:12;;;;1632:60;1725:8;:6;:8::i;:::-;1702:31;;1780:1;1747:35;;1755:12;1747:35;;;1743:78;;;1805:5;1798:12;;;;1743:78;2170:2;2153:7;:14;:19;2132:40;;2212:7;2205:14;;2244:10;2239:3;2232:23;2281:12;:26;;;2308:7;2325:4;2332:5;2339:3;2281:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2281:62:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2281:62:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2281:62:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2281:62:18;;;;;;;;;;;;;;;;2274:69;;1524:826;;;;;;;;;:::o;918:231:34:-;971:18;1001:20;1024:8;:6;:8::i;:::-;:15;;;1368:66:45;1040:25:34;;330:66:36;1067:25:34;;1024:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1024:69:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1024:69:34;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1024:69:34;;;;;;;;;;;;;;;;1001:92;;1129:12;1103:39;;918:231;;:::o;2059:22:8:-;;;;;;;;;;;;;:::o;473:74::-;517:30;;;;;;;;;;;;;;;;;;;473:74;:::o;7875:223::-;7940:4;8046:45;8057:7;517:30;;;;;;;;;;;;;;;;;;;8085:5;:3;:5::i;:::-;8046:10;:45::i;:::-;8039:52;;7875:223;;;;:::o;8349:822::-;8427:4;8443:18;8712;8409:7;2670:11;;2660:7;:21;2683:13;;;;;;;;;;;;;;;;;;2652:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2652:45:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8464:5;:14;8470:7;8464:14;;;;;;;;;;;8443:35;;8493:5;:14;;;;;;;;;;;;8489:57;;;8530:5;8523:12;;;;8489:57;8597:67;8609:5;:9;;;8620:5;:17;;;8639:5;:24;;;;;;;;;;;;8597:67;;:11;:67::i;:::-;8593:109;;;8687:4;8680:11;;;;8593:109;8733:24;8747:5;:9;;;8733:5;:9;;;:13;;:24;;;;:::i;:::-;8712:45;;8795:18;8807:5;8795:11;:18::i;:::-;8791:61;;;8836:5;8829:12;;;;8791:61;8897:60;8909:5;:9;;;8920:10;8932:5;:24;;;;;;;;;;;;8897:60;;:11;:60::i;:::-;8896:61;8892:104;;;8980:5;8973:12;;;;8892:104;9037:67;9049:5;:9;;;9060:5;:17;;;9079:5;:24;;;;;;;;;;;;9037:67;;:11;:67::i;:::-;9036:68;9032:111;;;9127:5;9120:12;;;;9032:111;9160:4;9153:11;;2707:1;8349:822;;;;;;:::o;8104:239::-;8195:4;8211:18;8177:7;2670:11;;2660:7;:21;2683:13;;;;;;;;;;;;;;;;;;2652:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2652:45:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8232:5;:14;8238:7;8232:14;;;;;;;;;;;8211:35;;8264:18;8276:5;8264:11;:18::i;:::-;:72;;;;;8335:1;8286:5;;;;;;;;;;;:17;;;8304:6;8312:5;:19;;;;;;;;;;;;8286:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8286:46:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8286:46:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8286:46:8;;;;;;;;;;;;;;;;:50;8264:72;8257:79;;8104:239;;;;;;:::o;674:116:17:-;713:7;747:35;485:66;747:15;;:33;;;;:35::i;:::-;732:51;;674:116;:::o;5451:190:8:-;5552:14;517:30;;;;;;;;;;;;;;;;;;;873:47:18;884:10;896:5;917:1;903:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;903:16:18;;;;873:10;:47::i;:::-;922:17;;;;;;;;;;;;;;;;;;865:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;865:75:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5585:49:8;5594:16;;5585:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5612:9;;5585:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5623:4;5629;5585:8;:49::i;:::-;5578:56;;5451:190;;;;;;;:::o;7698:171::-;7758:34;7769:10;7781;7758;:34::i;:::-;7794:21;;;;;;;;;;;;;;;;;;7750:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7750:66:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7826:36;7835:10;7826:36;;;;;;;;;;;;;7851:4;7857;7826:8;:36::i;:::-;;7698:171;:::o;2021:32::-;;;;;;;;;;;;;:::o;287:117:28:-;331:4;277:2;354:24;:22;:24::i;:::-;:43;347:50;;287:117;:::o;2226:26:8:-;;;;:::o;6741:242::-;6833:7;2670:11;;2660:7;:21;2683:13;;;;;;;;;;;;;;;;;;2652:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2652:45:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6860:28;6868:7;6877:10;6860:7;:28::i;:::-;6890:18;;;;;;;;;;;;;;;;;;6852:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6852:57:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6919;6925:7;6934:9;6945:10;6957:18;6919:5;:57::i;:::-;6741:242;;;;:::o;3544:531::-;651:1:26;623:24;:22;:24::i;:::-;:29;654:25;;;;;;;;;;;;;;;;;;615:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;615:65:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3744:13:8;:11;:13::i;:::-;3799:19;3776:42;;:19;:42;;;;3820:15;;;;;;;;;;;;;;;;;;3768:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3768:68:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;754:8;3854:30;;:19;:30;;;3886:26;;;;;;;;;;;;;;;;;;3846:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3846:67:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3932:6;3924:5;;:14;;;;;;;;;;;;;;;;;;3969:19;3948:18;;:40;;;;;;;;;;;;;;;;;;4019:19;3998:18;;:40;;;;;;;;;;;;;;;;;;4059:9;4048:8;;:20;;;;;;;;;;;;;;;;;;3544:531;;;;:::o;6027:278::-;6193:14;517:30;;;;;;;;;;;;;;;;;;;873:47:18;884:10;896:5;917:1;903:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;903:16:18;;;;873:10;:47::i;:::-;922:17;;;;;;;;;;;;;;;;;;865:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;865:75:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6230:68:8;6239:16;;6230:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6257:9;;6230:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6268:9;6279:18;6230:8;:68::i;:::-;6223:75;;6027:278;;;;;;;;;:::o;7239:166::-;7297:7;2670:11;;2660:7;:21;2683:13;;;;;;;;;;;;;;;;;;2652:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2652:45:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7324:19;7335:7;7324:10;:19::i;:::-;7345:21;;;;;;;;;;;;;;;;;;7316:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7316:51:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7377:21;7390:7;7377:12;:21::i;:::-;7239:166;;:::o;1983:32::-;;;;;;;;;;;;;:::o;1953:24::-;;;;;;;;;;;;;:::o;720:42::-;754:8;720:42;:::o;7411:78::-;7455:4;7478;7471:11;;7411:78;:::o;347:94:29:-;396:7;422:12;415:19;;347:94;:::o;12508:161:8:-;12572:4;12614:29;12634:8;;;;;;;;;;;12614:5;:15;;;;;;;;;;;;:19;;;;:29;;;;:::i;:::-;12595:48;;:16;:14;:16::i;:::-;:48;;;:67;;;;;12648:5;:14;;;;;;;;;;;;12647:15;12595:67;12588:74;;12508:161;;;:::o;1679:148:10:-;1739:11;1780:1;1766:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;1766:16:10;;;;1762:20;;1799:2;1792:1;1794;1792:4;;;;;;;;;;;;;;;;;:9;;;;;1818:2;1811:1;1813;1811:4;;;;;;;;;;;;;;;;;:9;;;;;1679:148;;;;:::o;379:134:31:-;447:12;496:8;490:15;482:23;;480:27;;;:::o;519:134::-;587:12;636:8;630:15;622:23;;620:27;;;:::o;426:244:27:-;486:4;576:12;525:1;506:21;;:7;:21;;;502:64;;;550:5;543:12;;;;502:64;629:7;617:20;609:28;;662:1;655:4;:8;648:15;;426:244;;;;;:::o;101:51:10:-;139:9;101:51;:::o;12774:263:8:-;12864:4;12944:19;12894:1;12884:6;:11;12880:54;;;12918:5;12911:12;;;;12880:54;12989:6;12966:20;754:8;12966:20;;:6;:10;;:20;;;;:::i;:::-;:29;;;;;;;;12944:51;;13026:4;13012:11;:18;13005:25;;12774:263;;;;;;;:::o;1928:170:51:-;1988:7;2007:9;2024:2;2019;:7;2007:19;;2049:2;2044:1;:7;;2053:18;;;;;;;;;;;;;;;;;;2036:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2036:36:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2090:1;2083:8;;1928:170;;;;;:::o;239:134:31:-;307:12;356:8;350:15;342:23;;340:27;;;:::o;10207:897:8:-;10342:14;10372:19;10534:18;10394:5;;;;;;;;;;;:19;;;10414:5;:19;;;;;;;;;;;;10394:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10394:40:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10394:40:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10394:40:8;;;;;;;;;;;;;;;;10372:62;;10466:1;10452:11;:15;10469:21;;;;;;;;;;;;;;;;;;10444:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10444:47:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10511:11;;:13;;;;;;;;;;;;10502:22;;10555:5;:13;10561:6;10555:13;;;;;;;;;;;10534:34;;10596:16;:14;:16::i;:::-;10578:5;:15;;;:34;;;;;;;;;;;;;;;;;;10665:1;10644:18;:16;:18::i;:::-;:22;10622:5;:19;;;:44;;;;;;;;;;;;;;;;;;10745:18;;;;;;;;;;;10718:5;:24;;;:45;;;;;;;;;;;;;;;;;;10800:18;;;;;;;;;;;10773:5;:24;;;:45;;;;;;;;;;;;;;;;;;10848:11;10828:5;:17;;:31;;;;10893:16;10869:5;:21;;:40;;;;;;;;;;;;:::i;:::-;;10943:10;10925:40;;10935:6;10925:40;10955:9;10925:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10925:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10980:9;:40;;;;;10993:27;11001:6;11009:10;10993:7;:27::i;:::-;10980:40;10976:122;;;11036:51;11042:6;11050:4;11056:10;11068:18;11036:5;:51::i;:::-;10976:122;10207:897;;;;;;;;:::o;11110:1064::-;11260:18;11397;11474:16;11281:5;:14;11287:7;11281:14;;;;;;;;;;;11260:35;;11418:5;;;;;;;;;;;:17;;;11436:6;11444:5;:19;;;;;;;;;;;;11418:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11418:46:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11418:46:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11418:46:8;;;;;;;;;;;;;;;;11397:67;;11493:5;:12;;:20;11506:6;11493:20;;;;;;;;;;;;;;;;;;;;;;;;;11474:39;;11594:14;11585:23;;;;;;;;:5;:23;;;;;;;;;11581:188;;;11636:25;11650:10;11636:5;:9;;;:13;;:25;;;;:::i;:::-;11624:5;:9;;:37;;;;11581:188;;;11691:14;11682:23;;;;;;;;:5;:23;;;;;;;;;11678:91;;;11733:25;11747:10;11733:5;:9;;;:13;;:25;;;;:::i;:::-;11721:5;:9;;:37;;;;11678:91;11581:188;11783:9;11779:145;;;11820:25;11834:10;11820:5;:9;;;:13;;:25;;;;:::i;:::-;11808:5;:9;;:37;;;;11779:145;;;11888:25;11902:10;11888:5;:9;;;:13;;:25;;;;:::i;:::-;11876:5;:9;;:37;;;;11779:145;11957:9;:43;;11986:14;11957:43;;;11969:14;11957:43;11934:5;:12;;:20;11947:6;11934:20;;;;;;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;;;;;;12034:6;12016:48;;12025:7;12016:48;12042:9;12053:10;12016:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;12079:18;:41;;;;;12101:19;12112:7;12101:10;:19::i;:::-;12079:41;12075:93;;;12136:21;12149:7;12136:12;:21::i;:::-;12075:93;11110:1064;;;;;;;:::o;1455:123:26:-;651:1;623:24;:22;:24::i;:::-;:29;654:25;;;;;;;;;;;;;;;;;;615:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;615:65:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1506;1554:16;:14;:16::i;:::-;353:66;1506:29;;:47;;;;;:65;;;;:::i;:::-;1455:123::o;12180:322:8:-;12238:18;12316;12259:5;:14;12265:7;12259:14;;;;;;;;;;;12238:35;;12301:4;12284:5;:14;;;:21;;;;;;;;;;;;;;;;;;12347:1;12337:12;;;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;12337:12:8;;;;12316:33;;12402:57;12412:5;:21;;12402:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12435:5;12456:1;12442:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;12442:16:8;;;;12402:9;:57::i;:::-;;12487:7;12475:20;;;;;;;;;;12180:322;;;:::o;1835:166:52:-;1893:6;1911:8;1927:2;1922;:7;1911:18;;1952:2;1947:7;;:1;:7;;;;1956:18;;;;;;;;;;;;;;;;;;1939:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1939:36:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1993:1;1986:8;;1835:166;;;;;:::o;1261:106:29:-;1310:6;1335:25;:14;:12;:14::i;:::-;:23;:25::i;:::-;1328:32;;1261:106;:::o;685:448:51:-;745:7;1037:9;991:1;985:2;:7;981:46;;;1015:1;1008:8;;;;981:46;1054:2;1049;:7;1037:19;;1084:2;1078;1074:1;:6;;;;;;;;:12;1088:18;;;;;;;;;;;;;;;;;;1066:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1066:41:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1125:1;1118:8;;685:448;;;;;;:::o;646:110:29:-;697:6;722:27;:16;:14;:16::i;:::-;:25;:27::i;:::-;715:34;;646:110;:::o;1685:172:51:-;1745:7;1812:9;1778:2;1772;:8;;1782:19;;;;;;;;;;;;;;;;;;1764:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1764:38:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1829:2;1824;:7;1812:19;;1849:1;1842:8;;1685:172;;;;;:::o;1028:119:31:-;1134:4;1124:8;1117:22;1115:26;;:::o;1155:768:34:-;1302:5;1410:27;1558:10;1609:17;1777:19;745:16:26;:14;:16::i;:::-;763:21;;;;;;;;;;;;;;;;;;737:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;737:48:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2508:17:34;2555:16;2536:8;:6;:8::i;:::-;2508:37;;2574:7;:5;:7::i;:::-;2555:26;;1440:29;1461:7;1440:20;:29::i;:::-;1410:59;;1516:1;1487:31;;1495:8;1487:31;;;;1520:26;;;;;;;;;;;;;;;;;;1479:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1479:68:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1571:8;:19;;;:28;;;;1558:41;;1652:3;1657:7;1666:6;1674:10;1629:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1629:56:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1629:56:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1629:56:34;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1629:56:34;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;1629:56:34;1609:76;;1711:8;1703:30;;1734:4;1703:36;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1703:36:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1741:24;;;;;;;;;;;;;;;;;;1695:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1695:71:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1799:21;:19;:21::i;:::-;1777:43;;1857:8;1836:56;;;1868:7;1877:6;1885;1836:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1836:56:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1836:56:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1836:56:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1910:6;1903:13;;2639:9;2618:30;;2626:8;:6;:8::i;:::-;2618:30;;;2650;;;;;;;;;;;;;;;;;;2610:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2610:71:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2710:8;2699:19;;;:7;:5;:7::i;:::-;:19;;;;2720:30;;;;;;;;;;;;;;;;;;2691:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2691:60:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;795:1:26;;1155:768:34;;;;;;;;;:::o;926:144:29:-;973:7;999:15;992:22;;926:144;:::o;188:149:30:-;240:6;101:2;271:10;;266:1;:15;;283:20;;;;;;;;;;;;;;;;;;258:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;258:46:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;328:1;314:16;;188:149;;;:::o;2018:452:34:-;2072:9;2128:14;2162:4;2184:1;2179:9;;;;2240:4;2234:11;2227:18;;2314:4;2308;2304:15;2299:3;2295:25;2289:4;2282:39;2394:4;2388;2384:15;2378:4;2373:3;2358:42;2155:279;;2179:9;2155:279;;2102:342;2460:3;2453:10;;2018:452;:::o;360:12679:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "/*\n * SPDX-License-Identitifer:    GPL-3.0-or-later\n */\n\npragma solidity 0.4.24;\n\nimport \"@aragon/os/contracts/apps/AragonApp.sol\";\nimport \"@aragon/os/contracts/common/IForwarder.sol\";\n\nimport \"@aragon/os/contracts/lib/math/SafeMath.sol\";\nimport \"@aragon/os/contracts/lib/math/SafeMath64.sol\";\n\nimport \"@aragon/apps-shared-minime/contracts/MiniMeToken.sol\";\n\n\ncontract Voting is IForwarder, AragonApp {\n    using SafeMath for uint256;\n    using SafeMath64 for uint64;\n\n    bytes32 public constant CREATE_VOTES_ROLE = keccak256(\"CREATE_VOTES_ROLE\");\n    bytes32 public constant MODIFY_SUPPORT_ROLE = keccak256(\"MODIFY_SUPPORT_ROLE\");\n    bytes32 public constant MODIFY_QUORUM_ROLE = keccak256(\"MODIFY_QUORUM_ROLE\");\n\n    uint64 public constant PCT_BASE = 10 ** 18; // 0% = 0; 1% = 10^16; 100% = 10^18\n\n    string private constant ERROR_NO_VOTE = \"VOTING_NO_VOTE\";\n    string private constant ERROR_INIT_PCTS = \"VOTING_INIT_PCTS\";\n    string private constant ERROR_CHANGE_SUPPORT_PCTS = \"VOTING_CHANGE_SUPPORT_PCTS\";\n    string private constant ERROR_CHANGE_QUORUM_PCTS = \"VOTING_CHANGE_QUORUM_PCTS\";\n    string private constant ERROR_INIT_SUPPORT_TOO_BIG = \"VOTING_INIT_SUPPORT_TOO_BIG\";\n    string private constant ERROR_CHANGE_SUPPORT_TOO_BIG = \"VOTING_CHANGE_SUPP_TOO_BIG\";\n    string private constant ERROR_CAN_NOT_VOTE = \"VOTING_CAN_NOT_VOTE\";\n    string private constant ERROR_CAN_NOT_EXECUTE = \"VOTING_CAN_NOT_EXECUTE\";\n    string private constant ERROR_CAN_NOT_FORWARD = \"VOTING_CAN_NOT_FORWARD\";\n    string private constant ERROR_NO_VOTING_POWER = \"VOTING_NO_VOTING_POWER\";\n\n    enum VoterState { Absent, Yea, Nay }\n\n    struct Vote {\n        bool executed;\n        uint64 startDate;\n        uint64 snapshotBlock;\n        uint64 supportRequiredPct;\n        uint64 minAcceptQuorumPct;\n        uint256 yea;\n        uint256 nay;\n        uint256 votingPower;\n        bytes executionScript;\n        mapping (address => VoterState) voters;\n    }\n\n    MiniMeToken public token;\n    uint64 public supportRequiredPct;\n    uint64 public minAcceptQuorumPct;\n    uint64 public voteTime;\n\n    // We are mimicing an array, we use a mapping instead to make app upgrade more graceful\n    mapping (uint256 => Vote) internal votes;\n    uint256 public votesLength;\n\n    event StartVote(uint256 indexed voteId, address indexed creator, string metadata);\n    event CastVote(uint256 indexed voteId, address indexed voter, bool supports, uint256 stake);\n    event ExecuteVote(uint256 indexed voteId);\n    event ChangeSupportRequired(uint64 supportRequiredPct);\n    event ChangeMinQuorum(uint64 minAcceptQuorumPct);\n\n    modifier voteExists(uint256 _voteId) {\n        require(_voteId < votesLength, ERROR_NO_VOTE);\n        _;\n    }\n\n    /**\n    * @notice Initialize Voting app with `_token.symbol(): string` for governance, minimum support of `@formatPct(_supportRequiredPct)`%, minimum acceptance quorum of `@formatPct(_minAcceptQuorumPct)`%, and a voting duration of `@transformTime(_voteTime)`\n    * @param _token MiniMeToken Address that will be used as governance token\n    * @param _supportRequiredPct Percentage of yeas in casted votes for a vote to succeed (expressed as a percentage of 10^18; eg. 10^16 = 1%, 10^18 = 100%)\n    * @param _minAcceptQuorumPct Percentage of yeas in total possible votes for a vote to succeed (expressed as a percentage of 10^18; eg. 10^16 = 1%, 10^18 = 100%)\n    * @param _voteTime Seconds that a vote will be open for token holders to vote (unless enough yeas or nays have been cast to make an early decision)\n    */\n    function initialize(\n        MiniMeToken _token,\n        uint64 _supportRequiredPct,\n        uint64 _minAcceptQuorumPct,\n        uint64 _voteTime\n    )\n        external\n        onlyInit\n    {\n        initialized();\n\n        require(_minAcceptQuorumPct <= _supportRequiredPct, ERROR_INIT_PCTS);\n        require(_supportRequiredPct < PCT_BASE, ERROR_INIT_SUPPORT_TOO_BIG);\n\n        token = _token;\n        supportRequiredPct = _supportRequiredPct;\n        minAcceptQuorumPct = _minAcceptQuorumPct;\n        voteTime = _voteTime;\n    }\n\n    /**\n    * @notice Change required support to `@formatPct(_supportRequiredPct)`%\n    * @param _supportRequiredPct New required support\n    */\n    function changeSupportRequiredPct(uint64 _supportRequiredPct)\n        external\n        authP(MODIFY_SUPPORT_ROLE, arr(uint256(_supportRequiredPct), uint256(supportRequiredPct)))\n    {\n        require(minAcceptQuorumPct <= _supportRequiredPct, ERROR_CHANGE_SUPPORT_PCTS);\n        require(_supportRequiredPct < PCT_BASE, ERROR_CHANGE_SUPPORT_TOO_BIG);\n        supportRequiredPct = _supportRequiredPct;\n\n        emit ChangeSupportRequired(_supportRequiredPct);\n    }\n\n    /**\n    * @notice Change minimum acceptance quorum to `@formatPct(_minAcceptQuorumPct)`%\n    * @param _minAcceptQuorumPct New acceptance quorum\n    */\n    function changeMinAcceptQuorumPct(uint64 _minAcceptQuorumPct)\n        external\n        authP(MODIFY_QUORUM_ROLE, arr(uint256(_minAcceptQuorumPct), uint256(minAcceptQuorumPct)))\n    {\n        require(_minAcceptQuorumPct <= supportRequiredPct, ERROR_CHANGE_QUORUM_PCTS);\n        minAcceptQuorumPct = _minAcceptQuorumPct;\n\n        emit ChangeMinQuorum(_minAcceptQuorumPct);\n    }\n\n    /**\n    * @notice Create a new vote about \"`_metadata`\"\n    * @param _executionScript EVM script to be executed on approval\n    * @param _metadata Vote metadata\n    * @return voteId Id for newly created vote\n    */\n    function newVote(bytes _executionScript, string _metadata) external auth(CREATE_VOTES_ROLE) returns (uint256 voteId) {\n        return _newVote(_executionScript, _metadata, true, true);\n    }\n\n    /**\n    * @notice Create a new vote about \"`_metadata`\"\n    * @param _executionScript EVM script to be executed on approval\n    * @param _metadata Vote metadata\n    * @param _castVote Whether to also cast newly created vote\n    * @param _executesIfDecided Whether to also immediately execute newly created vote if decided\n    * @return voteId id for newly created vote\n    */\n    function newVote(bytes _executionScript, string _metadata, bool _castVote, bool _executesIfDecided)\n        external\n        auth(CREATE_VOTES_ROLE)\n        returns (uint256 voteId)\n    {\n        return _newVote(_executionScript, _metadata, _castVote, _executesIfDecided);\n    }\n\n    /**\n    * @notice Vote `_supports ? 'yea' : 'nay'` in vote #`_voteId`\n    * @dev Initialization check is implicitly provided by `voteExists()` as new votes can only be\n    *      created via `newVote(),` which requires initialization\n    * @param _voteId Id for vote\n    * @param _supports Whether voter supports the vote\n    * @param _executesIfDecided Whether the vote should execute its action if it becomes decided\n    */\n    function vote(uint256 _voteId, bool _supports, bool _executesIfDecided) external voteExists(_voteId) {\n        require(canVote(_voteId, msg.sender), ERROR_CAN_NOT_VOTE);\n        _vote(_voteId, _supports, msg.sender, _executesIfDecided);\n    }\n\n    /**\n    * @notice Execute vote #`_voteId`\n    * @dev Initialization check is implicitly provided by `voteExists()` as new votes can only be\n    *      created via `newVote(),` which requires initialization\n    * @param _voteId Id for vote\n    */\n    function executeVote(uint256 _voteId) external voteExists(_voteId) {\n        require(canExecute(_voteId), ERROR_CAN_NOT_EXECUTE);\n        _executeVote(_voteId);\n    }\n\n    function isForwarder() public pure returns (bool) {\n        return true;\n    }\n\n    /**\n    * @notice Creates a vote to execute the desired action, and casts a support vote if possible\n    * @dev IForwarder interface conformance\n    * @param _evmScript Start vote with script\n    */\n    function forward(bytes _evmScript) public {\n        require(canForward(msg.sender, _evmScript), ERROR_CAN_NOT_FORWARD);\n        _newVote(_evmScript, \"\", true, true);\n    }\n\n    function canForward(address _sender, bytes) public view returns (bool) {\n        // Note that `canPerform()` implicitly does an initialization check itself\n        return canPerform(_sender, CREATE_VOTES_ROLE, arr());\n    }\n\n    function canVote(uint256 _voteId, address _voter) public view voteExists(_voteId) returns (bool) {\n        Vote storage vote_ = votes[_voteId];\n\n        return _isVoteOpen(vote_) && token.balanceOfAt(_voter, vote_.snapshotBlock) > 0;\n    }\n\n    function canExecute(uint256 _voteId) public view voteExists(_voteId) returns (bool) {\n        Vote storage vote_ = votes[_voteId];\n\n        if (vote_.executed) {\n            return false;\n        }\n\n        // Voting is already decided\n        if (_isValuePct(vote_.yea, vote_.votingPower, vote_.supportRequiredPct)) {\n            return true;\n        }\n\n        uint256 totalVotes = vote_.yea.add(vote_.nay);\n\n        // Vote ended?\n        if (_isVoteOpen(vote_)) {\n            return false;\n        }\n        // Has enough support?\n        if (!_isValuePct(vote_.yea, totalVotes, vote_.supportRequiredPct)) {\n            return false;\n        }\n        // Has min quorum?\n        if (!_isValuePct(vote_.yea, vote_.votingPower, vote_.minAcceptQuorumPct)) {\n            return false;\n        }\n\n        return true;\n    }\n\n    function getVote(uint256 _voteId)\n        public\n        view\n        voteExists(_voteId)\n        returns (\n            bool open,\n            bool executed,\n            uint64 startDate,\n            uint64 snapshotBlock,\n            uint64 supportRequired,\n            uint64 minAcceptQuorum,\n            uint256 yea,\n            uint256 nay,\n            uint256 votingPower,\n            bytes script\n        )\n    {\n        Vote storage vote_ = votes[_voteId];\n\n        open = _isVoteOpen(vote_);\n        executed = vote_.executed;\n        startDate = vote_.startDate;\n        snapshotBlock = vote_.snapshotBlock;\n        supportRequired = vote_.supportRequiredPct;\n        minAcceptQuorum = vote_.minAcceptQuorumPct;\n        yea = vote_.yea;\n        nay = vote_.nay;\n        votingPower = vote_.votingPower;\n        script = vote_.executionScript;\n    }\n\n    function getVoterState(uint256 _voteId, address _voter) public view voteExists(_voteId) returns (VoterState) {\n        return votes[_voteId].voters[_voter];\n    }\n\n    function _newVote(bytes _executionScript, string _metadata, bool _castVote, bool _executesIfDecided)\n        internal\n        returns (uint256 voteId)\n    {\n        uint256 votingPower = token.totalSupplyAt(vote_.snapshotBlock);\n        require(votingPower > 0, ERROR_NO_VOTING_POWER);\n\n        voteId = votesLength++;\n        Vote storage vote_ = votes[voteId];\n        vote_.startDate = getTimestamp64();\n        vote_.snapshotBlock = getBlockNumber64() - 1; // avoid double voting in this very block\n        vote_.supportRequiredPct = supportRequiredPct;\n        vote_.minAcceptQuorumPct = minAcceptQuorumPct;\n        vote_.votingPower = votingPower;\n        vote_.executionScript = _executionScript;\n\n        emit StartVote(voteId, msg.sender, _metadata);\n\n        if (_castVote && canVote(voteId, msg.sender)) {\n            _vote(voteId, true, msg.sender, _executesIfDecided);\n        }\n    }\n\n    function _vote(\n        uint256 _voteId,\n        bool _supports,\n        address _voter,\n        bool _executesIfDecided\n    ) internal\n    {\n        Vote storage vote_ = votes[_voteId];\n\n        // This could re-enter, though we can assume the governance token is not malicious\n        uint256 voterStake = token.balanceOfAt(_voter, vote_.snapshotBlock);\n        VoterState state = vote_.voters[_voter];\n\n        // If voter had previously voted, decrease count\n        if (state == VoterState.Yea) {\n            vote_.yea = vote_.yea.sub(voterStake);\n        } else if (state == VoterState.Nay) {\n            vote_.nay = vote_.nay.sub(voterStake);\n        }\n\n        if (_supports) {\n            vote_.yea = vote_.yea.add(voterStake);\n        } else {\n            vote_.nay = vote_.nay.add(voterStake);\n        }\n\n        vote_.voters[_voter] = _supports ? VoterState.Yea : VoterState.Nay;\n\n        emit CastVote(_voteId, _voter, _supports, voterStake);\n\n        if (_executesIfDecided && canExecute(_voteId)) {\n            _executeVote(_voteId);\n        }\n    }\n\n    function _executeVote(uint256 _voteId) internal {\n        Vote storage vote_ = votes[_voteId];\n\n        vote_.executed = true;\n\n        bytes memory input = new bytes(0); // TODO: Consider input for voting scripts\n        runScript(vote_.executionScript, input, new address[](0));\n\n        emit ExecuteVote(_voteId);\n    }\n\n    function _isVoteOpen(Vote storage vote_) internal view returns (bool) {\n        return getTimestamp64() < vote_.startDate.add(voteTime) && !vote_.executed;\n    }\n\n    /**\n    * @dev Calculates whether `_value` is more than a percentage `_pct` of `_total`\n    */\n    function _isValuePct(uint256 _value, uint256 _total, uint256 _pct) internal pure returns (bool) {\n        if (_total == 0) {\n            return false;\n        }\n\n        uint256 computedPct = _value.mul(PCT_BASE) / _total;\n        return computedPct > _pct;\n    }\n}\n",
  "sourcePath": "@aragon/apps-voting/contracts/Voting.sol",
  "ast": {
    "absolutePath": "@aragon/apps-voting/contracts/Voting.sol",
    "exportedSymbols": {
      "Voting": [
        5862
      ]
    },
    "id": 5863,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4919,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "57:23:8"
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
        "file": "@aragon/os/contracts/apps/AragonApp.sol",
        "id": 4920,
        "nodeType": "ImportDirective",
        "scope": 5863,
        "sourceUnit": 8476,
        "src": "82:49:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/IForwarder.sol",
        "file": "@aragon/os/contracts/common/IForwarder.sol",
        "id": 4921,
        "nodeType": "ImportDirective",
        "scope": 5863,
        "sourceUnit": 8644,
        "src": "132:52:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/math/SafeMath.sol",
        "file": "@aragon/os/contracts/lib/math/SafeMath.sol",
        "id": 4922,
        "nodeType": "ImportDirective",
        "scope": 5863,
        "sourceUnit": 11712,
        "src": "186:52:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/math/SafeMath64.sol",
        "file": "@aragon/os/contracts/lib/math/SafeMath64.sol",
        "id": 4923,
        "nodeType": "ImportDirective",
        "scope": 5863,
        "sourceUnit": 11854,
        "src": "239:54:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/apps-shared-minime/contracts/MiniMeToken.sol",
        "file": "@aragon/apps-shared-minime/contracts/MiniMeToken.sol",
        "id": 4924,
        "nodeType": "ImportDirective",
        "scope": 5863,
        "sourceUnit": 3785,
        "src": "295:62:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4925,
              "name": "IForwarder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8643,
              "src": "379:10:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IForwarder_$8643",
                "typeString": "contract IForwarder"
              }
            },
            "id": 4926,
            "nodeType": "InheritanceSpecifier",
            "src": "379:10:8"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4927,
              "name": "AragonApp",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8475,
              "src": "391:9:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AragonApp_$8475",
                "typeString": "contract AragonApp"
              }
            },
            "id": 4928,
            "nodeType": "InheritanceSpecifier",
            "src": "391:9:8"
          }
        ],
        "contractDependencies": [
          7585,
          8347,
          8475,
          8488,
          8621,
          8643,
          8663,
          8761,
          8789,
          8822,
          8869,
          9066,
          9476,
          9503,
          10769
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 5862,
        "linearizedBaseContracts": [
          5862,
          8475,
          7585,
          9476,
          10769,
          9503,
          9066,
          8789,
          8621,
          8663,
          8488,
          8822,
          8761,
          8869,
          8347,
          8643
        ],
        "name": "Voting",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 4931,
            "libraryName": {
              "contractScope": null,
              "id": 4929,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11711,
              "src": "413:8:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$11711",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "407:27:8",
            "typeName": {
              "id": 4930,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "426:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 4934,
            "libraryName": {
              "contractScope": null,
              "id": 4932,
              "name": "SafeMath64",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11853,
              "src": "445:10:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath64_$11853",
                "typeString": "library SafeMath64"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "439:28:8",
            "typeName": {
              "id": 4933,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "460:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            }
          },
          {
            "constant": true,
            "id": 4939,
            "name": "CREATE_VOTES_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "473:74:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 4935,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "473:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "4352454154455f564f5445535f524f4c45",
                  "id": 4937,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "527:19:8",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_e7dcd7275292e064d090fbc5f3bd7995be23b502c1fed5cd94cfddbbdcd32bbc",
                    "typeString": "literal_string \"CREATE_VOTES_ROLE\""
                  },
                  "value": "CREATE_VOTES_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_e7dcd7275292e064d090fbc5f3bd7995be23b502c1fed5cd94cfddbbdcd32bbc",
                    "typeString": "literal_string \"CREATE_VOTES_ROLE\""
                  }
                ],
                "id": 4936,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 12664,
                "src": "517:9:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 4938,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "517:30:8",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 4944,
            "name": "MODIFY_SUPPORT_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "553:78:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 4940,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "553:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "4d4f444946595f535550504f52545f524f4c45",
                  "id": 4942,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "609:21:8",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_da3972983e62bdf826c4b807c4c9c2b8a941e1f83dfa76d53d6aeac11e1be650",
                    "typeString": "literal_string \"MODIFY_SUPPORT_ROLE\""
                  },
                  "value": "MODIFY_SUPPORT_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_da3972983e62bdf826c4b807c4c9c2b8a941e1f83dfa76d53d6aeac11e1be650",
                    "typeString": "literal_string \"MODIFY_SUPPORT_ROLE\""
                  }
                ],
                "id": 4941,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 12664,
                "src": "599:9:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 4943,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "599:32:8",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 4949,
            "name": "MODIFY_QUORUM_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "637:76:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 4945,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "637:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "4d4f444946595f51554f52554d5f524f4c45",
                  "id": 4947,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "692:20:8",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_ad15e7261800b4bb73f1b69d3864565ffb1fd00cb93cf14fe48da8f1f2149f39",
                    "typeString": "literal_string \"MODIFY_QUORUM_ROLE\""
                  },
                  "value": "MODIFY_QUORUM_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_ad15e7261800b4bb73f1b69d3864565ffb1fd00cb93cf14fe48da8f1f2149f39",
                    "typeString": "literal_string \"MODIFY_QUORUM_ROLE\""
                  }
                ],
                "id": 4946,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 12664,
                "src": "682:9:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 4948,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "682:31:8",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 4954,
            "name": "PCT_BASE",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "720:42:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 4950,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "720:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "value": {
              "argumentTypes": null,
              "commonType": {
                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000"
              },
              "id": 4953,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "argumentTypes": null,
                "hexValue": "3130",
                "id": 4951,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "754:2:8",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_10_by_1",
                  "typeString": "int_const 10"
                },
                "value": "10"
              },
              "nodeType": "BinaryOperation",
              "operator": "**",
              "rightExpression": {
                "argumentTypes": null,
                "hexValue": "3138",
                "id": 4952,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "760:2:8",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_18_by_1",
                  "typeString": "int_const 18"
                },
                "value": "18"
              },
              "src": "754:8:8",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 4957,
            "name": "ERROR_NO_VOTE",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "805:56:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 4955,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "805:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f4e4f5f564f5445",
              "id": 4956,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "845:16:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_d4e7a378565f7e8724f3afe49b49b5b53d55c8b85ecc478c539d5f3066c466ca",
                "typeString": "literal_string \"VOTING_NO_VOTE\""
              },
              "value": "VOTING_NO_VOTE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 4960,
            "name": "ERROR_INIT_PCTS",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "867:60:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 4958,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "867:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f494e49545f50435453",
              "id": 4959,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "909:18:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_6fe3353225d510c9f38bcc5cb3371a9eabd299213c6c415b56b641a75492373f",
                "typeString": "literal_string \"VOTING_INIT_PCTS\""
              },
              "value": "VOTING_INIT_PCTS"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 4963,
            "name": "ERROR_CHANGE_SUPPORT_PCTS",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "933:80:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 4961,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "933:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f4348414e47455f535550504f52545f50435453",
              "id": 4962,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "985:28:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_bbce4f9de9ad252169867334bbc95c973030be8d4534544eaa1c1893e434472b",
                "typeString": "literal_string \"VOTING_CHANGE_SUPPORT_PCTS\""
              },
              "value": "VOTING_CHANGE_SUPPORT_PCTS"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 4966,
            "name": "ERROR_CHANGE_QUORUM_PCTS",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "1019:78:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 4964,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1019:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f4348414e47455f51554f52554d5f50435453",
              "id": 4965,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1070:27:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_5779a0804ef26050aed8e7ea88d8cfab54776e2b6d5815a5484e86fbdf3b4ec6",
                "typeString": "literal_string \"VOTING_CHANGE_QUORUM_PCTS\""
              },
              "value": "VOTING_CHANGE_QUORUM_PCTS"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 4969,
            "name": "ERROR_INIT_SUPPORT_TOO_BIG",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "1103:82:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 4967,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1103:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f494e49545f535550504f52545f544f4f5f424947",
              "id": 4968,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1156:29:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a9d8ceb2f2cc9646add9d9405c6f276fc989687a807d2879d7d034c0d4141b54",
                "typeString": "literal_string \"VOTING_INIT_SUPPORT_TOO_BIG\""
              },
              "value": "VOTING_INIT_SUPPORT_TOO_BIG"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 4972,
            "name": "ERROR_CHANGE_SUPPORT_TOO_BIG",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "1191:83:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 4970,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1191:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f4348414e47455f535550505f544f4f5f424947",
              "id": 4971,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1246:28:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a988aaf15f02d48924f860af070bbe949ae7d371d3f97038169697e9a200fc4d",
                "typeString": "literal_string \"VOTING_CHANGE_SUPP_TOO_BIG\""
              },
              "value": "VOTING_CHANGE_SUPP_TOO_BIG"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 4975,
            "name": "ERROR_CAN_NOT_VOTE",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "1280:66:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 4973,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1280:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f43414e5f4e4f545f564f5445",
              "id": 4974,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1325:21:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_d15ecba3c2de6be04ae931794f9dbe722fd5f34858b1288ba9910becaae808d3",
                "typeString": "literal_string \"VOTING_CAN_NOT_VOTE\""
              },
              "value": "VOTING_CAN_NOT_VOTE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 4978,
            "name": "ERROR_CAN_NOT_EXECUTE",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "1352:72:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 4976,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1352:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f43414e5f4e4f545f45584543555445",
              "id": 4977,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1400:24:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a71d666a1ee845f244a2074cc2a52f257c6da2ad8ed26b4f88ad787af060b34c",
                "typeString": "literal_string \"VOTING_CAN_NOT_EXECUTE\""
              },
              "value": "VOTING_CAN_NOT_EXECUTE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 4981,
            "name": "ERROR_CAN_NOT_FORWARD",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "1430:72:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 4979,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1430:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f43414e5f4e4f545f464f5257415244",
              "id": 4980,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1478:24:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_43bc53280d1b3f609b6645415cebcf10834d13c5f6dbdfe2aa9d66ed459b806a",
                "typeString": "literal_string \"VOTING_CAN_NOT_FORWARD\""
              },
              "value": "VOTING_CAN_NOT_FORWARD"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 4984,
            "name": "ERROR_NO_VOTING_POWER",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "1508:72:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 4982,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1508:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f4e4f5f564f54494e475f504f574552",
              "id": 4983,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1556:24:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_57804431f2c60d894b28e15e405d13c19f770b55e55030aa1c36d64decde578f",
                "typeString": "literal_string \"VOTING_NO_VOTING_POWER\""
              },
              "value": "VOTING_NO_VOTING_POWER"
            },
            "visibility": "private"
          },
          {
            "canonicalName": "Voting.VoterState",
            "id": 4988,
            "members": [
              {
                "id": 4985,
                "name": "Absent",
                "nodeType": "EnumValue",
                "src": "1605:6:8"
              },
              {
                "id": 4986,
                "name": "Yea",
                "nodeType": "EnumValue",
                "src": "1613:3:8"
              },
              {
                "id": 4987,
                "name": "Nay",
                "nodeType": "EnumValue",
                "src": "1618:3:8"
              }
            ],
            "name": "VoterState",
            "nodeType": "EnumDefinition",
            "src": "1587:36:8"
          },
          {
            "canonicalName": "Voting.Vote",
            "id": 5011,
            "members": [
              {
                "constant": false,
                "id": 4990,
                "name": "executed",
                "nodeType": "VariableDeclaration",
                "scope": 5011,
                "src": "1651:13:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 4989,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1651:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 4992,
                "name": "startDate",
                "nodeType": "VariableDeclaration",
                "scope": 5011,
                "src": "1674:16:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 4991,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "1674:6:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 4994,
                "name": "snapshotBlock",
                "nodeType": "VariableDeclaration",
                "scope": 5011,
                "src": "1700:20:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 4993,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "1700:6:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 4996,
                "name": "supportRequiredPct",
                "nodeType": "VariableDeclaration",
                "scope": 5011,
                "src": "1730:25:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 4995,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "1730:6:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 4998,
                "name": "minAcceptQuorumPct",
                "nodeType": "VariableDeclaration",
                "scope": 5011,
                "src": "1765:25:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 4997,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "1765:6:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5000,
                "name": "yea",
                "nodeType": "VariableDeclaration",
                "scope": 5011,
                "src": "1800:11:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 4999,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1800:7:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5002,
                "name": "nay",
                "nodeType": "VariableDeclaration",
                "scope": 5011,
                "src": "1821:11:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5001,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1821:7:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5004,
                "name": "votingPower",
                "nodeType": "VariableDeclaration",
                "scope": 5011,
                "src": "1842:19:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5003,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1842:7:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5006,
                "name": "executionScript",
                "nodeType": "VariableDeclaration",
                "scope": 5011,
                "src": "1871:21:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 5005,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "1871:5:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5010,
                "name": "voters",
                "nodeType": "VariableDeclaration",
                "scope": 5011,
                "src": "1902:38:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_enum$_VoterState_$4988_$",
                  "typeString": "mapping(address => enum Voting.VoterState)"
                },
                "typeName": {
                  "id": 5009,
                  "keyType": {
                    "id": 5007,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1911:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1902:31:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_enum$_VoterState_$4988_$",
                    "typeString": "mapping(address => enum Voting.VoterState)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 5008,
                    "name": "VoterState",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4988,
                    "src": "1922:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_VoterState_$4988",
                      "typeString": "enum Voting.VoterState"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Vote",
            "nodeType": "StructDefinition",
            "scope": 5862,
            "src": "1629:318:8",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5013,
            "name": "token",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "1953:24:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_MiniMeToken_$3743",
              "typeString": "contract MiniMeToken"
            },
            "typeName": {
              "contractScope": null,
              "id": 5012,
              "name": "MiniMeToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3743,
              "src": "1953:11:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MiniMeToken_$3743",
                "typeString": "contract MiniMeToken"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5015,
            "name": "supportRequiredPct",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "1983:32:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 5014,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "1983:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5017,
            "name": "minAcceptQuorumPct",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "2021:32:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 5016,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "2021:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5019,
            "name": "voteTime",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "2059:22:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 5018,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "2059:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5023,
            "name": "votes",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "2180:40:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$5011_storage_$",
              "typeString": "mapping(uint256 => struct Voting.Vote)"
            },
            "typeName": {
              "id": 5022,
              "keyType": {
                "id": 5020,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2189:7:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "2180:25:8",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$5011_storage_$",
                "typeString": "mapping(uint256 => struct Voting.Vote)"
              },
              "valueType": {
                "contractScope": null,
                "id": 5021,
                "name": "Vote",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 5011,
                "src": "2200:4:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                  "typeString": "struct Voting.Vote"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 5025,
            "name": "votesLength",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "2226:26:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 5024,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "2226:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5033,
            "name": "StartVote",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5032,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5027,
                  "indexed": true,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5033,
                  "src": "2275:22:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5026,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2275:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5029,
                  "indexed": true,
                  "name": "creator",
                  "nodeType": "VariableDeclaration",
                  "scope": 5033,
                  "src": "2299:23:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5028,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2299:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5031,
                  "indexed": false,
                  "name": "metadata",
                  "nodeType": "VariableDeclaration",
                  "scope": 5033,
                  "src": "2324:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5030,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2324:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2274:66:8"
            },
            "src": "2259:82:8"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5043,
            "name": "CastVote",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5042,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5035,
                  "indexed": true,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5043,
                  "src": "2361:22:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5034,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2361:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5037,
                  "indexed": true,
                  "name": "voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 5043,
                  "src": "2385:21:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5036,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2385:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5039,
                  "indexed": false,
                  "name": "supports",
                  "nodeType": "VariableDeclaration",
                  "scope": 5043,
                  "src": "2408:13:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5038,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2408:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5041,
                  "indexed": false,
                  "name": "stake",
                  "nodeType": "VariableDeclaration",
                  "scope": 5043,
                  "src": "2423:13:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5040,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2423:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2360:77:8"
            },
            "src": "2346:92:8"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5047,
            "name": "ExecuteVote",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5046,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5045,
                  "indexed": true,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5047,
                  "src": "2461:22:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5044,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2461:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2460:24:8"
            },
            "src": "2443:42:8"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5051,
            "name": "ChangeSupportRequired",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5050,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5049,
                  "indexed": false,
                  "name": "supportRequiredPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 5051,
                  "src": "2518:25:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5048,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "2518:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2517:27:8"
            },
            "src": "2490:55:8"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5055,
            "name": "ChangeMinQuorum",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5054,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5053,
                  "indexed": false,
                  "name": "minAcceptQuorumPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 5055,
                  "src": "2572:25:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5052,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "2572:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2571:27:8"
            },
            "src": "2550:49:8"
          },
          {
            "body": {
              "id": 5067,
              "nodeType": "Block",
              "src": "2642:73:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5062,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5060,
                          "name": "_voteId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5057,
                          "src": "2660:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5061,
                          "name": "votesLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5025,
                          "src": "2670:11:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2660:21:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5063,
                        "name": "ERROR_NO_VOTE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4957,
                        "src": "2683:13:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5059,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "2652:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5064,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2652:45:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5065,
                  "nodeType": "ExpressionStatement",
                  "src": "2652:45:8"
                },
                {
                  "id": 5066,
                  "nodeType": "PlaceholderStatement",
                  "src": "2707:1:8"
                }
              ]
            },
            "documentation": null,
            "id": 5068,
            "name": "voteExists",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 5058,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5057,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5068,
                  "src": "2625:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5056,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2625:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2624:17:8"
            },
            "src": "2605:110:8",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5114,
              "nodeType": "Block",
              "src": "3734:341:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 5081,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8746,
                      "src": "3744:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 5082,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3744:13:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5083,
                  "nodeType": "ExpressionStatement",
                  "src": "3744:13:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 5087,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5085,
                          "name": "_minAcceptQuorumPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5074,
                          "src": "3776:19:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5086,
                          "name": "_supportRequiredPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5072,
                          "src": "3799:19:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "3776:42:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5088,
                        "name": "ERROR_INIT_PCTS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4960,
                        "src": "3820:15:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5084,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "3768:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5089,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3768:68:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5090,
                  "nodeType": "ExpressionStatement",
                  "src": "3768:68:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 5094,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5092,
                          "name": "_supportRequiredPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5072,
                          "src": "3854:19:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5093,
                          "name": "PCT_BASE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4954,
                          "src": "3876:8:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "3854:30:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5095,
                        "name": "ERROR_INIT_SUPPORT_TOO_BIG",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4969,
                        "src": "3886:26:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5091,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "3846:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5096,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3846:67:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5097,
                  "nodeType": "ExpressionStatement",
                  "src": "3846:67:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5100,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5098,
                      "name": "token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5013,
                      "src": "3924:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$3743",
                        "typeString": "contract MiniMeToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5099,
                      "name": "_token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5070,
                      "src": "3932:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$3743",
                        "typeString": "contract MiniMeToken"
                      }
                    },
                    "src": "3924:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$3743",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "id": 5101,
                  "nodeType": "ExpressionStatement",
                  "src": "3924:14:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5104,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5102,
                      "name": "supportRequiredPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5015,
                      "src": "3948:18:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5103,
                      "name": "_supportRequiredPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5072,
                      "src": "3969:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "3948:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5105,
                  "nodeType": "ExpressionStatement",
                  "src": "3948:40:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5106,
                      "name": "minAcceptQuorumPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5017,
                      "src": "3998:18:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5107,
                      "name": "_minAcceptQuorumPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5074,
                      "src": "4019:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "3998:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5109,
                  "nodeType": "ExpressionStatement",
                  "src": "3998:40:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5112,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5110,
                      "name": "voteTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5019,
                      "src": "4048:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5111,
                      "name": "_voteTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5076,
                      "src": "4059:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "4048:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5113,
                  "nodeType": "ExpressionStatement",
                  "src": "4048:20:8"
                }
              ]
            },
            "documentation": "@notice Initialize Voting app with `_token.symbol(): string` for governance, minimum support of `@formatPct(_supportRequiredPct)`%, minimum acceptance quorum of `@formatPct(_minAcceptQuorumPct)`%, and a voting duration of `@transformTime(_voteTime)`\n@param _token MiniMeToken Address that will be used as governance token\n@param _supportRequiredPct Percentage of yeas in casted votes for a vote to succeed (expressed as a percentage of 10^18; eg. 10^16 = 1%, 10^18 = 100%)\n@param _minAcceptQuorumPct Percentage of yeas in total possible votes for a vote to succeed (expressed as a percentage of 10^18; eg. 10^16 = 1%, 10^18 = 100%)\n@param _voteTime Seconds that a vote will be open for token holders to vote (unless enough yeas or nays have been cast to make an early decision)",
            "id": 5115,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 5079,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5078,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8693,
                  "src": "3721:8:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3721:8:8"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5077,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5070,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 5115,
                  "src": "3573:18:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MiniMeToken_$3743",
                    "typeString": "contract MiniMeToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5069,
                    "name": "MiniMeToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3743,
                    "src": "3573:11:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$3743",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5072,
                  "name": "_supportRequiredPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 5115,
                  "src": "3601:26:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5071,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "3601:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5074,
                  "name": "_minAcceptQuorumPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 5115,
                  "src": "3637:26:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5073,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "3637:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5076,
                  "name": "_voteTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 5115,
                  "src": "3673:16:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5075,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "3673:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3563:132:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5080,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3734:0:8"
            },
            "scope": 5862,
            "src": "3544:531:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5153,
              "nodeType": "Block",
              "src": "4408:281:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 5134,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5132,
                          "name": "minAcceptQuorumPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5017,
                          "src": "4426:18:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5133,
                          "name": "_supportRequiredPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5117,
                          "src": "4448:19:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "4426:41:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5135,
                        "name": "ERROR_CHANGE_SUPPORT_PCTS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4963,
                        "src": "4469:25:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5131,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "4418:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5136,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4418:77:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5137,
                  "nodeType": "ExpressionStatement",
                  "src": "4418:77:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 5141,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5139,
                          "name": "_supportRequiredPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5117,
                          "src": "4513:19:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5140,
                          "name": "PCT_BASE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4954,
                          "src": "4535:8:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "4513:30:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5142,
                        "name": "ERROR_CHANGE_SUPPORT_TOO_BIG",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4972,
                        "src": "4545:28:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5138,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "4505:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4505:69:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5144,
                  "nodeType": "ExpressionStatement",
                  "src": "4505:69:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5147,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5145,
                      "name": "supportRequiredPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5015,
                      "src": "4584:18:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5146,
                      "name": "_supportRequiredPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5117,
                      "src": "4605:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "4584:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5148,
                  "nodeType": "ExpressionStatement",
                  "src": "4584:40:8"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5150,
                        "name": "_supportRequiredPct",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5117,
                        "src": "4662:19:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 5149,
                      "name": "ChangeSupportRequired",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5051,
                      "src": "4640:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$",
                        "typeString": "function (uint64)"
                      }
                    },
                    "id": 5151,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4640:42:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5152,
                  "nodeType": "EmitStatement",
                  "src": "4635:47:8"
                }
              ]
            },
            "documentation": "@notice Change required support to `@formatPct(_supportRequiredPct)`%\n@param _supportRequiredPct New required support",
            "id": 5154,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5120,
                    "name": "MODIFY_SUPPORT_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4944,
                    "src": "4319:19:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5123,
                            "name": "_supportRequiredPct",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5117,
                            "src": "4352:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 5122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4344:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 5124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4344:28:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5126,
                            "name": "supportRequiredPct",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5015,
                            "src": "4382:18:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 5125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4374:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 5127,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4374:27:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5121,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7175,
                        7190,
                        7210,
                        7225,
                        7245,
                        7266,
                        7290,
                        7310,
                        7339,
                        7364,
                        7389,
                        7412,
                        7443,
                        7482,
                        7529,
                        7584
                      ],
                      "referencedDeclaration": 7443,
                      "src": "4340:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 5128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4340:62:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 5129,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5119,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8406,
                  "src": "4313:5:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4313:90:8"
              }
            ],
            "name": "changeSupportRequiredPct",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5118,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5117,
                  "name": "_supportRequiredPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 5154,
                  "src": "4260:26:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5116,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "4260:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4259:28:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5130,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4408:0:8"
            },
            "scope": 5862,
            "src": "4226:463:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5185,
              "nodeType": "Block",
              "src": "5031:195:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 5173,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5171,
                          "name": "_minAcceptQuorumPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5156,
                          "src": "5049:19:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5172,
                          "name": "supportRequiredPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5015,
                          "src": "5072:18:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "5049:41:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5174,
                        "name": "ERROR_CHANGE_QUORUM_PCTS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4966,
                        "src": "5092:24:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5170,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "5041:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5175,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5041:76:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5176,
                  "nodeType": "ExpressionStatement",
                  "src": "5041:76:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5179,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5177,
                      "name": "minAcceptQuorumPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5017,
                      "src": "5127:18:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5178,
                      "name": "_minAcceptQuorumPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5156,
                      "src": "5148:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "5127:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5180,
                  "nodeType": "ExpressionStatement",
                  "src": "5127:40:8"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5182,
                        "name": "_minAcceptQuorumPct",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5156,
                        "src": "5199:19:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 5181,
                      "name": "ChangeMinQuorum",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5055,
                      "src": "5183:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$",
                        "typeString": "function (uint64)"
                      }
                    },
                    "id": 5183,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5183:36:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5184,
                  "nodeType": "EmitStatement",
                  "src": "5178:41:8"
                }
              ]
            },
            "documentation": "@notice Change minimum acceptance quorum to `@formatPct(_minAcceptQuorumPct)`%\n@param _minAcceptQuorumPct New acceptance quorum",
            "id": 5186,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5159,
                    "name": "MODIFY_QUORUM_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4949,
                    "src": "4943:18:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5162,
                            "name": "_minAcceptQuorumPct",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5156,
                            "src": "4975:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 5161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4967:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 5163,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4967:28:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5165,
                            "name": "minAcceptQuorumPct",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5017,
                            "src": "5005:18:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 5164,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4997:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 5166,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4997:27:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5160,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7175,
                        7190,
                        7210,
                        7225,
                        7245,
                        7266,
                        7290,
                        7310,
                        7339,
                        7364,
                        7389,
                        7412,
                        7443,
                        7482,
                        7529,
                        7584
                      ],
                      "referencedDeclaration": 7443,
                      "src": "4963:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 5167,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4963:62:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 5168,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5158,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8406,
                  "src": "4937:5:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4937:89:8"
              }
            ],
            "name": "changeMinAcceptQuorumPct",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5157,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5156,
                  "name": "_minAcceptQuorumPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 5186,
                  "src": "4884:26:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5155,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "4884:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4883:28:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5169,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5031:0:8"
            },
            "scope": 5862,
            "src": "4850:376:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5205,
              "nodeType": "Block",
              "src": "5568:73:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5199,
                        "name": "_executionScript",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5188,
                        "src": "5594:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5200,
                        "name": "_metadata",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5190,
                        "src": "5612:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 5201,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5623:4:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 5202,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5629:4:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5198,
                      "name": "_newVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5647,
                      "src": "5585:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_bool_$_t_bool_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,string memory,bool,bool) returns (uint256)"
                      }
                    },
                    "id": 5203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5585:49:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5197,
                  "id": 5204,
                  "nodeType": "Return",
                  "src": "5578:56:8"
                }
              ]
            },
            "documentation": "@notice Create a new vote about \"`_metadata`\"\n@param _executionScript EVM script to be executed on approval\n@param _metadata Vote metadata\n@return voteId Id for newly created vote",
            "id": 5206,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5193,
                    "name": "CREATE_VOTES_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4939,
                    "src": "5524:17:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 5194,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5192,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8387,
                  "src": "5519:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5519:23:8"
              }
            ],
            "name": "newVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5191,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5188,
                  "name": "_executionScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 5206,
                  "src": "5468:22:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5187,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5468:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5190,
                  "name": "_metadata",
                  "nodeType": "VariableDeclaration",
                  "scope": 5206,
                  "src": "5492:16:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5189,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5492:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5467:42:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5197,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5196,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5206,
                  "src": "5552:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5195,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5552:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5551:16:8"
            },
            "scope": 5862,
            "src": "5451:190:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5229,
              "nodeType": "Block",
              "src": "6213:92:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5223,
                        "name": "_executionScript",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5208,
                        "src": "6239:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5224,
                        "name": "_metadata",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5210,
                        "src": "6257:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5225,
                        "name": "_castVote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5212,
                        "src": "6268:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5226,
                        "name": "_executesIfDecided",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5214,
                        "src": "6279:18:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5222,
                      "name": "_newVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5647,
                      "src": "6230:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_bool_$_t_bool_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,string memory,bool,bool) returns (uint256)"
                      }
                    },
                    "id": 5227,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6230:68:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5221,
                  "id": 5228,
                  "nodeType": "Return",
                  "src": "6223:75:8"
                }
              ]
            },
            "documentation": "@notice Create a new vote about \"`_metadata`\"\n@param _executionScript EVM script to be executed on approval\n@param _metadata Vote metadata\n@param _castVote Whether to also cast newly created vote\n@param _executesIfDecided Whether to also immediately execute newly created vote if decided\n@return voteId id for newly created vote",
            "id": 5230,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5217,
                    "name": "CREATE_VOTES_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4939,
                    "src": "6157:17:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 5218,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5216,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8387,
                  "src": "6152:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6152:23:8"
              }
            ],
            "name": "newVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5215,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5208,
                  "name": "_executionScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 5230,
                  "src": "6044:22:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5207,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6044:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5210,
                  "name": "_metadata",
                  "nodeType": "VariableDeclaration",
                  "scope": 5230,
                  "src": "6068:16:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5209,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6068:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5212,
                  "name": "_castVote",
                  "nodeType": "VariableDeclaration",
                  "scope": 5230,
                  "src": "6086:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5211,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6086:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5214,
                  "name": "_executesIfDecided",
                  "nodeType": "VariableDeclaration",
                  "scope": 5230,
                  "src": "6102:23:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5213,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6102:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6043:83:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5221,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5220,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5230,
                  "src": "6193:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5219,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6193:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6192:16:8"
            },
            "scope": 5862,
            "src": "6027:278:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5259,
              "nodeType": "Block",
              "src": "6842:141:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5244,
                            "name": "_voteId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5232,
                            "src": "6868:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5245,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12670,
                              "src": "6877:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6877:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 5243,
                          "name": "canVote",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5359,
                          "src": "6860:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (uint256,address) view returns (bool)"
                          }
                        },
                        "id": 5247,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6860:28:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5248,
                        "name": "ERROR_CAN_NOT_VOTE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4975,
                        "src": "6890:18:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5242,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "6852:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5249,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6852:57:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5250,
                  "nodeType": "ExpressionStatement",
                  "src": "6852:57:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5252,
                        "name": "_voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5232,
                        "src": "6925:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5253,
                        "name": "_supports",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5234,
                        "src": "6934:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5254,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12670,
                          "src": "6945:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5255,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6945:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5256,
                        "name": "_executesIfDecided",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5236,
                        "src": "6957:18:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5251,
                      "name": "_vote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5768,
                      "src": "6919:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (uint256,bool,address,bool)"
                      }
                    },
                    "id": 5257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6919:57:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5258,
                  "nodeType": "ExpressionStatement",
                  "src": "6919:57:8"
                }
              ]
            },
            "documentation": "@notice Vote `_supports ? 'yea' : 'nay'` in vote #`_voteId`\n@dev Initialization check is implicitly provided by `voteExists()` as new votes can only be\n     created via `newVote(),` which requires initialization\n@param _voteId Id for vote\n@param _supports Whether voter supports the vote\n@param _executesIfDecided Whether the vote should execute its action if it becomes decided",
            "id": 5260,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5239,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5232,
                    "src": "6833:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 5240,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5238,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5068,
                  "src": "6822:10:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6822:19:8"
              }
            ],
            "name": "vote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5237,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5232,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5260,
                  "src": "6755:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5231,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6755:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5234,
                  "name": "_supports",
                  "nodeType": "VariableDeclaration",
                  "scope": 5260,
                  "src": "6772:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5233,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6772:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5236,
                  "name": "_executesIfDecided",
                  "nodeType": "VariableDeclaration",
                  "scope": 5260,
                  "src": "6788:23:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5235,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6788:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6754:58:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5241,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6842:0:8"
            },
            "scope": 5862,
            "src": "6741:242:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5279,
              "nodeType": "Block",
              "src": "7306:99:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5270,
                            "name": "_voteId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5262,
                            "src": "7335:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5269,
                          "name": "canExecute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5437,
                          "src": "7324:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) view returns (bool)"
                          }
                        },
                        "id": 5271,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7324:19:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5272,
                        "name": "ERROR_CAN_NOT_EXECUTE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4978,
                        "src": "7345:21:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5268,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "7316:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5273,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7316:51:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5274,
                  "nodeType": "ExpressionStatement",
                  "src": "7316:51:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5276,
                        "name": "_voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5262,
                        "src": "7390:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5275,
                      "name": "_executeVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5808,
                      "src": "7377:12:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 5277,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7377:21:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5278,
                  "nodeType": "ExpressionStatement",
                  "src": "7377:21:8"
                }
              ]
            },
            "documentation": "@notice Execute vote #`_voteId`\n@dev Initialization check is implicitly provided by `voteExists()` as new votes can only be\n     created via `newVote(),` which requires initialization\n@param _voteId Id for vote",
            "id": 5280,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5265,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5262,
                    "src": "7297:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 5266,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5264,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5068,
                  "src": "7286:10:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7286:19:8"
              }
            ],
            "name": "executeVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5263,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5262,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5280,
                  "src": "7260:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5261,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7260:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7259:17:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5267,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7306:0:8"
            },
            "scope": 5862,
            "src": "7239:166:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5287,
              "nodeType": "Block",
              "src": "7461:28:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 5285,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7478:4:8",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 5284,
                  "id": 5286,
                  "nodeType": "Return",
                  "src": "7471:11:8"
                }
              ]
            },
            "documentation": null,
            "id": 5288,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isForwarder",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5281,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7431:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5284,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5283,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5288,
                  "src": "7455:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5282,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7455:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7454:6:8"
            },
            "scope": 5862,
            "src": "7411:78:8",
            "stateMutability": "pure",
            "superFunction": 8628,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5309,
              "nodeType": "Block",
              "src": "7740:129:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5295,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12670,
                              "src": "7769:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5296,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7769:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5297,
                            "name": "_evmScript",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5290,
                            "src": "7781:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 5294,
                          "name": "canForward",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            5327
                          ],
                          "referencedDeclaration": 5327,
                          "src": "7758:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,bytes memory) view returns (bool)"
                          }
                        },
                        "id": 5298,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7758:34:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5299,
                        "name": "ERROR_CAN_NOT_FORWARD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4981,
                        "src": "7794:21:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5293,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "7750:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5300,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7750:66:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5301,
                  "nodeType": "ExpressionStatement",
                  "src": "7750:66:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5303,
                        "name": "_evmScript",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5290,
                        "src": "7835:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "",
                        "id": 5304,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7847:2:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 5305,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7851:4:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 5306,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7857:4:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5302,
                      "name": "_newVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5647,
                      "src": "7826:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_bool_$_t_bool_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,string memory,bool,bool) returns (uint256)"
                      }
                    },
                    "id": 5307,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7826:36:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5308,
                  "nodeType": "ExpressionStatement",
                  "src": "7826:36:8"
                }
              ]
            },
            "documentation": "@notice Creates a vote to execute the desired action, and casts a support vote if possible\n@dev IForwarder interface conformance\n@param _evmScript Start vote with script",
            "id": 5310,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "forward",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5291,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5290,
                  "name": "_evmScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 5310,
                  "src": "7715:16:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5289,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7715:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7714:18:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5292,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7740:0:8"
            },
            "scope": 5862,
            "src": "7698:171:8",
            "stateMutability": "nonpayable",
            "superFunction": 8642,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5326,
              "nodeType": "Block",
              "src": "7946:152:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5320,
                        "name": "_sender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5312,
                        "src": "8057:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5321,
                        "name": "CREATE_VOTES_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4939,
                        "src": "8066:17:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5322,
                          "name": "arr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            7175,
                            7190,
                            7210,
                            7225,
                            7245,
                            7266,
                            7290,
                            7310,
                            7339,
                            7364,
                            7389,
                            7412,
                            7443,
                            7482,
                            7529,
                            7584
                          ],
                          "referencedDeclaration": 7175,
                          "src": "8085:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$__$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function () pure returns (uint256[] memory)"
                          }
                        },
                        "id": 5323,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8085:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      ],
                      "id": 5319,
                      "name": "canPerform",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8463,
                      "src": "8046:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (address,bytes32,uint256[] memory) view returns (bool)"
                      }
                    },
                    "id": 5324,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8046:45:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5318,
                  "id": 5325,
                  "nodeType": "Return",
                  "src": "8039:52:8"
                }
              ]
            },
            "documentation": null,
            "id": 5327,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "canForward",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5315,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5312,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 5327,
                  "src": "7895:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5311,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7895:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5314,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5327,
                  "src": "7912:5:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5313,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7912:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7894:24:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5318,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5317,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5327,
                  "src": "7940:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5316,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7940:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7939:6:8"
            },
            "scope": 5862,
            "src": "7875:223:8",
            "stateMutability": "view",
            "superFunction": 8637,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5358,
              "nodeType": "Block",
              "src": "8201:142:8",
              "statements": [
                {
                  "assignments": [
                    5340
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5340,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 5359,
                      "src": "8211:18:8",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5339,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5011,
                        "src": "8211:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5344,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 5341,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5023,
                      "src": "8232:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$5011_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 5343,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5342,
                      "name": "_voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5329,
                      "src": "8238:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8232:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$5011_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8211:35:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 5356,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5346,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5340,
                          "src": "8276:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        ],
                        "id": 5345,
                        "name": "_isVoteOpen",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5829,
                        "src": "8264:11:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Vote_$5011_storage_ptr_$returns$_t_bool_$",
                          "typeString": "function (struct Voting.Vote storage pointer) view returns (bool)"
                        }
                      },
                      "id": 5347,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8264:18:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 5355,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5350,
                            "name": "_voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5331,
                            "src": "8304:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5351,
                              "name": "vote_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5340,
                              "src": "8312:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                                "typeString": "struct Voting.Vote storage pointer"
                              }
                            },
                            "id": 5352,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "snapshotBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4994,
                            "src": "8312:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5348,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5013,
                            "src": "8286:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MiniMeToken_$3743",
                              "typeString": "contract MiniMeToken"
                            }
                          },
                          "id": 5349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOfAt",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3196,
                          "src": "8286:17:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (address,uint256) view external returns (uint256)"
                          }
                        },
                        "id": 5353,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8286:46:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 5354,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8335:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "8286:50:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "8264:72:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5338,
                  "id": 5357,
                  "nodeType": "Return",
                  "src": "8257:79:8"
                }
              ]
            },
            "documentation": null,
            "id": 5359,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5334,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5329,
                    "src": "8177:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 5335,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5333,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5068,
                  "src": "8166:10:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8166:19:8"
              }
            ],
            "name": "canVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5332,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5329,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5359,
                  "src": "8121:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5328,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8121:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5331,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 5359,
                  "src": "8138:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5330,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8138:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8120:33:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5338,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5337,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5359,
                  "src": "8195:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5336,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8195:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8194:6:8"
            },
            "scope": 5862,
            "src": "8104:239:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5436,
              "nodeType": "Block",
              "src": "8433:738:8",
              "statements": [
                {
                  "assignments": [
                    5370
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5370,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 5437,
                      "src": "8443:18:8",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5369,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5011,
                        "src": "8443:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5374,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 5371,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5023,
                      "src": "8464:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$5011_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 5373,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5372,
                      "name": "_voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5361,
                      "src": "8470:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8464:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$5011_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8443:35:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 5375,
                      "name": "vote_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5370,
                      "src": "8493:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                        "typeString": "struct Voting.Vote storage pointer"
                      }
                    },
                    "id": 5376,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "executed",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 4990,
                    "src": "8493:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5380,
                  "nodeType": "IfStatement",
                  "src": "8489:57:8",
                  "trueBody": {
                    "id": 5379,
                    "nodeType": "Block",
                    "src": "8509:37:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 5377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8530:5:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 5368,
                        "id": 5378,
                        "nodeType": "Return",
                        "src": "8523:12:8"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5382,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5370,
                          "src": "8609:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 5383,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "yea",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5000,
                        "src": "8609:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5384,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5370,
                          "src": "8620:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 5385,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "votingPower",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5004,
                        "src": "8620:17:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5386,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5370,
                          "src": "8639:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 5387,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "supportRequiredPct",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4996,
                        "src": "8639:24:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 5381,
                      "name": "_isValuePct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5861,
                      "src": "8597:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                      }
                    },
                    "id": 5388,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8597:67:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5392,
                  "nodeType": "IfStatement",
                  "src": "8593:109:8",
                  "trueBody": {
                    "id": 5391,
                    "nodeType": "Block",
                    "src": "8666:36:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 5389,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8687:4:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 5368,
                        "id": 5390,
                        "nodeType": "Return",
                        "src": "8680:11:8"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    5394
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5394,
                      "name": "totalVotes",
                      "nodeType": "VariableDeclaration",
                      "scope": 5437,
                      "src": "8712:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5393,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8712:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5401,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5398,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5370,
                          "src": "8747:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 5399,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "nay",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5002,
                        "src": "8747:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5395,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5370,
                          "src": "8733:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 5396,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "yea",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5000,
                        "src": "8733:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5397,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11689,
                      "src": "8733:13:8",
                      "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": 5400,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8733:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8712:45:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5403,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5370,
                        "src": "8807:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      ],
                      "id": 5402,
                      "name": "_isVoteOpen",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5829,
                      "src": "8795:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Vote_$5011_storage_ptr_$returns$_t_bool_$",
                        "typeString": "function (struct Voting.Vote storage pointer) view returns (bool)"
                      }
                    },
                    "id": 5404,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8795:18:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5408,
                  "nodeType": "IfStatement",
                  "src": "8791:61:8",
                  "trueBody": {
                    "id": 5407,
                    "nodeType": "Block",
                    "src": "8815:37:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 5405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8836:5:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 5368,
                        "id": 5406,
                        "nodeType": "Return",
                        "src": "8829:12:8"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 5416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "8896:61:8",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5410,
                            "name": "vote_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5370,
                            "src": "8909:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 5411,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "yea",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5000,
                          "src": "8909:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 5412,
                          "name": "totalVotes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5394,
                          "src": "8920:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5413,
                            "name": "vote_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5370,
                            "src": "8932:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 5414,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "supportRequiredPct",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4996,
                          "src": "8932:24:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        ],
                        "id": 5409,
                        "name": "_isValuePct",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5861,
                        "src": "8897:11:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                        }
                      },
                      "id": 5415,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8897:60:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5420,
                  "nodeType": "IfStatement",
                  "src": "8892:104:8",
                  "trueBody": {
                    "id": 5419,
                    "nodeType": "Block",
                    "src": "8959:37:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 5417,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8980:5:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 5368,
                        "id": 5418,
                        "nodeType": "Return",
                        "src": "8973:12:8"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 5429,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "9036:68:8",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5422,
                            "name": "vote_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5370,
                            "src": "9049:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 5423,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "yea",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5000,
                          "src": "9049:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5424,
                            "name": "vote_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5370,
                            "src": "9060:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 5425,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "votingPower",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5004,
                          "src": "9060:17:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5426,
                            "name": "vote_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5370,
                            "src": "9079:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 5427,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "minAcceptQuorumPct",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4998,
                          "src": "9079:24:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        ],
                        "id": 5421,
                        "name": "_isValuePct",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5861,
                        "src": "9037:11:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                        }
                      },
                      "id": 5428,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9037:67:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5433,
                  "nodeType": "IfStatement",
                  "src": "9032:111:8",
                  "trueBody": {
                    "id": 5432,
                    "nodeType": "Block",
                    "src": "9106:37:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 5430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9127:5:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 5368,
                        "id": 5431,
                        "nodeType": "Return",
                        "src": "9120:12:8"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 5434,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "9160:4:8",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 5368,
                  "id": 5435,
                  "nodeType": "Return",
                  "src": "9153:11:8"
                }
              ]
            },
            "documentation": null,
            "id": 5437,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5364,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5361,
                    "src": "8409:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 5365,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5363,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5068,
                  "src": "8398:10:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8398:19:8"
              }
            ],
            "name": "canExecute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5362,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5361,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5437,
                  "src": "8369:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5360,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8369:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8368:17:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5368,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5367,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5437,
                  "src": "8427:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5366,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8427:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8426:6:8"
            },
            "scope": 5862,
            "src": "8349:822:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5522,
              "nodeType": "Block",
              "src": "9593:440:8",
              "statements": [
                {
                  "assignments": [
                    5466
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5466,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 5523,
                      "src": "9603:18:8",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5465,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5011,
                        "src": "9603:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5470,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 5467,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5023,
                      "src": "9624:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$5011_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 5469,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5468,
                      "name": "_voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5439,
                      "src": "9630:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9624:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$5011_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9603:35:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5475,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5471,
                      "name": "open",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5445,
                      "src": "9649:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5473,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5466,
                          "src": "9668:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        ],
                        "id": 5472,
                        "name": "_isVoteOpen",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5829,
                        "src": "9656:11:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Vote_$5011_storage_ptr_$returns$_t_bool_$",
                          "typeString": "function (struct Voting.Vote storage pointer) view returns (bool)"
                        }
                      },
                      "id": 5474,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9656:18:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9649:25:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5476,
                  "nodeType": "ExpressionStatement",
                  "src": "9649:25:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5480,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5477,
                      "name": "executed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5447,
                      "src": "9684:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5478,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5466,
                        "src": "9695:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5479,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "executed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4990,
                      "src": "9695:14:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9684:25:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5481,
                  "nodeType": "ExpressionStatement",
                  "src": "9684:25:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5485,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5482,
                      "name": "startDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5449,
                      "src": "9719:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5483,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5466,
                        "src": "9731:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5484,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "startDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4992,
                      "src": "9731:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "9719:27:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5486,
                  "nodeType": "ExpressionStatement",
                  "src": "9719:27:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5487,
                      "name": "snapshotBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5451,
                      "src": "9756:13:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5488,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5466,
                        "src": "9772:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5489,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "snapshotBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4994,
                      "src": "9772:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "9756:35:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5491,
                  "nodeType": "ExpressionStatement",
                  "src": "9756:35:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5495,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5492,
                      "name": "supportRequired",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5453,
                      "src": "9801:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5493,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5466,
                        "src": "9819:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5494,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "supportRequiredPct",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4996,
                      "src": "9819:24:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "9801:42:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5496,
                  "nodeType": "ExpressionStatement",
                  "src": "9801:42:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5500,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5497,
                      "name": "minAcceptQuorum",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5455,
                      "src": "9853:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5498,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5466,
                        "src": "9871:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5499,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "minAcceptQuorumPct",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4998,
                      "src": "9871:24:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "9853:42:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5501,
                  "nodeType": "ExpressionStatement",
                  "src": "9853:42:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5505,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5502,
                      "name": "yea",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5457,
                      "src": "9905:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5503,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5466,
                        "src": "9911:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5504,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "yea",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5000,
                      "src": "9911:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9905:15:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5506,
                  "nodeType": "ExpressionStatement",
                  "src": "9905:15:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5510,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5507,
                      "name": "nay",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5459,
                      "src": "9930:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5508,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5466,
                        "src": "9936:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5509,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nay",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5002,
                      "src": "9936:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9930:15:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5511,
                  "nodeType": "ExpressionStatement",
                  "src": "9930:15:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5515,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5512,
                      "name": "votingPower",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5461,
                      "src": "9955:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5513,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5466,
                        "src": "9969:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5514,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "votingPower",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5004,
                      "src": "9969:17:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9955:31:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5516,
                  "nodeType": "ExpressionStatement",
                  "src": "9955:31:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5520,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5517,
                      "name": "script",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5463,
                      "src": "9996:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5518,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5466,
                        "src": "10005:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5519,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "executionScript",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5006,
                      "src": "10005:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "src": "9996:30:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 5521,
                  "nodeType": "ExpressionStatement",
                  "src": "9996:30:8"
                }
              ]
            },
            "documentation": null,
            "id": 5523,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5442,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5439,
                    "src": "9258:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 5443,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5441,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5068,
                  "src": "9247:10:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9247:19:8"
              }
            ],
            "name": "getVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5440,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5439,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5523,
                  "src": "9194:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5438,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9194:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9193:17:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5464,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5445,
                  "name": "open",
                  "nodeType": "VariableDeclaration",
                  "scope": 5523,
                  "src": "9297:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5444,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9297:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5447,
                  "name": "executed",
                  "nodeType": "VariableDeclaration",
                  "scope": 5523,
                  "src": "9320:13:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5446,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9320:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5449,
                  "name": "startDate",
                  "nodeType": "VariableDeclaration",
                  "scope": 5523,
                  "src": "9347:16:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5448,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "9347:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5451,
                  "name": "snapshotBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 5523,
                  "src": "9377:20:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5450,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "9377:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5453,
                  "name": "supportRequired",
                  "nodeType": "VariableDeclaration",
                  "scope": 5523,
                  "src": "9411:22:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5452,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "9411:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5455,
                  "name": "minAcceptQuorum",
                  "nodeType": "VariableDeclaration",
                  "scope": 5523,
                  "src": "9447:22:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5454,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "9447:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5457,
                  "name": "yea",
                  "nodeType": "VariableDeclaration",
                  "scope": 5523,
                  "src": "9483:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5456,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9483:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5459,
                  "name": "nay",
                  "nodeType": "VariableDeclaration",
                  "scope": 5523,
                  "src": "9508:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5458,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9508:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5461,
                  "name": "votingPower",
                  "nodeType": "VariableDeclaration",
                  "scope": 5523,
                  "src": "9533:19:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5460,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9533:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5463,
                  "name": "script",
                  "nodeType": "VariableDeclaration",
                  "scope": 5523,
                  "src": "9566:12:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5462,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9566:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9283:305:8"
            },
            "scope": 5862,
            "src": "9177:856:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5542,
              "nodeType": "Block",
              "src": "10148:53:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5535,
                          "name": "votes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5023,
                          "src": "10165:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$5011_storage_$",
                            "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                          }
                        },
                        "id": 5537,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5536,
                          "name": "_voteId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5525,
                          "src": "10171:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "10165:14:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage",
                          "typeString": "struct Voting.Vote storage ref"
                        }
                      },
                      "id": 5538,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voters",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5010,
                      "src": "10165:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_enum$_VoterState_$4988_$",
                        "typeString": "mapping(address => enum Voting.VoterState)"
                      }
                    },
                    "id": 5540,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5539,
                      "name": "_voter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5527,
                      "src": "10187:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "10165:29:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_VoterState_$4988",
                      "typeString": "enum Voting.VoterState"
                    }
                  },
                  "functionReturnParameters": 5534,
                  "id": 5541,
                  "nodeType": "Return",
                  "src": "10158:36:8"
                }
              ]
            },
            "documentation": null,
            "id": 5543,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5530,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5525,
                    "src": "10118:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 5531,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5529,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5068,
                  "src": "10107:10:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "10107:19:8"
              }
            ],
            "name": "getVoterState",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5528,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5525,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5543,
                  "src": "10062:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5524,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10062:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5527,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 5543,
                  "src": "10079:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5526,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10079:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10061:33:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5533,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5543,
                  "src": "10136:10:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_VoterState_$4988",
                    "typeString": "enum Voting.VoterState"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5532,
                    "name": "VoterState",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4988,
                    "src": "10136:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_VoterState_$4988",
                      "typeString": "enum Voting.VoterState"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10135:12:8"
            },
            "scope": 5862,
            "src": "10039:162:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5646,
              "nodeType": "Block",
              "src": "10362:742:8",
              "statements": [
                {
                  "assignments": [
                    5557
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5557,
                      "name": "votingPower",
                      "nodeType": "VariableDeclaration",
                      "scope": 5647,
                      "src": "10372:19:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5556,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10372:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5563,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5560,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5577,
                          "src": "10414:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 5561,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "snapshotBlock",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4994,
                        "src": "10414:19:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5558,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5013,
                        "src": "10394:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$3743",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "id": 5559,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "totalSupplyAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3243,
                      "src": "10394:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view external returns (uint256)"
                      }
                    },
                    "id": 5562,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10394:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10372:62:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5565,
                          "name": "votingPower",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5557,
                          "src": "10452:11:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5566,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10466:1:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "10452:15:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5568,
                        "name": "ERROR_NO_VOTING_POWER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4984,
                        "src": "10469:21:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5564,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "10444:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5569,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10444:47:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5570,
                  "nodeType": "ExpressionStatement",
                  "src": "10444:47:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5574,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5571,
                      "name": "voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5554,
                      "src": "10502:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5573,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "10511:13:8",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 5572,
                        "name": "votesLength",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5025,
                        "src": "10511:11:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10502:22:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5575,
                  "nodeType": "ExpressionStatement",
                  "src": "10502:22:8"
                },
                {
                  "assignments": [
                    5577
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5577,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 5647,
                      "src": "10534:18:8",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5576,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5011,
                        "src": "10534:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5581,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 5578,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5023,
                      "src": "10555:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$5011_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 5580,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5579,
                      "name": "voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5554,
                      "src": "10561:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "10555:13:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$5011_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10534:34:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5587,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5582,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5577,
                        "src": "10578:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5584,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "startDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4992,
                      "src": "10578:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 5585,
                        "name": "getTimestamp64",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8868,
                        "src": "10596:14:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                          "typeString": "function () view returns (uint64)"
                        }
                      },
                      "id": 5586,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10596:16:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "10578:34:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5588,
                  "nodeType": "ExpressionStatement",
                  "src": "10578:34:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5596,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5589,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5577,
                        "src": "10622:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5591,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "snapshotBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4994,
                      "src": "10622:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "id": 5595,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5592,
                          "name": "getBlockNumber64",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8848,
                          "src": "10644:16:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                            "typeString": "function () view returns (uint64)"
                          }
                        },
                        "id": 5593,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10644:18:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 5594,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10665:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "10644:22:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "10622:44:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5597,
                  "nodeType": "ExpressionStatement",
                  "src": "10622:44:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5602,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5598,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5577,
                        "src": "10718:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5600,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "supportRequiredPct",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4996,
                      "src": "10718:24:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5601,
                      "name": "supportRequiredPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5015,
                      "src": "10745:18:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "10718:45:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5603,
                  "nodeType": "ExpressionStatement",
                  "src": "10718:45:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5608,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5604,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5577,
                        "src": "10773:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5606,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "minAcceptQuorumPct",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4998,
                      "src": "10773:24:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5607,
                      "name": "minAcceptQuorumPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5017,
                      "src": "10800:18:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "10773:45:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5609,
                  "nodeType": "ExpressionStatement",
                  "src": "10773:45:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5614,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5610,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5577,
                        "src": "10828:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5612,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "votingPower",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5004,
                      "src": "10828:17:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5613,
                      "name": "votingPower",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5557,
                      "src": "10848:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10828:31:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5615,
                  "nodeType": "ExpressionStatement",
                  "src": "10828:31:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5620,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5616,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5577,
                        "src": "10869:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5618,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "executionScript",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5006,
                      "src": "10869:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5619,
                      "name": "_executionScript",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5545,
                      "src": "10893:16:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "10869:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 5621,
                  "nodeType": "ExpressionStatement",
                  "src": "10869:40:8"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5623,
                        "name": "voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5554,
                        "src": "10935:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5624,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12670,
                          "src": "10943:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5625,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "10943:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5626,
                        "name": "_metadata",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5547,
                        "src": "10955:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5622,
                      "name": "StartVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5033,
                      "src": "10925:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,address,string memory)"
                      }
                    },
                    "id": 5627,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10925:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5628,
                  "nodeType": "EmitStatement",
                  "src": "10920:45:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 5635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5629,
                      "name": "_castVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5549,
                      "src": "10980:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5631,
                          "name": "voteId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5554,
                          "src": "11001:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5632,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12670,
                            "src": "11009:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 5633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "11009:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 5630,
                        "name": "canVote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5359,
                        "src": "10993:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_address_$returns$_t_bool_$",
                          "typeString": "function (uint256,address) view returns (bool)"
                        }
                      },
                      "id": 5634,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10993:27:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "10980:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5645,
                  "nodeType": "IfStatement",
                  "src": "10976:122:8",
                  "trueBody": {
                    "id": 5644,
                    "nodeType": "Block",
                    "src": "11022:76:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5637,
                              "name": "voteId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5554,
                              "src": "11042:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 5638,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11050:4:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5639,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12670,
                                "src": "11056:3:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5640,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11056:10:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5641,
                              "name": "_executesIfDecided",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5551,
                              "src": "11068:18:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 5636,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5768,
                            "src": "11036:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,bool,address,bool)"
                            }
                          },
                          "id": 5642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11036:51:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5643,
                        "nodeType": "ExpressionStatement",
                        "src": "11036:51:8"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 5647,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_newVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5552,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5545,
                  "name": "_executionScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 5647,
                  "src": "10225:22:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5544,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "10225:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5547,
                  "name": "_metadata",
                  "nodeType": "VariableDeclaration",
                  "scope": 5647,
                  "src": "10249:16:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5546,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "10249:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5549,
                  "name": "_castVote",
                  "nodeType": "VariableDeclaration",
                  "scope": 5647,
                  "src": "10267:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5548,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10267:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5551,
                  "name": "_executesIfDecided",
                  "nodeType": "VariableDeclaration",
                  "scope": 5647,
                  "src": "10283:23:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5550,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10283:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10224:83:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5555,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5554,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5647,
                  "src": "10342:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5553,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10342:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10341:16:8"
            },
            "scope": 5862,
            "src": "10207:897:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5767,
              "nodeType": "Block",
              "src": "11250:924:8",
              "statements": [
                {
                  "assignments": [
                    5659
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5659,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 5768,
                      "src": "11260:18:8",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5658,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5011,
                        "src": "11260:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5663,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 5660,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5023,
                      "src": "11281:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$5011_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 5662,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5661,
                      "name": "_voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5649,
                      "src": "11287:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "11281:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$5011_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11260:35:8"
                },
                {
                  "assignments": [
                    5665
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5665,
                      "name": "voterStake",
                      "nodeType": "VariableDeclaration",
                      "scope": 5768,
                      "src": "11397:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5664,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11397:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5672,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5668,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5653,
                        "src": "11436:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5669,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5659,
                          "src": "11444:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 5670,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "snapshotBlock",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4994,
                        "src": "11444:19:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5666,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5013,
                        "src": "11418:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$3743",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "id": 5667,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOfAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3196,
                      "src": "11418:17:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (address,uint256) view external returns (uint256)"
                      }
                    },
                    "id": 5671,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11418:46:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11397:67:8"
                },
                {
                  "assignments": [
                    5674
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5674,
                      "name": "state",
                      "nodeType": "VariableDeclaration",
                      "scope": 5768,
                      "src": "11474:16:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_VoterState_$4988",
                        "typeString": "enum Voting.VoterState"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5673,
                        "name": "VoterState",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4988,
                        "src": "11474:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_VoterState_$4988",
                          "typeString": "enum Voting.VoterState"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5679,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5675,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5659,
                        "src": "11493:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5676,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voters",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5010,
                      "src": "11493:12:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_enum$_VoterState_$4988_$",
                        "typeString": "mapping(address => enum Voting.VoterState)"
                      }
                    },
                    "id": 5678,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5677,
                      "name": "_voter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5653,
                      "src": "11506:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "11493:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_VoterState_$4988",
                      "typeString": "enum Voting.VoterState"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11474:39:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_VoterState_$4988",
                      "typeString": "enum Voting.VoterState"
                    },
                    "id": 5683,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5680,
                      "name": "state",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5674,
                      "src": "11585:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_VoterState_$4988",
                        "typeString": "enum Voting.VoterState"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5681,
                        "name": "VoterState",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4988,
                        "src": "11594:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_VoterState_$4988_$",
                          "typeString": "type(enum Voting.VoterState)"
                        }
                      },
                      "id": 5682,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Yea",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11594:14:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_VoterState_$4988",
                        "typeString": "enum Voting.VoterState"
                      }
                    },
                    "src": "11585:23:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_enum$_VoterState_$4988",
                        "typeString": "enum Voting.VoterState"
                      },
                      "id": 5698,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 5695,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5674,
                        "src": "11682:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_VoterState_$4988",
                          "typeString": "enum Voting.VoterState"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5696,
                          "name": "VoterState",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4988,
                          "src": "11691:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_VoterState_$4988_$",
                            "typeString": "type(enum Voting.VoterState)"
                          }
                        },
                        "id": 5697,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "Nay",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11691:14:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_VoterState_$4988",
                          "typeString": "enum Voting.VoterState"
                        }
                      },
                      "src": "11682:23:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": null,
                    "id": 5710,
                    "nodeType": "IfStatement",
                    "src": "11678:91:8",
                    "trueBody": {
                      "id": 5709,
                      "nodeType": "Block",
                      "src": "11707:62:8",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 5707,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5699,
                                "name": "vote_",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5659,
                                "src": "11721:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                                  "typeString": "struct Voting.Vote storage pointer"
                                }
                              },
                              "id": 5701,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "nay",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5002,
                              "src": "11721:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5705,
                                  "name": "voterStake",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5665,
                                  "src": "11747:10:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5702,
                                    "name": "vote_",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5659,
                                    "src": "11733:5:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                                      "typeString": "struct Voting.Vote storage pointer"
                                    }
                                  },
                                  "id": 5703,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nay",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5002,
                                  "src": "11733:9:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 5704,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11664,
                                "src": "11733:13:8",
                                "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": 5706,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11733:25:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11721:37:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5708,
                          "nodeType": "ExpressionStatement",
                          "src": "11721:37:8"
                        }
                      ]
                    }
                  },
                  "id": 5711,
                  "nodeType": "IfStatement",
                  "src": "11581:188:8",
                  "trueBody": {
                    "id": 5694,
                    "nodeType": "Block",
                    "src": "11610:62:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5684,
                              "name": "vote_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5659,
                              "src": "11624:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                                "typeString": "struct Voting.Vote storage pointer"
                              }
                            },
                            "id": 5686,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "yea",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5000,
                            "src": "11624:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5690,
                                "name": "voterStake",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5665,
                                "src": "11650:10:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5687,
                                  "name": "vote_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5659,
                                  "src": "11636:5:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                                    "typeString": "struct Voting.Vote storage pointer"
                                  }
                                },
                                "id": 5688,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "yea",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5000,
                                "src": "11636:9:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5689,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11664,
                              "src": "11636:13:8",
                              "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": 5691,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11636:25:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11624:37:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5693,
                        "nodeType": "ExpressionStatement",
                        "src": "11624:37:8"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 5712,
                    "name": "_supports",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5651,
                    "src": "11783:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 5734,
                    "nodeType": "Block",
                    "src": "11862:62:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5732,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5724,
                              "name": "vote_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5659,
                              "src": "11876:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                                "typeString": "struct Voting.Vote storage pointer"
                              }
                            },
                            "id": 5726,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "nay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5002,
                            "src": "11876:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5730,
                                "name": "voterStake",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5665,
                                "src": "11902:10:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5727,
                                  "name": "vote_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5659,
                                  "src": "11888:5:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                                    "typeString": "struct Voting.Vote storage pointer"
                                  }
                                },
                                "id": 5728,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "nay",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5002,
                                "src": "11888:9:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5729,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11689,
                              "src": "11888:13:8",
                              "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": 5731,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11888:25:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11876:37:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5733,
                        "nodeType": "ExpressionStatement",
                        "src": "11876:37:8"
                      }
                    ]
                  },
                  "id": 5735,
                  "nodeType": "IfStatement",
                  "src": "11779:145:8",
                  "trueBody": {
                    "id": 5723,
                    "nodeType": "Block",
                    "src": "11794:62:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5721,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5713,
                              "name": "vote_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5659,
                              "src": "11808:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                                "typeString": "struct Voting.Vote storage pointer"
                              }
                            },
                            "id": 5715,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "yea",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5000,
                            "src": "11808:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5719,
                                "name": "voterStake",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5665,
                                "src": "11834:10:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5716,
                                  "name": "vote_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5659,
                                  "src": "11820:5:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                                    "typeString": "struct Voting.Vote storage pointer"
                                  }
                                },
                                "id": 5717,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "yea",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5000,
                                "src": "11820:9:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11689,
                              "src": "11820:13:8",
                              "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": 5720,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11820:25:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11808:37:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5722,
                        "nodeType": "ExpressionStatement",
                        "src": "11808:37:8"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5747,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5736,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5659,
                          "src": "11934:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 5739,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "voters",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5010,
                        "src": "11934:12:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_enum$_VoterState_$4988_$",
                          "typeString": "mapping(address => enum Voting.VoterState)"
                        }
                      },
                      "id": 5740,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5738,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5653,
                        "src": "11947:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11934:20:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_VoterState_$4988",
                        "typeString": "enum Voting.VoterState"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "condition": {
                        "argumentTypes": null,
                        "id": 5741,
                        "name": "_supports",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5651,
                        "src": "11957:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5744,
                          "name": "VoterState",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4988,
                          "src": "11986:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_VoterState_$4988_$",
                            "typeString": "type(enum Voting.VoterState)"
                          }
                        },
                        "id": 5745,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "Nay",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11986:14:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_VoterState_$4988",
                          "typeString": "enum Voting.VoterState"
                        }
                      },
                      "id": 5746,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "Conditional",
                      "src": "11957:43:8",
                      "trueExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5742,
                          "name": "VoterState",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4988,
                          "src": "11969:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_VoterState_$4988_$",
                            "typeString": "type(enum Voting.VoterState)"
                          }
                        },
                        "id": 5743,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "Yea",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11969:14:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_VoterState_$4988",
                          "typeString": "enum Voting.VoterState"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_VoterState_$4988",
                        "typeString": "enum Voting.VoterState"
                      }
                    },
                    "src": "11934:66:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_VoterState_$4988",
                      "typeString": "enum Voting.VoterState"
                    }
                  },
                  "id": 5748,
                  "nodeType": "ExpressionStatement",
                  "src": "11934:66:8"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5750,
                        "name": "_voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5649,
                        "src": "12025:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5751,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5653,
                        "src": "12034:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5752,
                        "name": "_supports",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5651,
                        "src": "12042:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5753,
                        "name": "voterStake",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5665,
                        "src": "12053:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5749,
                      "name": "CastVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5043,
                      "src": "12016:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_bool_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,address,bool,uint256)"
                      }
                    },
                    "id": 5754,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12016:48:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5755,
                  "nodeType": "EmitStatement",
                  "src": "12011:53:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 5760,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5756,
                      "name": "_executesIfDecided",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5655,
                      "src": "12079:18:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5758,
                          "name": "_voteId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5649,
                          "src": "12112:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 5757,
                        "name": "canExecute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5437,
                        "src": "12101:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (uint256) view returns (bool)"
                        }
                      },
                      "id": 5759,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12101:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "12079:41:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5766,
                  "nodeType": "IfStatement",
                  "src": "12075:93:8",
                  "trueBody": {
                    "id": 5765,
                    "nodeType": "Block",
                    "src": "12122:46:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5762,
                              "name": "_voteId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5649,
                              "src": "12149:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5761,
                            "name": "_executeVote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5808,
                            "src": "12136:12:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 5763,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12136:21:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5764,
                        "nodeType": "ExpressionStatement",
                        "src": "12136:21:8"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 5768,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_vote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5656,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5649,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5768,
                  "src": "11134:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5648,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11134:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5651,
                  "name": "_supports",
                  "nodeType": "VariableDeclaration",
                  "scope": 5768,
                  "src": "11159:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5650,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11159:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5653,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 5768,
                  "src": "11183:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5652,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11183:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5655,
                  "name": "_executesIfDecided",
                  "nodeType": "VariableDeclaration",
                  "scope": 5768,
                  "src": "11207:23:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5654,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11207:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11124:112:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5657,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11250:0:8"
            },
            "scope": 5862,
            "src": "11110:1064:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5807,
              "nodeType": "Block",
              "src": "12228:274:8",
              "statements": [
                {
                  "assignments": [
                    5774
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5774,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 5808,
                      "src": "12238:18:8",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5773,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5011,
                        "src": "12238:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5778,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 5775,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5023,
                      "src": "12259:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$5011_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 5777,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5776,
                      "name": "_voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5770,
                      "src": "12265:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "12259:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$5011_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12238:35:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5783,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5779,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5774,
                        "src": "12284:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5781,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "executed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4990,
                      "src": "12284:14:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 5782,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12301:4:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "12284:21:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5784,
                  "nodeType": "ExpressionStatement",
                  "src": "12284:21:8"
                },
                {
                  "assignments": [
                    5786
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5786,
                      "name": "input",
                      "nodeType": "VariableDeclaration",
                      "scope": 5808,
                      "src": "12316:18:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 5785,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "12316:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5791,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 5789,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12347:1:8",
                        "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": 5788,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "12337:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 5787,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "12341:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 5790,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12337:12:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12316:33:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5793,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5774,
                          "src": "12412:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 5794,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "executionScript",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5006,
                        "src": "12412:21:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5795,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5786,
                        "src": "12435:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5799,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12456:1:8",
                            "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": 5798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "12442:13:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                            "typeString": "function (uint256) pure returns (address[] memory)"
                          },
                          "typeName": {
                            "baseType": {
                              "id": 5796,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "12446:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 5797,
                            "length": null,
                            "nodeType": "ArrayTypeName",
                            "src": "12446:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                              "typeString": "address[]"
                            }
                          }
                        },
                        "id": 5800,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12442:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory",
                          "typeString": "address[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory",
                          "typeString": "address[] memory"
                        }
                      ],
                      "id": 5792,
                      "name": "runScript",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9432,
                      "src": "12402:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,bytes memory,address[] memory) returns (bytes memory)"
                      }
                    },
                    "id": 5801,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12402:57:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 5802,
                  "nodeType": "ExpressionStatement",
                  "src": "12402:57:8"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5804,
                        "name": "_voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5770,
                        "src": "12487:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5803,
                      "name": "ExecuteVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5047,
                      "src": "12475:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 5805,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12475:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5806,
                  "nodeType": "EmitStatement",
                  "src": "12470:25:8"
                }
              ]
            },
            "documentation": null,
            "id": 5808,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_executeVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5771,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5770,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5808,
                  "src": "12202:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5769,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12202:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12201:17:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5772,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12228:0:8"
            },
            "scope": 5862,
            "src": "12180:322:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5828,
              "nodeType": "Block",
              "src": "12578:91:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 5826,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "id": 5822,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5815,
                          "name": "getTimestamp64",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8868,
                          "src": "12595:14:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                            "typeString": "function () view returns (uint64)"
                          }
                        },
                        "id": 5816,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12595:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5820,
                            "name": "voteTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5019,
                            "src": "12634:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5817,
                              "name": "vote_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5810,
                              "src": "12614:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                                "typeString": "struct Voting.Vote storage pointer"
                              }
                            },
                            "id": 5818,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "startDate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4992,
                            "src": "12614:15:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "id": 5819,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11831,
                          "src": "12614:19:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint64_$_t_uint64_$returns$_t_uint64_$bound_to$_t_uint64_$",
                            "typeString": "function (uint64,uint64) pure returns (uint64)"
                          }
                        },
                        "id": 5821,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12614:29:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "src": "12595:48:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 5825,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "12647:15:8",
                      "subExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5823,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5810,
                          "src": "12648:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 5824,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "executed",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4990,
                        "src": "12648:14:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "12595:67:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5814,
                  "id": 5827,
                  "nodeType": "Return",
                  "src": "12588:74:8"
                }
              ]
            },
            "documentation": null,
            "id": 5829,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_isVoteOpen",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5811,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5810,
                  "name": "vote_",
                  "nodeType": "VariableDeclaration",
                  "scope": 5829,
                  "src": "12529:18:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                    "typeString": "struct Voting.Vote"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5809,
                    "name": "Vote",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5011,
                    "src": "12529:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                      "typeString": "struct Voting.Vote"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12528:20:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5814,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5813,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5829,
                  "src": "12572:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5812,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12572:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12571:6:8"
            },
            "scope": 5862,
            "src": "12508:161:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5860,
              "nodeType": "Block",
              "src": "12870:167:8",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5842,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5840,
                      "name": "_total",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5833,
                      "src": "12884:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 5841,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12894:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "12884:11:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5846,
                  "nodeType": "IfStatement",
                  "src": "12880:54:8",
                  "trueBody": {
                    "id": 5845,
                    "nodeType": "Block",
                    "src": "12897:37:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 5843,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12918:5:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 5839,
                        "id": 5844,
                        "nodeType": "Return",
                        "src": "12911:12:8"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    5848
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5848,
                      "name": "computedPct",
                      "nodeType": "VariableDeclaration",
                      "scope": 5861,
                      "src": "12944:19:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5847,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12944:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5855,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5854,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5851,
                          "name": "PCT_BASE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4954,
                          "src": "12977:8:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5849,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5831,
                          "src": "12966:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5850,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "mul",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11614,
                        "src": "12966:10:8",
                        "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": 5852,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12966:20:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 5853,
                      "name": "_total",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5833,
                      "src": "12989:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12966:29:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12944:51:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5858,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5856,
                      "name": "computedPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5848,
                      "src": "13012:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 5857,
                      "name": "_pct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5835,
                      "src": "13026:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13012:18:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5839,
                  "id": 5859,
                  "nodeType": "Return",
                  "src": "13005:25:8"
                }
              ]
            },
            "documentation": "@dev Calculates whether `_value` is more than a percentage `_pct` of `_total`",
            "id": 5861,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_isValuePct",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5836,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5831,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 5861,
                  "src": "12795:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5830,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12795:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5833,
                  "name": "_total",
                  "nodeType": "VariableDeclaration",
                  "scope": 5861,
                  "src": "12811:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5832,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12811:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5835,
                  "name": "_pct",
                  "nodeType": "VariableDeclaration",
                  "scope": 5861,
                  "src": "12827:12:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5834,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12827:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12794:46:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5839,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5838,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5861,
                  "src": "12864:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5837,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12864:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12863:6:8"
            },
            "scope": 5862,
            "src": "12774:263:8",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 5863,
        "src": "360:12679:8"
      }
    ],
    "src": "57:12983:8"
  },
  "legacyAST": {
    "absolutePath": "@aragon/apps-voting/contracts/Voting.sol",
    "exportedSymbols": {
      "Voting": [
        5862
      ]
    },
    "id": 5863,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4919,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "57:23:8"
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
        "file": "@aragon/os/contracts/apps/AragonApp.sol",
        "id": 4920,
        "nodeType": "ImportDirective",
        "scope": 5863,
        "sourceUnit": 8476,
        "src": "82:49:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/IForwarder.sol",
        "file": "@aragon/os/contracts/common/IForwarder.sol",
        "id": 4921,
        "nodeType": "ImportDirective",
        "scope": 5863,
        "sourceUnit": 8644,
        "src": "132:52:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/math/SafeMath.sol",
        "file": "@aragon/os/contracts/lib/math/SafeMath.sol",
        "id": 4922,
        "nodeType": "ImportDirective",
        "scope": 5863,
        "sourceUnit": 11712,
        "src": "186:52:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/math/SafeMath64.sol",
        "file": "@aragon/os/contracts/lib/math/SafeMath64.sol",
        "id": 4923,
        "nodeType": "ImportDirective",
        "scope": 5863,
        "sourceUnit": 11854,
        "src": "239:54:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/apps-shared-minime/contracts/MiniMeToken.sol",
        "file": "@aragon/apps-shared-minime/contracts/MiniMeToken.sol",
        "id": 4924,
        "nodeType": "ImportDirective",
        "scope": 5863,
        "sourceUnit": 3785,
        "src": "295:62:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4925,
              "name": "IForwarder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8643,
              "src": "379:10:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IForwarder_$8643",
                "typeString": "contract IForwarder"
              }
            },
            "id": 4926,
            "nodeType": "InheritanceSpecifier",
            "src": "379:10:8"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4927,
              "name": "AragonApp",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8475,
              "src": "391:9:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AragonApp_$8475",
                "typeString": "contract AragonApp"
              }
            },
            "id": 4928,
            "nodeType": "InheritanceSpecifier",
            "src": "391:9:8"
          }
        ],
        "contractDependencies": [
          7585,
          8347,
          8475,
          8488,
          8621,
          8643,
          8663,
          8761,
          8789,
          8822,
          8869,
          9066,
          9476,
          9503,
          10769
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 5862,
        "linearizedBaseContracts": [
          5862,
          8475,
          7585,
          9476,
          10769,
          9503,
          9066,
          8789,
          8621,
          8663,
          8488,
          8822,
          8761,
          8869,
          8347,
          8643
        ],
        "name": "Voting",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 4931,
            "libraryName": {
              "contractScope": null,
              "id": 4929,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11711,
              "src": "413:8:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$11711",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "407:27:8",
            "typeName": {
              "id": 4930,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "426:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 4934,
            "libraryName": {
              "contractScope": null,
              "id": 4932,
              "name": "SafeMath64",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11853,
              "src": "445:10:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath64_$11853",
                "typeString": "library SafeMath64"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "439:28:8",
            "typeName": {
              "id": 4933,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "460:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            }
          },
          {
            "constant": true,
            "id": 4939,
            "name": "CREATE_VOTES_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "473:74:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 4935,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "473:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "4352454154455f564f5445535f524f4c45",
                  "id": 4937,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "527:19:8",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_e7dcd7275292e064d090fbc5f3bd7995be23b502c1fed5cd94cfddbbdcd32bbc",
                    "typeString": "literal_string \"CREATE_VOTES_ROLE\""
                  },
                  "value": "CREATE_VOTES_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_e7dcd7275292e064d090fbc5f3bd7995be23b502c1fed5cd94cfddbbdcd32bbc",
                    "typeString": "literal_string \"CREATE_VOTES_ROLE\""
                  }
                ],
                "id": 4936,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 12664,
                "src": "517:9:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 4938,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "517:30:8",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 4944,
            "name": "MODIFY_SUPPORT_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "553:78:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 4940,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "553:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "4d4f444946595f535550504f52545f524f4c45",
                  "id": 4942,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "609:21:8",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_da3972983e62bdf826c4b807c4c9c2b8a941e1f83dfa76d53d6aeac11e1be650",
                    "typeString": "literal_string \"MODIFY_SUPPORT_ROLE\""
                  },
                  "value": "MODIFY_SUPPORT_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_da3972983e62bdf826c4b807c4c9c2b8a941e1f83dfa76d53d6aeac11e1be650",
                    "typeString": "literal_string \"MODIFY_SUPPORT_ROLE\""
                  }
                ],
                "id": 4941,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 12664,
                "src": "599:9:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 4943,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "599:32:8",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 4949,
            "name": "MODIFY_QUORUM_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "637:76:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 4945,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "637:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "4d4f444946595f51554f52554d5f524f4c45",
                  "id": 4947,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "692:20:8",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_ad15e7261800b4bb73f1b69d3864565ffb1fd00cb93cf14fe48da8f1f2149f39",
                    "typeString": "literal_string \"MODIFY_QUORUM_ROLE\""
                  },
                  "value": "MODIFY_QUORUM_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_ad15e7261800b4bb73f1b69d3864565ffb1fd00cb93cf14fe48da8f1f2149f39",
                    "typeString": "literal_string \"MODIFY_QUORUM_ROLE\""
                  }
                ],
                "id": 4946,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 12664,
                "src": "682:9:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 4948,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "682:31:8",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 4954,
            "name": "PCT_BASE",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "720:42:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 4950,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "720:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "value": {
              "argumentTypes": null,
              "commonType": {
                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000"
              },
              "id": 4953,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "argumentTypes": null,
                "hexValue": "3130",
                "id": 4951,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "754:2:8",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_10_by_1",
                  "typeString": "int_const 10"
                },
                "value": "10"
              },
              "nodeType": "BinaryOperation",
              "operator": "**",
              "rightExpression": {
                "argumentTypes": null,
                "hexValue": "3138",
                "id": 4952,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "760:2:8",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_18_by_1",
                  "typeString": "int_const 18"
                },
                "value": "18"
              },
              "src": "754:8:8",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 4957,
            "name": "ERROR_NO_VOTE",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "805:56:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 4955,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "805:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f4e4f5f564f5445",
              "id": 4956,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "845:16:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_d4e7a378565f7e8724f3afe49b49b5b53d55c8b85ecc478c539d5f3066c466ca",
                "typeString": "literal_string \"VOTING_NO_VOTE\""
              },
              "value": "VOTING_NO_VOTE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 4960,
            "name": "ERROR_INIT_PCTS",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "867:60:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 4958,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "867:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f494e49545f50435453",
              "id": 4959,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "909:18:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_6fe3353225d510c9f38bcc5cb3371a9eabd299213c6c415b56b641a75492373f",
                "typeString": "literal_string \"VOTING_INIT_PCTS\""
              },
              "value": "VOTING_INIT_PCTS"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 4963,
            "name": "ERROR_CHANGE_SUPPORT_PCTS",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "933:80:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 4961,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "933:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f4348414e47455f535550504f52545f50435453",
              "id": 4962,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "985:28:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_bbce4f9de9ad252169867334bbc95c973030be8d4534544eaa1c1893e434472b",
                "typeString": "literal_string \"VOTING_CHANGE_SUPPORT_PCTS\""
              },
              "value": "VOTING_CHANGE_SUPPORT_PCTS"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 4966,
            "name": "ERROR_CHANGE_QUORUM_PCTS",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "1019:78:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 4964,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1019:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f4348414e47455f51554f52554d5f50435453",
              "id": 4965,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1070:27:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_5779a0804ef26050aed8e7ea88d8cfab54776e2b6d5815a5484e86fbdf3b4ec6",
                "typeString": "literal_string \"VOTING_CHANGE_QUORUM_PCTS\""
              },
              "value": "VOTING_CHANGE_QUORUM_PCTS"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 4969,
            "name": "ERROR_INIT_SUPPORT_TOO_BIG",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "1103:82:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 4967,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1103:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f494e49545f535550504f52545f544f4f5f424947",
              "id": 4968,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1156:29:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a9d8ceb2f2cc9646add9d9405c6f276fc989687a807d2879d7d034c0d4141b54",
                "typeString": "literal_string \"VOTING_INIT_SUPPORT_TOO_BIG\""
              },
              "value": "VOTING_INIT_SUPPORT_TOO_BIG"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 4972,
            "name": "ERROR_CHANGE_SUPPORT_TOO_BIG",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "1191:83:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 4970,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1191:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f4348414e47455f535550505f544f4f5f424947",
              "id": 4971,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1246:28:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a988aaf15f02d48924f860af070bbe949ae7d371d3f97038169697e9a200fc4d",
                "typeString": "literal_string \"VOTING_CHANGE_SUPP_TOO_BIG\""
              },
              "value": "VOTING_CHANGE_SUPP_TOO_BIG"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 4975,
            "name": "ERROR_CAN_NOT_VOTE",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "1280:66:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 4973,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1280:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f43414e5f4e4f545f564f5445",
              "id": 4974,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1325:21:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_d15ecba3c2de6be04ae931794f9dbe722fd5f34858b1288ba9910becaae808d3",
                "typeString": "literal_string \"VOTING_CAN_NOT_VOTE\""
              },
              "value": "VOTING_CAN_NOT_VOTE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 4978,
            "name": "ERROR_CAN_NOT_EXECUTE",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "1352:72:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 4976,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1352:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f43414e5f4e4f545f45584543555445",
              "id": 4977,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1400:24:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a71d666a1ee845f244a2074cc2a52f257c6da2ad8ed26b4f88ad787af060b34c",
                "typeString": "literal_string \"VOTING_CAN_NOT_EXECUTE\""
              },
              "value": "VOTING_CAN_NOT_EXECUTE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 4981,
            "name": "ERROR_CAN_NOT_FORWARD",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "1430:72:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 4979,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1430:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f43414e5f4e4f545f464f5257415244",
              "id": 4980,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1478:24:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_43bc53280d1b3f609b6645415cebcf10834d13c5f6dbdfe2aa9d66ed459b806a",
                "typeString": "literal_string \"VOTING_CAN_NOT_FORWARD\""
              },
              "value": "VOTING_CAN_NOT_FORWARD"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 4984,
            "name": "ERROR_NO_VOTING_POWER",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "1508:72:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 4982,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1508:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "564f54494e475f4e4f5f564f54494e475f504f574552",
              "id": 4983,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1556:24:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_57804431f2c60d894b28e15e405d13c19f770b55e55030aa1c36d64decde578f",
                "typeString": "literal_string \"VOTING_NO_VOTING_POWER\""
              },
              "value": "VOTING_NO_VOTING_POWER"
            },
            "visibility": "private"
          },
          {
            "canonicalName": "Voting.VoterState",
            "id": 4988,
            "members": [
              {
                "id": 4985,
                "name": "Absent",
                "nodeType": "EnumValue",
                "src": "1605:6:8"
              },
              {
                "id": 4986,
                "name": "Yea",
                "nodeType": "EnumValue",
                "src": "1613:3:8"
              },
              {
                "id": 4987,
                "name": "Nay",
                "nodeType": "EnumValue",
                "src": "1618:3:8"
              }
            ],
            "name": "VoterState",
            "nodeType": "EnumDefinition",
            "src": "1587:36:8"
          },
          {
            "canonicalName": "Voting.Vote",
            "id": 5011,
            "members": [
              {
                "constant": false,
                "id": 4990,
                "name": "executed",
                "nodeType": "VariableDeclaration",
                "scope": 5011,
                "src": "1651:13:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 4989,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1651:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 4992,
                "name": "startDate",
                "nodeType": "VariableDeclaration",
                "scope": 5011,
                "src": "1674:16:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 4991,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "1674:6:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 4994,
                "name": "snapshotBlock",
                "nodeType": "VariableDeclaration",
                "scope": 5011,
                "src": "1700:20:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 4993,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "1700:6:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 4996,
                "name": "supportRequiredPct",
                "nodeType": "VariableDeclaration",
                "scope": 5011,
                "src": "1730:25:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 4995,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "1730:6:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 4998,
                "name": "minAcceptQuorumPct",
                "nodeType": "VariableDeclaration",
                "scope": 5011,
                "src": "1765:25:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 4997,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "1765:6:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5000,
                "name": "yea",
                "nodeType": "VariableDeclaration",
                "scope": 5011,
                "src": "1800:11:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 4999,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1800:7:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5002,
                "name": "nay",
                "nodeType": "VariableDeclaration",
                "scope": 5011,
                "src": "1821:11:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5001,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1821:7:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5004,
                "name": "votingPower",
                "nodeType": "VariableDeclaration",
                "scope": 5011,
                "src": "1842:19:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5003,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1842:7:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5006,
                "name": "executionScript",
                "nodeType": "VariableDeclaration",
                "scope": 5011,
                "src": "1871:21:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 5005,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "1871:5:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5010,
                "name": "voters",
                "nodeType": "VariableDeclaration",
                "scope": 5011,
                "src": "1902:38:8",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_enum$_VoterState_$4988_$",
                  "typeString": "mapping(address => enum Voting.VoterState)"
                },
                "typeName": {
                  "id": 5009,
                  "keyType": {
                    "id": 5007,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1911:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1902:31:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_enum$_VoterState_$4988_$",
                    "typeString": "mapping(address => enum Voting.VoterState)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 5008,
                    "name": "VoterState",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4988,
                    "src": "1922:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_VoterState_$4988",
                      "typeString": "enum Voting.VoterState"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Vote",
            "nodeType": "StructDefinition",
            "scope": 5862,
            "src": "1629:318:8",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5013,
            "name": "token",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "1953:24:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_MiniMeToken_$3743",
              "typeString": "contract MiniMeToken"
            },
            "typeName": {
              "contractScope": null,
              "id": 5012,
              "name": "MiniMeToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3743,
              "src": "1953:11:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MiniMeToken_$3743",
                "typeString": "contract MiniMeToken"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5015,
            "name": "supportRequiredPct",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "1983:32:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 5014,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "1983:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5017,
            "name": "minAcceptQuorumPct",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "2021:32:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 5016,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "2021:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5019,
            "name": "voteTime",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "2059:22:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 5018,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "2059:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 5023,
            "name": "votes",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "2180:40:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$5011_storage_$",
              "typeString": "mapping(uint256 => struct Voting.Vote)"
            },
            "typeName": {
              "id": 5022,
              "keyType": {
                "id": 5020,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2189:7:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "2180:25:8",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$5011_storage_$",
                "typeString": "mapping(uint256 => struct Voting.Vote)"
              },
              "valueType": {
                "contractScope": null,
                "id": 5021,
                "name": "Vote",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 5011,
                "src": "2200:4:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                  "typeString": "struct Voting.Vote"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 5025,
            "name": "votesLength",
            "nodeType": "VariableDeclaration",
            "scope": 5862,
            "src": "2226:26:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 5024,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "2226:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5033,
            "name": "StartVote",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5032,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5027,
                  "indexed": true,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5033,
                  "src": "2275:22:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5026,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2275:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5029,
                  "indexed": true,
                  "name": "creator",
                  "nodeType": "VariableDeclaration",
                  "scope": 5033,
                  "src": "2299:23:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5028,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2299:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5031,
                  "indexed": false,
                  "name": "metadata",
                  "nodeType": "VariableDeclaration",
                  "scope": 5033,
                  "src": "2324:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5030,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2324:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2274:66:8"
            },
            "src": "2259:82:8"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5043,
            "name": "CastVote",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5042,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5035,
                  "indexed": true,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5043,
                  "src": "2361:22:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5034,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2361:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5037,
                  "indexed": true,
                  "name": "voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 5043,
                  "src": "2385:21:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5036,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2385:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5039,
                  "indexed": false,
                  "name": "supports",
                  "nodeType": "VariableDeclaration",
                  "scope": 5043,
                  "src": "2408:13:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5038,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2408:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5041,
                  "indexed": false,
                  "name": "stake",
                  "nodeType": "VariableDeclaration",
                  "scope": 5043,
                  "src": "2423:13:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5040,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2423:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2360:77:8"
            },
            "src": "2346:92:8"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5047,
            "name": "ExecuteVote",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5046,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5045,
                  "indexed": true,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5047,
                  "src": "2461:22:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5044,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2461:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2460:24:8"
            },
            "src": "2443:42:8"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5051,
            "name": "ChangeSupportRequired",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5050,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5049,
                  "indexed": false,
                  "name": "supportRequiredPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 5051,
                  "src": "2518:25:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5048,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "2518:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2517:27:8"
            },
            "src": "2490:55:8"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 5055,
            "name": "ChangeMinQuorum",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5054,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5053,
                  "indexed": false,
                  "name": "minAcceptQuorumPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 5055,
                  "src": "2572:25:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5052,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "2572:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2571:27:8"
            },
            "src": "2550:49:8"
          },
          {
            "body": {
              "id": 5067,
              "nodeType": "Block",
              "src": "2642:73:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5062,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5060,
                          "name": "_voteId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5057,
                          "src": "2660:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5061,
                          "name": "votesLength",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5025,
                          "src": "2670:11:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2660:21:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5063,
                        "name": "ERROR_NO_VOTE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4957,
                        "src": "2683:13:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5059,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "2652:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5064,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2652:45:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5065,
                  "nodeType": "ExpressionStatement",
                  "src": "2652:45:8"
                },
                {
                  "id": 5066,
                  "nodeType": "PlaceholderStatement",
                  "src": "2707:1:8"
                }
              ]
            },
            "documentation": null,
            "id": 5068,
            "name": "voteExists",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 5058,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5057,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5068,
                  "src": "2625:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5056,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2625:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2624:17:8"
            },
            "src": "2605:110:8",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5114,
              "nodeType": "Block",
              "src": "3734:341:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 5081,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8746,
                      "src": "3744:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 5082,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3744:13:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5083,
                  "nodeType": "ExpressionStatement",
                  "src": "3744:13:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 5087,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5085,
                          "name": "_minAcceptQuorumPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5074,
                          "src": "3776:19:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5086,
                          "name": "_supportRequiredPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5072,
                          "src": "3799:19:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "3776:42:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5088,
                        "name": "ERROR_INIT_PCTS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4960,
                        "src": "3820:15:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5084,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "3768:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5089,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3768:68:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5090,
                  "nodeType": "ExpressionStatement",
                  "src": "3768:68:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 5094,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5092,
                          "name": "_supportRequiredPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5072,
                          "src": "3854:19:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5093,
                          "name": "PCT_BASE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4954,
                          "src": "3876:8:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "3854:30:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5095,
                        "name": "ERROR_INIT_SUPPORT_TOO_BIG",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4969,
                        "src": "3886:26:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5091,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "3846:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5096,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3846:67:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5097,
                  "nodeType": "ExpressionStatement",
                  "src": "3846:67:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5100,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5098,
                      "name": "token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5013,
                      "src": "3924:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$3743",
                        "typeString": "contract MiniMeToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5099,
                      "name": "_token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5070,
                      "src": "3932:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MiniMeToken_$3743",
                        "typeString": "contract MiniMeToken"
                      }
                    },
                    "src": "3924:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$3743",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "id": 5101,
                  "nodeType": "ExpressionStatement",
                  "src": "3924:14:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5104,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5102,
                      "name": "supportRequiredPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5015,
                      "src": "3948:18:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5103,
                      "name": "_supportRequiredPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5072,
                      "src": "3969:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "3948:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5105,
                  "nodeType": "ExpressionStatement",
                  "src": "3948:40:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5106,
                      "name": "minAcceptQuorumPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5017,
                      "src": "3998:18:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5107,
                      "name": "_minAcceptQuorumPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5074,
                      "src": "4019:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "3998:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5109,
                  "nodeType": "ExpressionStatement",
                  "src": "3998:40:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5112,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5110,
                      "name": "voteTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5019,
                      "src": "4048:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5111,
                      "name": "_voteTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5076,
                      "src": "4059:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "4048:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5113,
                  "nodeType": "ExpressionStatement",
                  "src": "4048:20:8"
                }
              ]
            },
            "documentation": "@notice Initialize Voting app with `_token.symbol(): string` for governance, minimum support of `@formatPct(_supportRequiredPct)`%, minimum acceptance quorum of `@formatPct(_minAcceptQuorumPct)`%, and a voting duration of `@transformTime(_voteTime)`\n@param _token MiniMeToken Address that will be used as governance token\n@param _supportRequiredPct Percentage of yeas in casted votes for a vote to succeed (expressed as a percentage of 10^18; eg. 10^16 = 1%, 10^18 = 100%)\n@param _minAcceptQuorumPct Percentage of yeas in total possible votes for a vote to succeed (expressed as a percentage of 10^18; eg. 10^16 = 1%, 10^18 = 100%)\n@param _voteTime Seconds that a vote will be open for token holders to vote (unless enough yeas or nays have been cast to make an early decision)",
            "id": 5115,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 5079,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5078,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8693,
                  "src": "3721:8:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3721:8:8"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5077,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5070,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 5115,
                  "src": "3573:18:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MiniMeToken_$3743",
                    "typeString": "contract MiniMeToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5069,
                    "name": "MiniMeToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3743,
                    "src": "3573:11:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MiniMeToken_$3743",
                      "typeString": "contract MiniMeToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5072,
                  "name": "_supportRequiredPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 5115,
                  "src": "3601:26:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5071,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "3601:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5074,
                  "name": "_minAcceptQuorumPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 5115,
                  "src": "3637:26:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5073,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "3637:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5076,
                  "name": "_voteTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 5115,
                  "src": "3673:16:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5075,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "3673:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3563:132:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5080,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3734:0:8"
            },
            "scope": 5862,
            "src": "3544:531:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5153,
              "nodeType": "Block",
              "src": "4408:281:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 5134,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5132,
                          "name": "minAcceptQuorumPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5017,
                          "src": "4426:18:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5133,
                          "name": "_supportRequiredPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5117,
                          "src": "4448:19:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "4426:41:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5135,
                        "name": "ERROR_CHANGE_SUPPORT_PCTS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4963,
                        "src": "4469:25:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5131,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "4418:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5136,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4418:77:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5137,
                  "nodeType": "ExpressionStatement",
                  "src": "4418:77:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 5141,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5139,
                          "name": "_supportRequiredPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5117,
                          "src": "4513:19:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5140,
                          "name": "PCT_BASE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4954,
                          "src": "4535:8:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "4513:30:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5142,
                        "name": "ERROR_CHANGE_SUPPORT_TOO_BIG",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4972,
                        "src": "4545:28:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5138,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "4505:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4505:69:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5144,
                  "nodeType": "ExpressionStatement",
                  "src": "4505:69:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5147,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5145,
                      "name": "supportRequiredPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5015,
                      "src": "4584:18:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5146,
                      "name": "_supportRequiredPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5117,
                      "src": "4605:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "4584:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5148,
                  "nodeType": "ExpressionStatement",
                  "src": "4584:40:8"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5150,
                        "name": "_supportRequiredPct",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5117,
                        "src": "4662:19:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 5149,
                      "name": "ChangeSupportRequired",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5051,
                      "src": "4640:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$",
                        "typeString": "function (uint64)"
                      }
                    },
                    "id": 5151,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4640:42:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5152,
                  "nodeType": "EmitStatement",
                  "src": "4635:47:8"
                }
              ]
            },
            "documentation": "@notice Change required support to `@formatPct(_supportRequiredPct)`%\n@param _supportRequiredPct New required support",
            "id": 5154,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5120,
                    "name": "MODIFY_SUPPORT_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4944,
                    "src": "4319:19:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5123,
                            "name": "_supportRequiredPct",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5117,
                            "src": "4352:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 5122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4344:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 5124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4344:28:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5126,
                            "name": "supportRequiredPct",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5015,
                            "src": "4382:18:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 5125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4374:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 5127,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4374:27:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5121,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7175,
                        7190,
                        7210,
                        7225,
                        7245,
                        7266,
                        7290,
                        7310,
                        7339,
                        7364,
                        7389,
                        7412,
                        7443,
                        7482,
                        7529,
                        7584
                      ],
                      "referencedDeclaration": 7443,
                      "src": "4340:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 5128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4340:62:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 5129,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5119,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8406,
                  "src": "4313:5:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4313:90:8"
              }
            ],
            "name": "changeSupportRequiredPct",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5118,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5117,
                  "name": "_supportRequiredPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 5154,
                  "src": "4260:26:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5116,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "4260:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4259:28:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5130,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4408:0:8"
            },
            "scope": 5862,
            "src": "4226:463:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5185,
              "nodeType": "Block",
              "src": "5031:195:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 5173,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5171,
                          "name": "_minAcceptQuorumPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5156,
                          "src": "5049:19:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5172,
                          "name": "supportRequiredPct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5015,
                          "src": "5072:18:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "5049:41:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5174,
                        "name": "ERROR_CHANGE_QUORUM_PCTS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4966,
                        "src": "5092:24:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5170,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "5041:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5175,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5041:76:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5176,
                  "nodeType": "ExpressionStatement",
                  "src": "5041:76:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5179,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5177,
                      "name": "minAcceptQuorumPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5017,
                      "src": "5127:18:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5178,
                      "name": "_minAcceptQuorumPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5156,
                      "src": "5148:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "5127:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5180,
                  "nodeType": "ExpressionStatement",
                  "src": "5127:40:8"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5182,
                        "name": "_minAcceptQuorumPct",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5156,
                        "src": "5199:19:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 5181,
                      "name": "ChangeMinQuorum",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5055,
                      "src": "5183:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$",
                        "typeString": "function (uint64)"
                      }
                    },
                    "id": 5183,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5183:36:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5184,
                  "nodeType": "EmitStatement",
                  "src": "5178:41:8"
                }
              ]
            },
            "documentation": "@notice Change minimum acceptance quorum to `@formatPct(_minAcceptQuorumPct)`%\n@param _minAcceptQuorumPct New acceptance quorum",
            "id": 5186,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5159,
                    "name": "MODIFY_QUORUM_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4949,
                    "src": "4943:18:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5162,
                            "name": "_minAcceptQuorumPct",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5156,
                            "src": "4975:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 5161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4967:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 5163,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4967:28:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5165,
                            "name": "minAcceptQuorumPct",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5017,
                            "src": "5005:18:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 5164,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4997:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 5166,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4997:27:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5160,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        7175,
                        7190,
                        7210,
                        7225,
                        7245,
                        7266,
                        7290,
                        7310,
                        7339,
                        7364,
                        7389,
                        7412,
                        7443,
                        7482,
                        7529,
                        7584
                      ],
                      "referencedDeclaration": 7443,
                      "src": "4963:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 5167,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4963:62:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 5168,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5158,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8406,
                  "src": "4937:5:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4937:89:8"
              }
            ],
            "name": "changeMinAcceptQuorumPct",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5157,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5156,
                  "name": "_minAcceptQuorumPct",
                  "nodeType": "VariableDeclaration",
                  "scope": 5186,
                  "src": "4884:26:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5155,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "4884:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4883:28:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5169,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5031:0:8"
            },
            "scope": 5862,
            "src": "4850:376:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5205,
              "nodeType": "Block",
              "src": "5568:73:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5199,
                        "name": "_executionScript",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5188,
                        "src": "5594:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5200,
                        "name": "_metadata",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5190,
                        "src": "5612:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 5201,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5623:4:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 5202,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5629:4:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5198,
                      "name": "_newVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5647,
                      "src": "5585:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_bool_$_t_bool_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,string memory,bool,bool) returns (uint256)"
                      }
                    },
                    "id": 5203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5585:49:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5197,
                  "id": 5204,
                  "nodeType": "Return",
                  "src": "5578:56:8"
                }
              ]
            },
            "documentation": "@notice Create a new vote about \"`_metadata`\"\n@param _executionScript EVM script to be executed on approval\n@param _metadata Vote metadata\n@return voteId Id for newly created vote",
            "id": 5206,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5193,
                    "name": "CREATE_VOTES_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4939,
                    "src": "5524:17:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 5194,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5192,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8387,
                  "src": "5519:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5519:23:8"
              }
            ],
            "name": "newVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5191,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5188,
                  "name": "_executionScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 5206,
                  "src": "5468:22:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5187,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5468:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5190,
                  "name": "_metadata",
                  "nodeType": "VariableDeclaration",
                  "scope": 5206,
                  "src": "5492:16:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5189,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5492:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5467:42:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5197,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5196,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5206,
                  "src": "5552:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5195,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5552:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5551:16:8"
            },
            "scope": 5862,
            "src": "5451:190:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5229,
              "nodeType": "Block",
              "src": "6213:92:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5223,
                        "name": "_executionScript",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5208,
                        "src": "6239:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5224,
                        "name": "_metadata",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5210,
                        "src": "6257:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5225,
                        "name": "_castVote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5212,
                        "src": "6268:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5226,
                        "name": "_executesIfDecided",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5214,
                        "src": "6279:18:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5222,
                      "name": "_newVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5647,
                      "src": "6230:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_bool_$_t_bool_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,string memory,bool,bool) returns (uint256)"
                      }
                    },
                    "id": 5227,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6230:68:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5221,
                  "id": 5228,
                  "nodeType": "Return",
                  "src": "6223:75:8"
                }
              ]
            },
            "documentation": "@notice Create a new vote about \"`_metadata`\"\n@param _executionScript EVM script to be executed on approval\n@param _metadata Vote metadata\n@param _castVote Whether to also cast newly created vote\n@param _executesIfDecided Whether to also immediately execute newly created vote if decided\n@return voteId id for newly created vote",
            "id": 5230,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5217,
                    "name": "CREATE_VOTES_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4939,
                    "src": "6157:17:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 5218,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5216,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8387,
                  "src": "6152:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6152:23:8"
              }
            ],
            "name": "newVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5215,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5208,
                  "name": "_executionScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 5230,
                  "src": "6044:22:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5207,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6044:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5210,
                  "name": "_metadata",
                  "nodeType": "VariableDeclaration",
                  "scope": 5230,
                  "src": "6068:16:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5209,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6068:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5212,
                  "name": "_castVote",
                  "nodeType": "VariableDeclaration",
                  "scope": 5230,
                  "src": "6086:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5211,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6086:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5214,
                  "name": "_executesIfDecided",
                  "nodeType": "VariableDeclaration",
                  "scope": 5230,
                  "src": "6102:23:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5213,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6102:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6043:83:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5221,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5220,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5230,
                  "src": "6193:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5219,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6193:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6192:16:8"
            },
            "scope": 5862,
            "src": "6027:278:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5259,
              "nodeType": "Block",
              "src": "6842:141:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5244,
                            "name": "_voteId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5232,
                            "src": "6868:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5245,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12670,
                              "src": "6877:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6877:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 5243,
                          "name": "canVote",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5359,
                          "src": "6860:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (uint256,address) view returns (bool)"
                          }
                        },
                        "id": 5247,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6860:28:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5248,
                        "name": "ERROR_CAN_NOT_VOTE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4975,
                        "src": "6890:18:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5242,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "6852:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5249,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6852:57:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5250,
                  "nodeType": "ExpressionStatement",
                  "src": "6852:57:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5252,
                        "name": "_voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5232,
                        "src": "6925:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5253,
                        "name": "_supports",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5234,
                        "src": "6934:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5254,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12670,
                          "src": "6945:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5255,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6945:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5256,
                        "name": "_executesIfDecided",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5236,
                        "src": "6957:18:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5251,
                      "name": "_vote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5768,
                      "src": "6919:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (uint256,bool,address,bool)"
                      }
                    },
                    "id": 5257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6919:57:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5258,
                  "nodeType": "ExpressionStatement",
                  "src": "6919:57:8"
                }
              ]
            },
            "documentation": "@notice Vote `_supports ? 'yea' : 'nay'` in vote #`_voteId`\n@dev Initialization check is implicitly provided by `voteExists()` as new votes can only be\n     created via `newVote(),` which requires initialization\n@param _voteId Id for vote\n@param _supports Whether voter supports the vote\n@param _executesIfDecided Whether the vote should execute its action if it becomes decided",
            "id": 5260,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5239,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5232,
                    "src": "6833:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 5240,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5238,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5068,
                  "src": "6822:10:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6822:19:8"
              }
            ],
            "name": "vote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5237,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5232,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5260,
                  "src": "6755:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5231,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6755:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5234,
                  "name": "_supports",
                  "nodeType": "VariableDeclaration",
                  "scope": 5260,
                  "src": "6772:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5233,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6772:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5236,
                  "name": "_executesIfDecided",
                  "nodeType": "VariableDeclaration",
                  "scope": 5260,
                  "src": "6788:23:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5235,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6788:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6754:58:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5241,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6842:0:8"
            },
            "scope": 5862,
            "src": "6741:242:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5279,
              "nodeType": "Block",
              "src": "7306:99:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5270,
                            "name": "_voteId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5262,
                            "src": "7335:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5269,
                          "name": "canExecute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5437,
                          "src": "7324:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) view returns (bool)"
                          }
                        },
                        "id": 5271,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7324:19:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5272,
                        "name": "ERROR_CAN_NOT_EXECUTE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4978,
                        "src": "7345:21:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5268,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "7316:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5273,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7316:51:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5274,
                  "nodeType": "ExpressionStatement",
                  "src": "7316:51:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5276,
                        "name": "_voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5262,
                        "src": "7390:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5275,
                      "name": "_executeVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5808,
                      "src": "7377:12:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 5277,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7377:21:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5278,
                  "nodeType": "ExpressionStatement",
                  "src": "7377:21:8"
                }
              ]
            },
            "documentation": "@notice Execute vote #`_voteId`\n@dev Initialization check is implicitly provided by `voteExists()` as new votes can only be\n     created via `newVote(),` which requires initialization\n@param _voteId Id for vote",
            "id": 5280,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5265,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5262,
                    "src": "7297:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 5266,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5264,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5068,
                  "src": "7286:10:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7286:19:8"
              }
            ],
            "name": "executeVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5263,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5262,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5280,
                  "src": "7260:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5261,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7260:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7259:17:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5267,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7306:0:8"
            },
            "scope": 5862,
            "src": "7239:166:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5287,
              "nodeType": "Block",
              "src": "7461:28:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 5285,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7478:4:8",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 5284,
                  "id": 5286,
                  "nodeType": "Return",
                  "src": "7471:11:8"
                }
              ]
            },
            "documentation": null,
            "id": 5288,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isForwarder",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5281,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7431:2:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5284,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5283,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5288,
                  "src": "7455:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5282,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7455:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7454:6:8"
            },
            "scope": 5862,
            "src": "7411:78:8",
            "stateMutability": "pure",
            "superFunction": 8628,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5309,
              "nodeType": "Block",
              "src": "7740:129:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5295,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12670,
                              "src": "7769:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5296,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7769:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5297,
                            "name": "_evmScript",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5290,
                            "src": "7781:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 5294,
                          "name": "canForward",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            5327
                          ],
                          "referencedDeclaration": 5327,
                          "src": "7758:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,bytes memory) view returns (bool)"
                          }
                        },
                        "id": 5298,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7758:34:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5299,
                        "name": "ERROR_CAN_NOT_FORWARD",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4981,
                        "src": "7794:21:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5293,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "7750:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5300,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7750:66:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5301,
                  "nodeType": "ExpressionStatement",
                  "src": "7750:66:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5303,
                        "name": "_evmScript",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5290,
                        "src": "7835:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "",
                        "id": 5304,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7847:2:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 5305,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7851:4:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 5306,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7857:4:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5302,
                      "name": "_newVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5647,
                      "src": "7826:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_bool_$_t_bool_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,string memory,bool,bool) returns (uint256)"
                      }
                    },
                    "id": 5307,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7826:36:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5308,
                  "nodeType": "ExpressionStatement",
                  "src": "7826:36:8"
                }
              ]
            },
            "documentation": "@notice Creates a vote to execute the desired action, and casts a support vote if possible\n@dev IForwarder interface conformance\n@param _evmScript Start vote with script",
            "id": 5310,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "forward",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5291,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5290,
                  "name": "_evmScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 5310,
                  "src": "7715:16:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5289,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7715:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7714:18:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5292,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7740:0:8"
            },
            "scope": 5862,
            "src": "7698:171:8",
            "stateMutability": "nonpayable",
            "superFunction": 8642,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5326,
              "nodeType": "Block",
              "src": "7946:152:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5320,
                        "name": "_sender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5312,
                        "src": "8057:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5321,
                        "name": "CREATE_VOTES_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4939,
                        "src": "8066:17:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5322,
                          "name": "arr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            7175,
                            7190,
                            7210,
                            7225,
                            7245,
                            7266,
                            7290,
                            7310,
                            7339,
                            7364,
                            7389,
                            7412,
                            7443,
                            7482,
                            7529,
                            7584
                          ],
                          "referencedDeclaration": 7175,
                          "src": "8085:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$__$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function () pure returns (uint256[] memory)"
                          }
                        },
                        "id": 5323,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8085:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      ],
                      "id": 5319,
                      "name": "canPerform",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8463,
                      "src": "8046:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (address,bytes32,uint256[] memory) view returns (bool)"
                      }
                    },
                    "id": 5324,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8046:45:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5318,
                  "id": 5325,
                  "nodeType": "Return",
                  "src": "8039:52:8"
                }
              ]
            },
            "documentation": null,
            "id": 5327,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "canForward",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5315,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5312,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 5327,
                  "src": "7895:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5311,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7895:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5314,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5327,
                  "src": "7912:5:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5313,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7912:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7894:24:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5318,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5317,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5327,
                  "src": "7940:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5316,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7940:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7939:6:8"
            },
            "scope": 5862,
            "src": "7875:223:8",
            "stateMutability": "view",
            "superFunction": 8637,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5358,
              "nodeType": "Block",
              "src": "8201:142:8",
              "statements": [
                {
                  "assignments": [
                    5340
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5340,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 5359,
                      "src": "8211:18:8",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5339,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5011,
                        "src": "8211:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5344,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 5341,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5023,
                      "src": "8232:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$5011_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 5343,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5342,
                      "name": "_voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5329,
                      "src": "8238:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8232:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$5011_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8211:35:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 5356,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5346,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5340,
                          "src": "8276:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        ],
                        "id": 5345,
                        "name": "_isVoteOpen",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5829,
                        "src": "8264:11:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Vote_$5011_storage_ptr_$returns$_t_bool_$",
                          "typeString": "function (struct Voting.Vote storage pointer) view returns (bool)"
                        }
                      },
                      "id": 5347,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8264:18:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 5355,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5350,
                            "name": "_voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5331,
                            "src": "8304:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5351,
                              "name": "vote_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5340,
                              "src": "8312:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                                "typeString": "struct Voting.Vote storage pointer"
                              }
                            },
                            "id": 5352,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "snapshotBlock",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4994,
                            "src": "8312:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5348,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5013,
                            "src": "8286:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_MiniMeToken_$3743",
                              "typeString": "contract MiniMeToken"
                            }
                          },
                          "id": 5349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOfAt",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3196,
                          "src": "8286:17:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (address,uint256) view external returns (uint256)"
                          }
                        },
                        "id": 5353,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8286:46:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 5354,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8335:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "8286:50:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "8264:72:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5338,
                  "id": 5357,
                  "nodeType": "Return",
                  "src": "8257:79:8"
                }
              ]
            },
            "documentation": null,
            "id": 5359,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5334,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5329,
                    "src": "8177:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 5335,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5333,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5068,
                  "src": "8166:10:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8166:19:8"
              }
            ],
            "name": "canVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5332,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5329,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5359,
                  "src": "8121:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5328,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8121:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5331,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 5359,
                  "src": "8138:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5330,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8138:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8120:33:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5338,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5337,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5359,
                  "src": "8195:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5336,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8195:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8194:6:8"
            },
            "scope": 5862,
            "src": "8104:239:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5436,
              "nodeType": "Block",
              "src": "8433:738:8",
              "statements": [
                {
                  "assignments": [
                    5370
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5370,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 5437,
                      "src": "8443:18:8",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5369,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5011,
                        "src": "8443:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5374,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 5371,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5023,
                      "src": "8464:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$5011_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 5373,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5372,
                      "name": "_voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5361,
                      "src": "8470:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8464:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$5011_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8443:35:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 5375,
                      "name": "vote_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5370,
                      "src": "8493:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                        "typeString": "struct Voting.Vote storage pointer"
                      }
                    },
                    "id": 5376,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "executed",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 4990,
                    "src": "8493:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5380,
                  "nodeType": "IfStatement",
                  "src": "8489:57:8",
                  "trueBody": {
                    "id": 5379,
                    "nodeType": "Block",
                    "src": "8509:37:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 5377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8530:5:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 5368,
                        "id": 5378,
                        "nodeType": "Return",
                        "src": "8523:12:8"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5382,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5370,
                          "src": "8609:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 5383,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "yea",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5000,
                        "src": "8609:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5384,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5370,
                          "src": "8620:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 5385,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "votingPower",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5004,
                        "src": "8620:17:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5386,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5370,
                          "src": "8639:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 5387,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "supportRequiredPct",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4996,
                        "src": "8639:24:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 5381,
                      "name": "_isValuePct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5861,
                      "src": "8597:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                      }
                    },
                    "id": 5388,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8597:67:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5392,
                  "nodeType": "IfStatement",
                  "src": "8593:109:8",
                  "trueBody": {
                    "id": 5391,
                    "nodeType": "Block",
                    "src": "8666:36:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 5389,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8687:4:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 5368,
                        "id": 5390,
                        "nodeType": "Return",
                        "src": "8680:11:8"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    5394
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5394,
                      "name": "totalVotes",
                      "nodeType": "VariableDeclaration",
                      "scope": 5437,
                      "src": "8712:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5393,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8712:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5401,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5398,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5370,
                          "src": "8747:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 5399,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "nay",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5002,
                        "src": "8747:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5395,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5370,
                          "src": "8733:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 5396,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "yea",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5000,
                        "src": "8733:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5397,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11689,
                      "src": "8733:13:8",
                      "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": 5400,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8733:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8712:45:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5403,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5370,
                        "src": "8807:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      ],
                      "id": 5402,
                      "name": "_isVoteOpen",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5829,
                      "src": "8795:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Vote_$5011_storage_ptr_$returns$_t_bool_$",
                        "typeString": "function (struct Voting.Vote storage pointer) view returns (bool)"
                      }
                    },
                    "id": 5404,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8795:18:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5408,
                  "nodeType": "IfStatement",
                  "src": "8791:61:8",
                  "trueBody": {
                    "id": 5407,
                    "nodeType": "Block",
                    "src": "8815:37:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 5405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8836:5:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 5368,
                        "id": 5406,
                        "nodeType": "Return",
                        "src": "8829:12:8"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 5416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "8896:61:8",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5410,
                            "name": "vote_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5370,
                            "src": "8909:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 5411,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "yea",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5000,
                          "src": "8909:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 5412,
                          "name": "totalVotes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5394,
                          "src": "8920:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5413,
                            "name": "vote_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5370,
                            "src": "8932:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 5414,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "supportRequiredPct",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4996,
                          "src": "8932:24:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        ],
                        "id": 5409,
                        "name": "_isValuePct",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5861,
                        "src": "8897:11:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                        }
                      },
                      "id": 5415,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8897:60:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5420,
                  "nodeType": "IfStatement",
                  "src": "8892:104:8",
                  "trueBody": {
                    "id": 5419,
                    "nodeType": "Block",
                    "src": "8959:37:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 5417,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8980:5:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 5368,
                        "id": 5418,
                        "nodeType": "Return",
                        "src": "8973:12:8"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 5429,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "9036:68:8",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5422,
                            "name": "vote_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5370,
                            "src": "9049:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 5423,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "yea",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5000,
                          "src": "9049:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5424,
                            "name": "vote_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5370,
                            "src": "9060:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 5425,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "votingPower",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5004,
                          "src": "9060:17:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5426,
                            "name": "vote_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5370,
                            "src": "9079:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                              "typeString": "struct Voting.Vote storage pointer"
                            }
                          },
                          "id": 5427,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "minAcceptQuorumPct",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4998,
                          "src": "9079:24:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        ],
                        "id": 5421,
                        "name": "_isValuePct",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5861,
                        "src": "9037:11:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (bool)"
                        }
                      },
                      "id": 5428,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9037:67:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5433,
                  "nodeType": "IfStatement",
                  "src": "9032:111:8",
                  "trueBody": {
                    "id": 5432,
                    "nodeType": "Block",
                    "src": "9106:37:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 5430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9127:5:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 5368,
                        "id": 5431,
                        "nodeType": "Return",
                        "src": "9120:12:8"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 5434,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "9160:4:8",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 5368,
                  "id": 5435,
                  "nodeType": "Return",
                  "src": "9153:11:8"
                }
              ]
            },
            "documentation": null,
            "id": 5437,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5364,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5361,
                    "src": "8409:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 5365,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5363,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5068,
                  "src": "8398:10:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8398:19:8"
              }
            ],
            "name": "canExecute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5362,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5361,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5437,
                  "src": "8369:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5360,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8369:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8368:17:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5368,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5367,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5437,
                  "src": "8427:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5366,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8427:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8426:6:8"
            },
            "scope": 5862,
            "src": "8349:822:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5522,
              "nodeType": "Block",
              "src": "9593:440:8",
              "statements": [
                {
                  "assignments": [
                    5466
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5466,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 5523,
                      "src": "9603:18:8",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5465,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5011,
                        "src": "9603:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5470,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 5467,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5023,
                      "src": "9624:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$5011_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 5469,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5468,
                      "name": "_voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5439,
                      "src": "9630:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9624:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$5011_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9603:35:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5475,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5471,
                      "name": "open",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5445,
                      "src": "9649:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5473,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5466,
                          "src": "9668:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        ],
                        "id": 5472,
                        "name": "_isVoteOpen",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5829,
                        "src": "9656:11:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Vote_$5011_storage_ptr_$returns$_t_bool_$",
                          "typeString": "function (struct Voting.Vote storage pointer) view returns (bool)"
                        }
                      },
                      "id": 5474,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9656:18:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9649:25:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5476,
                  "nodeType": "ExpressionStatement",
                  "src": "9649:25:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5480,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5477,
                      "name": "executed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5447,
                      "src": "9684:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5478,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5466,
                        "src": "9695:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5479,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "executed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4990,
                      "src": "9695:14:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "9684:25:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5481,
                  "nodeType": "ExpressionStatement",
                  "src": "9684:25:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5485,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5482,
                      "name": "startDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5449,
                      "src": "9719:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5483,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5466,
                        "src": "9731:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5484,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "startDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4992,
                      "src": "9731:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "9719:27:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5486,
                  "nodeType": "ExpressionStatement",
                  "src": "9719:27:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5487,
                      "name": "snapshotBlock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5451,
                      "src": "9756:13:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5488,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5466,
                        "src": "9772:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5489,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "snapshotBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4994,
                      "src": "9772:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "9756:35:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5491,
                  "nodeType": "ExpressionStatement",
                  "src": "9756:35:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5495,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5492,
                      "name": "supportRequired",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5453,
                      "src": "9801:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5493,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5466,
                        "src": "9819:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5494,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "supportRequiredPct",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4996,
                      "src": "9819:24:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "9801:42:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5496,
                  "nodeType": "ExpressionStatement",
                  "src": "9801:42:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5500,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5497,
                      "name": "minAcceptQuorum",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5455,
                      "src": "9853:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5498,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5466,
                        "src": "9871:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5499,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "minAcceptQuorumPct",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4998,
                      "src": "9871:24:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "9853:42:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5501,
                  "nodeType": "ExpressionStatement",
                  "src": "9853:42:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5505,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5502,
                      "name": "yea",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5457,
                      "src": "9905:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5503,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5466,
                        "src": "9911:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5504,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "yea",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5000,
                      "src": "9911:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9905:15:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5506,
                  "nodeType": "ExpressionStatement",
                  "src": "9905:15:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5510,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5507,
                      "name": "nay",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5459,
                      "src": "9930:3:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5508,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5466,
                        "src": "9936:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5509,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nay",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5002,
                      "src": "9936:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9930:15:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5511,
                  "nodeType": "ExpressionStatement",
                  "src": "9930:15:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5515,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5512,
                      "name": "votingPower",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5461,
                      "src": "9955:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5513,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5466,
                        "src": "9969:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5514,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "votingPower",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5004,
                      "src": "9969:17:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9955:31:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5516,
                  "nodeType": "ExpressionStatement",
                  "src": "9955:31:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5520,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5517,
                      "name": "script",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5463,
                      "src": "9996:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5518,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5466,
                        "src": "10005:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5519,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "executionScript",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5006,
                      "src": "10005:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "src": "9996:30:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 5521,
                  "nodeType": "ExpressionStatement",
                  "src": "9996:30:8"
                }
              ]
            },
            "documentation": null,
            "id": 5523,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5442,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5439,
                    "src": "9258:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 5443,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5441,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5068,
                  "src": "9247:10:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9247:19:8"
              }
            ],
            "name": "getVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5440,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5439,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5523,
                  "src": "9194:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5438,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9194:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9193:17:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5464,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5445,
                  "name": "open",
                  "nodeType": "VariableDeclaration",
                  "scope": 5523,
                  "src": "9297:9:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5444,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9297:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5447,
                  "name": "executed",
                  "nodeType": "VariableDeclaration",
                  "scope": 5523,
                  "src": "9320:13:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5446,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9320:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5449,
                  "name": "startDate",
                  "nodeType": "VariableDeclaration",
                  "scope": 5523,
                  "src": "9347:16:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5448,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "9347:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5451,
                  "name": "snapshotBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 5523,
                  "src": "9377:20:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5450,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "9377:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5453,
                  "name": "supportRequired",
                  "nodeType": "VariableDeclaration",
                  "scope": 5523,
                  "src": "9411:22:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5452,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "9411:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5455,
                  "name": "minAcceptQuorum",
                  "nodeType": "VariableDeclaration",
                  "scope": 5523,
                  "src": "9447:22:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5454,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "9447:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5457,
                  "name": "yea",
                  "nodeType": "VariableDeclaration",
                  "scope": 5523,
                  "src": "9483:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5456,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9483:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5459,
                  "name": "nay",
                  "nodeType": "VariableDeclaration",
                  "scope": 5523,
                  "src": "9508:11:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5458,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9508:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5461,
                  "name": "votingPower",
                  "nodeType": "VariableDeclaration",
                  "scope": 5523,
                  "src": "9533:19:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5460,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9533:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5463,
                  "name": "script",
                  "nodeType": "VariableDeclaration",
                  "scope": 5523,
                  "src": "9566:12:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5462,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9566:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9283:305:8"
            },
            "scope": 5862,
            "src": "9177:856:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5542,
              "nodeType": "Block",
              "src": "10148:53:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 5535,
                          "name": "votes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5023,
                          "src": "10165:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$5011_storage_$",
                            "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                          }
                        },
                        "id": 5537,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5536,
                          "name": "_voteId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5525,
                          "src": "10171:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "10165:14:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage",
                          "typeString": "struct Voting.Vote storage ref"
                        }
                      },
                      "id": 5538,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voters",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5010,
                      "src": "10165:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_enum$_VoterState_$4988_$",
                        "typeString": "mapping(address => enum Voting.VoterState)"
                      }
                    },
                    "id": 5540,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5539,
                      "name": "_voter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5527,
                      "src": "10187:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "10165:29:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_VoterState_$4988",
                      "typeString": "enum Voting.VoterState"
                    }
                  },
                  "functionReturnParameters": 5534,
                  "id": 5541,
                  "nodeType": "Return",
                  "src": "10158:36:8"
                }
              ]
            },
            "documentation": null,
            "id": 5543,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 5530,
                    "name": "_voteId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5525,
                    "src": "10118:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 5531,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 5529,
                  "name": "voteExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5068,
                  "src": "10107:10:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "10107:19:8"
              }
            ],
            "name": "getVoterState",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5528,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5525,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5543,
                  "src": "10062:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5524,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10062:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5527,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 5543,
                  "src": "10079:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5526,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10079:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10061:33:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5533,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5543,
                  "src": "10136:10:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_VoterState_$4988",
                    "typeString": "enum Voting.VoterState"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5532,
                    "name": "VoterState",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4988,
                    "src": "10136:10:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_VoterState_$4988",
                      "typeString": "enum Voting.VoterState"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10135:12:8"
            },
            "scope": 5862,
            "src": "10039:162:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5646,
              "nodeType": "Block",
              "src": "10362:742:8",
              "statements": [
                {
                  "assignments": [
                    5557
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5557,
                      "name": "votingPower",
                      "nodeType": "VariableDeclaration",
                      "scope": 5647,
                      "src": "10372:19:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5556,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10372:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5563,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5560,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5577,
                          "src": "10414:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 5561,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "snapshotBlock",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4994,
                        "src": "10414:19:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5558,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5013,
                        "src": "10394:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$3743",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "id": 5559,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "totalSupplyAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3243,
                      "src": "10394:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256) view external returns (uint256)"
                      }
                    },
                    "id": 5562,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10394:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10372:62:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5565,
                          "name": "votingPower",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5557,
                          "src": "10452:11:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5566,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10466:1:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "10452:15:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5568,
                        "name": "ERROR_NO_VOTING_POWER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4984,
                        "src": "10469:21:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5564,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        12673,
                        12674
                      ],
                      "referencedDeclaration": 12674,
                      "src": "10444:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5569,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10444:47:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5570,
                  "nodeType": "ExpressionStatement",
                  "src": "10444:47:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5574,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 5571,
                      "name": "voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5554,
                      "src": "10502:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5573,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "10511:13:8",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 5572,
                        "name": "votesLength",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5025,
                        "src": "10511:11:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10502:22:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5575,
                  "nodeType": "ExpressionStatement",
                  "src": "10502:22:8"
                },
                {
                  "assignments": [
                    5577
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5577,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 5647,
                      "src": "10534:18:8",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5576,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5011,
                        "src": "10534:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5581,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 5578,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5023,
                      "src": "10555:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$5011_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 5580,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5579,
                      "name": "voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5554,
                      "src": "10561:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "10555:13:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$5011_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10534:34:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5587,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5582,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5577,
                        "src": "10578:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5584,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "startDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4992,
                      "src": "10578:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 5585,
                        "name": "getTimestamp64",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8868,
                        "src": "10596:14:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                          "typeString": "function () view returns (uint64)"
                        }
                      },
                      "id": 5586,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10596:16:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "10578:34:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5588,
                  "nodeType": "ExpressionStatement",
                  "src": "10578:34:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5596,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5589,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5577,
                        "src": "10622:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5591,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "snapshotBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4994,
                      "src": "10622:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "id": 5595,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5592,
                          "name": "getBlockNumber64",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8848,
                          "src": "10644:16:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                            "typeString": "function () view returns (uint64)"
                          }
                        },
                        "id": 5593,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10644:18:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 5594,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10665:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "10644:22:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "10622:44:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5597,
                  "nodeType": "ExpressionStatement",
                  "src": "10622:44:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5602,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5598,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5577,
                        "src": "10718:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5600,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "supportRequiredPct",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4996,
                      "src": "10718:24:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5601,
                      "name": "supportRequiredPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5015,
                      "src": "10745:18:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "10718:45:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5603,
                  "nodeType": "ExpressionStatement",
                  "src": "10718:45:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5608,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5604,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5577,
                        "src": "10773:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5606,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "minAcceptQuorumPct",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4998,
                      "src": "10773:24:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5607,
                      "name": "minAcceptQuorumPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5017,
                      "src": "10800:18:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "10773:45:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5609,
                  "nodeType": "ExpressionStatement",
                  "src": "10773:45:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5614,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5610,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5577,
                        "src": "10828:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5612,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "votingPower",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5004,
                      "src": "10828:17:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5613,
                      "name": "votingPower",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5557,
                      "src": "10848:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10828:31:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5615,
                  "nodeType": "ExpressionStatement",
                  "src": "10828:31:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5620,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5616,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5577,
                        "src": "10869:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5618,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "executionScript",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5006,
                      "src": "10869:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 5619,
                      "name": "_executionScript",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5545,
                      "src": "10893:16:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "10869:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 5621,
                  "nodeType": "ExpressionStatement",
                  "src": "10869:40:8"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5623,
                        "name": "voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5554,
                        "src": "10935:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5624,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12670,
                          "src": "10943:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5625,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "10943:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5626,
                        "name": "_metadata",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5547,
                        "src": "10955:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5622,
                      "name": "StartVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5033,
                      "src": "10925:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,address,string memory)"
                      }
                    },
                    "id": 5627,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10925:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5628,
                  "nodeType": "EmitStatement",
                  "src": "10920:45:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 5635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5629,
                      "name": "_castVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5549,
                      "src": "10980:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5631,
                          "name": "voteId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5554,
                          "src": "11001:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5632,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12670,
                            "src": "11009:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 5633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "11009:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 5630,
                        "name": "canVote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5359,
                        "src": "10993:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_address_$returns$_t_bool_$",
                          "typeString": "function (uint256,address) view returns (bool)"
                        }
                      },
                      "id": 5634,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10993:27:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "10980:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5645,
                  "nodeType": "IfStatement",
                  "src": "10976:122:8",
                  "trueBody": {
                    "id": 5644,
                    "nodeType": "Block",
                    "src": "11022:76:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5637,
                              "name": "voteId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5554,
                              "src": "11042:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 5638,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11050:4:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5639,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12670,
                                "src": "11056:3:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5640,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11056:10:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5641,
                              "name": "_executesIfDecided",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5551,
                              "src": "11068:18:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 5636,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5768,
                            "src": "11036:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bool_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,bool,address,bool)"
                            }
                          },
                          "id": 5642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11036:51:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5643,
                        "nodeType": "ExpressionStatement",
                        "src": "11036:51:8"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 5647,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_newVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5552,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5545,
                  "name": "_executionScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 5647,
                  "src": "10225:22:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5544,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "10225:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5547,
                  "name": "_metadata",
                  "nodeType": "VariableDeclaration",
                  "scope": 5647,
                  "src": "10249:16:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5546,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "10249:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5549,
                  "name": "_castVote",
                  "nodeType": "VariableDeclaration",
                  "scope": 5647,
                  "src": "10267:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5548,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10267:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5551,
                  "name": "_executesIfDecided",
                  "nodeType": "VariableDeclaration",
                  "scope": 5647,
                  "src": "10283:23:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5550,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10283:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10224:83:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5555,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5554,
                  "name": "voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5647,
                  "src": "10342:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5553,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10342:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10341:16:8"
            },
            "scope": 5862,
            "src": "10207:897:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5767,
              "nodeType": "Block",
              "src": "11250:924:8",
              "statements": [
                {
                  "assignments": [
                    5659
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5659,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 5768,
                      "src": "11260:18:8",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5658,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5011,
                        "src": "11260:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5663,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 5660,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5023,
                      "src": "11281:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$5011_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 5662,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5661,
                      "name": "_voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5649,
                      "src": "11287:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "11281:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$5011_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11260:35:8"
                },
                {
                  "assignments": [
                    5665
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5665,
                      "name": "voterStake",
                      "nodeType": "VariableDeclaration",
                      "scope": 5768,
                      "src": "11397:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5664,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11397:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5672,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5668,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5653,
                        "src": "11436:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5669,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5659,
                          "src": "11444:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 5670,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "snapshotBlock",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4994,
                        "src": "11444:19:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5666,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5013,
                        "src": "11418:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MiniMeToken_$3743",
                          "typeString": "contract MiniMeToken"
                        }
                      },
                      "id": 5667,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOfAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3196,
                      "src": "11418:17:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (address,uint256) view external returns (uint256)"
                      }
                    },
                    "id": 5671,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11418:46:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11397:67:8"
                },
                {
                  "assignments": [
                    5674
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5674,
                      "name": "state",
                      "nodeType": "VariableDeclaration",
                      "scope": 5768,
                      "src": "11474:16:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_VoterState_$4988",
                        "typeString": "enum Voting.VoterState"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5673,
                        "name": "VoterState",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4988,
                        "src": "11474:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_VoterState_$4988",
                          "typeString": "enum Voting.VoterState"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5679,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5675,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5659,
                        "src": "11493:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5676,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voters",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5010,
                      "src": "11493:12:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_enum$_VoterState_$4988_$",
                        "typeString": "mapping(address => enum Voting.VoterState)"
                      }
                    },
                    "id": 5678,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5677,
                      "name": "_voter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5653,
                      "src": "11506:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "11493:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_VoterState_$4988",
                      "typeString": "enum Voting.VoterState"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11474:39:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_VoterState_$4988",
                      "typeString": "enum Voting.VoterState"
                    },
                    "id": 5683,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5680,
                      "name": "state",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5674,
                      "src": "11585:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_VoterState_$4988",
                        "typeString": "enum Voting.VoterState"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5681,
                        "name": "VoterState",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4988,
                        "src": "11594:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_VoterState_$4988_$",
                          "typeString": "type(enum Voting.VoterState)"
                        }
                      },
                      "id": 5682,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Yea",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "11594:14:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_VoterState_$4988",
                        "typeString": "enum Voting.VoterState"
                      }
                    },
                    "src": "11585:23:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_enum$_VoterState_$4988",
                        "typeString": "enum Voting.VoterState"
                      },
                      "id": 5698,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 5695,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5674,
                        "src": "11682:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_VoterState_$4988",
                          "typeString": "enum Voting.VoterState"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5696,
                          "name": "VoterState",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4988,
                          "src": "11691:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_VoterState_$4988_$",
                            "typeString": "type(enum Voting.VoterState)"
                          }
                        },
                        "id": 5697,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "Nay",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11691:14:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_VoterState_$4988",
                          "typeString": "enum Voting.VoterState"
                        }
                      },
                      "src": "11682:23:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": null,
                    "id": 5710,
                    "nodeType": "IfStatement",
                    "src": "11678:91:8",
                    "trueBody": {
                      "id": 5709,
                      "nodeType": "Block",
                      "src": "11707:62:8",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 5707,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5699,
                                "name": "vote_",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5659,
                                "src": "11721:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                                  "typeString": "struct Voting.Vote storage pointer"
                                }
                              },
                              "id": 5701,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "nay",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5002,
                              "src": "11721:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5705,
                                  "name": "voterStake",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5665,
                                  "src": "11747:10:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5702,
                                    "name": "vote_",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5659,
                                    "src": "11733:5:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                                      "typeString": "struct Voting.Vote storage pointer"
                                    }
                                  },
                                  "id": 5703,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nay",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5002,
                                  "src": "11733:9:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 5704,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11664,
                                "src": "11733:13:8",
                                "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": 5706,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11733:25:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11721:37:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5708,
                          "nodeType": "ExpressionStatement",
                          "src": "11721:37:8"
                        }
                      ]
                    }
                  },
                  "id": 5711,
                  "nodeType": "IfStatement",
                  "src": "11581:188:8",
                  "trueBody": {
                    "id": 5694,
                    "nodeType": "Block",
                    "src": "11610:62:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5684,
                              "name": "vote_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5659,
                              "src": "11624:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                                "typeString": "struct Voting.Vote storage pointer"
                              }
                            },
                            "id": 5686,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "yea",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5000,
                            "src": "11624:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5690,
                                "name": "voterStake",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5665,
                                "src": "11650:10:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5687,
                                  "name": "vote_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5659,
                                  "src": "11636:5:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                                    "typeString": "struct Voting.Vote storage pointer"
                                  }
                                },
                                "id": 5688,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "yea",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5000,
                                "src": "11636:9:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5689,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11664,
                              "src": "11636:13:8",
                              "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": 5691,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11636:25:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11624:37:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5693,
                        "nodeType": "ExpressionStatement",
                        "src": "11624:37:8"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 5712,
                    "name": "_supports",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5651,
                    "src": "11783:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 5734,
                    "nodeType": "Block",
                    "src": "11862:62:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5732,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5724,
                              "name": "vote_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5659,
                              "src": "11876:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                                "typeString": "struct Voting.Vote storage pointer"
                              }
                            },
                            "id": 5726,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "nay",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5002,
                            "src": "11876:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5730,
                                "name": "voterStake",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5665,
                                "src": "11902:10:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5727,
                                  "name": "vote_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5659,
                                  "src": "11888:5:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                                    "typeString": "struct Voting.Vote storage pointer"
                                  }
                                },
                                "id": 5728,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "nay",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5002,
                                "src": "11888:9:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5729,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11689,
                              "src": "11888:13:8",
                              "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": 5731,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11888:25:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11876:37:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5733,
                        "nodeType": "ExpressionStatement",
                        "src": "11876:37:8"
                      }
                    ]
                  },
                  "id": 5735,
                  "nodeType": "IfStatement",
                  "src": "11779:145:8",
                  "trueBody": {
                    "id": 5723,
                    "nodeType": "Block",
                    "src": "11794:62:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5721,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5713,
                              "name": "vote_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5659,
                              "src": "11808:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                                "typeString": "struct Voting.Vote storage pointer"
                              }
                            },
                            "id": 5715,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "yea",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5000,
                            "src": "11808:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5719,
                                "name": "voterStake",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5665,
                                "src": "11834:10:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5716,
                                  "name": "vote_",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5659,
                                  "src": "11820:5:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                                    "typeString": "struct Voting.Vote storage pointer"
                                  }
                                },
                                "id": 5717,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "yea",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5000,
                                "src": "11820:9:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11689,
                              "src": "11820:13:8",
                              "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": 5720,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11820:25:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11808:37:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5722,
                        "nodeType": "ExpressionStatement",
                        "src": "11808:37:8"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5747,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5736,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5659,
                          "src": "11934:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 5739,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "voters",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5010,
                        "src": "11934:12:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_enum$_VoterState_$4988_$",
                          "typeString": "mapping(address => enum Voting.VoterState)"
                        }
                      },
                      "id": 5740,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 5738,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5653,
                        "src": "11947:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11934:20:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_VoterState_$4988",
                        "typeString": "enum Voting.VoterState"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "condition": {
                        "argumentTypes": null,
                        "id": 5741,
                        "name": "_supports",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5651,
                        "src": "11957:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5744,
                          "name": "VoterState",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4988,
                          "src": "11986:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_VoterState_$4988_$",
                            "typeString": "type(enum Voting.VoterState)"
                          }
                        },
                        "id": 5745,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "Nay",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11986:14:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_VoterState_$4988",
                          "typeString": "enum Voting.VoterState"
                        }
                      },
                      "id": 5746,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "Conditional",
                      "src": "11957:43:8",
                      "trueExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5742,
                          "name": "VoterState",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4988,
                          "src": "11969:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_VoterState_$4988_$",
                            "typeString": "type(enum Voting.VoterState)"
                          }
                        },
                        "id": 5743,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "Yea",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11969:14:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_VoterState_$4988",
                          "typeString": "enum Voting.VoterState"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_VoterState_$4988",
                        "typeString": "enum Voting.VoterState"
                      }
                    },
                    "src": "11934:66:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_VoterState_$4988",
                      "typeString": "enum Voting.VoterState"
                    }
                  },
                  "id": 5748,
                  "nodeType": "ExpressionStatement",
                  "src": "11934:66:8"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5750,
                        "name": "_voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5649,
                        "src": "12025:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5751,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5653,
                        "src": "12034:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5752,
                        "name": "_supports",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5651,
                        "src": "12042:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5753,
                        "name": "voterStake",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5665,
                        "src": "12053:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5749,
                      "name": "CastVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5043,
                      "src": "12016:8:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_bool_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,address,bool,uint256)"
                      }
                    },
                    "id": 5754,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12016:48:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5755,
                  "nodeType": "EmitStatement",
                  "src": "12011:53:8"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 5760,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5756,
                      "name": "_executesIfDecided",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5655,
                      "src": "12079:18:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5758,
                          "name": "_voteId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5649,
                          "src": "12112:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 5757,
                        "name": "canExecute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5437,
                        "src": "12101:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                          "typeString": "function (uint256) view returns (bool)"
                        }
                      },
                      "id": 5759,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12101:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "12079:41:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5766,
                  "nodeType": "IfStatement",
                  "src": "12075:93:8",
                  "trueBody": {
                    "id": 5765,
                    "nodeType": "Block",
                    "src": "12122:46:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5762,
                              "name": "_voteId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5649,
                              "src": "12149:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5761,
                            "name": "_executeVote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5808,
                            "src": "12136:12:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 5763,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12136:21:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5764,
                        "nodeType": "ExpressionStatement",
                        "src": "12136:21:8"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 5768,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_vote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5656,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5649,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5768,
                  "src": "11134:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5648,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11134:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5651,
                  "name": "_supports",
                  "nodeType": "VariableDeclaration",
                  "scope": 5768,
                  "src": "11159:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5650,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11159:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5653,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 5768,
                  "src": "11183:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5652,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11183:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5655,
                  "name": "_executesIfDecided",
                  "nodeType": "VariableDeclaration",
                  "scope": 5768,
                  "src": "11207:23:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5654,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11207:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11124:112:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5657,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11250:0:8"
            },
            "scope": 5862,
            "src": "11110:1064:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5807,
              "nodeType": "Block",
              "src": "12228:274:8",
              "statements": [
                {
                  "assignments": [
                    5774
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5774,
                      "name": "vote_",
                      "nodeType": "VariableDeclaration",
                      "scope": 5808,
                      "src": "12238:18:8",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                        "typeString": "struct Voting.Vote"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5773,
                        "name": "Vote",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5011,
                        "src": "12238:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5778,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 5775,
                      "name": "votes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5023,
                      "src": "12259:5:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Vote_$5011_storage_$",
                        "typeString": "mapping(uint256 => struct Voting.Vote storage ref)"
                      }
                    },
                    "id": 5777,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 5776,
                      "name": "_voteId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5770,
                      "src": "12265:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "12259:14:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$5011_storage",
                      "typeString": "struct Voting.Vote storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12238:35:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 5783,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 5779,
                        "name": "vote_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5774,
                        "src": "12284:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                          "typeString": "struct Voting.Vote storage pointer"
                        }
                      },
                      "id": 5781,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "executed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4990,
                      "src": "12284:14:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 5782,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12301:4:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "12284:21:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5784,
                  "nodeType": "ExpressionStatement",
                  "src": "12284:21:8"
                },
                {
                  "assignments": [
                    5786
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5786,
                      "name": "input",
                      "nodeType": "VariableDeclaration",
                      "scope": 5808,
                      "src": "12316:18:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 5785,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "12316:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5791,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 5789,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12347:1:8",
                        "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": 5788,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "12337:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 5787,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "12341:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 5790,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12337:12:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12316:33:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5793,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5774,
                          "src": "12412:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 5794,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "executionScript",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5006,
                        "src": "12412:21:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5795,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5786,
                        "src": "12435:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5799,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12456:1:8",
                            "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": 5798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "12442:13:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
                            "typeString": "function (uint256) pure returns (address[] memory)"
                          },
                          "typeName": {
                            "baseType": {
                              "id": 5796,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "12446:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 5797,
                            "length": null,
                            "nodeType": "ArrayTypeName",
                            "src": "12446:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                              "typeString": "address[]"
                            }
                          }
                        },
                        "id": 5800,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12442:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory",
                          "typeString": "address[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory",
                          "typeString": "address[] memory"
                        }
                      ],
                      "id": 5792,
                      "name": "runScript",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9432,
                      "src": "12402:9:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,bytes memory,address[] memory) returns (bytes memory)"
                      }
                    },
                    "id": 5801,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12402:57:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 5802,
                  "nodeType": "ExpressionStatement",
                  "src": "12402:57:8"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5804,
                        "name": "_voteId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5770,
                        "src": "12487:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5803,
                      "name": "ExecuteVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5047,
                      "src": "12475:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 5805,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12475:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5806,
                  "nodeType": "EmitStatement",
                  "src": "12470:25:8"
                }
              ]
            },
            "documentation": null,
            "id": 5808,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_executeVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5771,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5770,
                  "name": "_voteId",
                  "nodeType": "VariableDeclaration",
                  "scope": 5808,
                  "src": "12202:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5769,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12202:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12201:17:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5772,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12228:0:8"
            },
            "scope": 5862,
            "src": "12180:322:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5828,
              "nodeType": "Block",
              "src": "12578:91:8",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 5826,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "id": 5822,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5815,
                          "name": "getTimestamp64",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8868,
                          "src": "12595:14:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                            "typeString": "function () view returns (uint64)"
                          }
                        },
                        "id": 5816,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12595:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5820,
                            "name": "voteTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5019,
                            "src": "12634:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5817,
                              "name": "vote_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5810,
                              "src": "12614:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                                "typeString": "struct Voting.Vote storage pointer"
                              }
                            },
                            "id": 5818,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "startDate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4992,
                            "src": "12614:15:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "id": 5819,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11831,
                          "src": "12614:19:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint64_$_t_uint64_$returns$_t_uint64_$bound_to$_t_uint64_$",
                            "typeString": "function (uint64,uint64) pure returns (uint64)"
                          }
                        },
                        "id": 5821,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12614:29:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "src": "12595:48:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 5825,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "12647:15:8",
                      "subExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5823,
                          "name": "vote_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5810,
                          "src": "12648:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                            "typeString": "struct Voting.Vote storage pointer"
                          }
                        },
                        "id": 5824,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "executed",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4990,
                        "src": "12648:14:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "12595:67:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5814,
                  "id": 5827,
                  "nodeType": "Return",
                  "src": "12588:74:8"
                }
              ]
            },
            "documentation": null,
            "id": 5829,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_isVoteOpen",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5811,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5810,
                  "name": "vote_",
                  "nodeType": "VariableDeclaration",
                  "scope": 5829,
                  "src": "12529:18:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                    "typeString": "struct Voting.Vote"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5809,
                    "name": "Vote",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5011,
                    "src": "12529:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Vote_$5011_storage_ptr",
                      "typeString": "struct Voting.Vote"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12528:20:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5814,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5813,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5829,
                  "src": "12572:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5812,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12572:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12571:6:8"
            },
            "scope": 5862,
            "src": "12508:161:8",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5860,
              "nodeType": "Block",
              "src": "12870:167:8",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5842,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5840,
                      "name": "_total",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5833,
                      "src": "12884:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 5841,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12894:1:8",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "12884:11:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 5846,
                  "nodeType": "IfStatement",
                  "src": "12880:54:8",
                  "trueBody": {
                    "id": 5845,
                    "nodeType": "Block",
                    "src": "12897:37:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 5843,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12918:5:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 5839,
                        "id": 5844,
                        "nodeType": "Return",
                        "src": "12911:12:8"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    5848
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5848,
                      "name": "computedPct",
                      "nodeType": "VariableDeclaration",
                      "scope": 5861,
                      "src": "12944:19:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5847,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12944:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5855,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5854,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 5851,
                          "name": "PCT_BASE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4954,
                          "src": "12977:8:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 5849,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5831,
                          "src": "12966:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5850,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "mul",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11614,
                        "src": "12966:10:8",
                        "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": 5852,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12966:20:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 5853,
                      "name": "_total",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5833,
                      "src": "12989:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12966:29:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12944:51:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5858,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 5856,
                      "name": "computedPct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5848,
                      "src": "13012:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 5857,
                      "name": "_pct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5835,
                      "src": "13026:4:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13012:18:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 5839,
                  "id": 5859,
                  "nodeType": "Return",
                  "src": "13005:25:8"
                }
              ]
            },
            "documentation": "@dev Calculates whether `_value` is more than a percentage `_pct` of `_total`",
            "id": 5861,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_isValuePct",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5836,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5831,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 5861,
                  "src": "12795:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5830,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12795:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5833,
                  "name": "_total",
                  "nodeType": "VariableDeclaration",
                  "scope": 5861,
                  "src": "12811:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5832,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12811:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5835,
                  "name": "_pct",
                  "nodeType": "VariableDeclaration",
                  "scope": 5861,
                  "src": "12827:12:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5834,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12827:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12794:46:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 5839,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5838,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 5861,
                  "src": "12864:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5837,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12864:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12863:6:8"
            },
            "scope": 5862,
            "src": "12774:263:8",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 5863,
        "src": "360:12679:8"
      }
    ],
    "src": "57:12983:8"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.1",
  "updatedAt": "2019-03-29T09:45:33.442Z",
  "devdoc": {
    "methods": {
      "allowRecoverability(address)": {
        "details": "By default deriving from AragonApp makes it recoverable",
        "params": {
          "token": "Token address that would be recovered"
        },
        "return": "bool whether the app allows the recovery"
      },
      "canPerform(address,bytes32,uint256[])": {
        "details": "Check whether an action can be performed by a sender for a particular role on this app",
        "params": {
          "_params": "Permission params for the role",
          "_role": "Role on this app",
          "_sender": "Sender of the call"
        },
        "return": "Boolean indicating whether the sender has the permissions to perform the action.        Always returns false if the app hasn't been initialized yet."
      },
      "changeMinAcceptQuorumPct(uint64)": {
        "params": {
          "_minAcceptQuorumPct": "New acceptance quorum"
        }
      },
      "changeSupportRequiredPct(uint64)": {
        "params": {
          "_supportRequiredPct": "New required support"
        }
      },
      "executeVote(uint256)": {
        "details": "Initialization check is implicitly provided by `voteExists()` as new votes can only be     created via `newVote(),` which requires initialization",
        "params": {
          "_voteId": "Id for vote"
        }
      },
      "forward(bytes)": {
        "details": "IForwarder interface conformance",
        "params": {
          "_evmScript": "Start vote with script"
        }
      },
      "getInitializationBlock()": {
        "return": "Block number in which the contract was initialized"
      },
      "getRecoveryVault()": {
        "details": "Get the recovery vault for the app",
        "return": "Recovery vault address for the app"
      },
      "hasInitialized()": {
        "return": "Whether the contract has been initialized by the time of the current block"
      },
      "initialize(address,uint64,uint64,uint64)": {
        "params": {
          "_minAcceptQuorumPct": "Percentage of yeas in total possible votes for a vote to succeed (expressed as a percentage of 10^18; eg. 10^16 = 1%, 10^18 = 100%)",
          "_supportRequiredPct": "Percentage of yeas in casted votes for a vote to succeed (expressed as a percentage of 10^18; eg. 10^16 = 1%, 10^18 = 100%)",
          "_token": "MiniMeToken Address that will be used as governance token",
          "_voteTime": "Seconds that a vote will be open for token holders to vote (unless enough yeas or nays have been cast to make an early decision)"
        }
      },
      "newVote(bytes,string)": {
        "params": {
          "_executionScript": "EVM script to be executed on approval",
          "_metadata": "Vote metadata"
        },
        "return": "voteId Id for newly created vote"
      },
      "newVote(bytes,string,bool,bool)": {
        "params": {
          "_castVote": "Whether to also cast newly created vote",
          "_executesIfDecided": "Whether to also immediately execute newly created vote if decided",
          "_executionScript": "EVM script to be executed on approval",
          "_metadata": "Vote metadata"
        },
        "return": "voteId id for newly created vote"
      },
      "transferToVault(address)": {
        "params": {
          "_token": "Token balance to be sent to recovery vault."
        }
      },
      "vote(uint256,bool,bool)": {
        "details": "Initialization check is implicitly provided by `voteExists()` as new votes can only be     created via `newVote(),` which requires initialization",
        "params": {
          "_executesIfDecided": "Whether the vote should execute its action if it becomes decided",
          "_supports": "Whether voter supports the vote",
          "_voteId": "Id for vote"
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "changeMinAcceptQuorumPct(uint64)": {
        "notice": "Change minimum acceptance quorum to `@formatPct(_minAcceptQuorumPct)`%"
      },
      "changeSupportRequiredPct(uint64)": {
        "notice": "Change required support to `@formatPct(_supportRequiredPct)`%"
      },
      "executeVote(uint256)": {
        "notice": "Execute vote #`_voteId`"
      },
      "forward(bytes)": {
        "notice": "Creates a vote to execute the desired action, and casts a support vote if possible"
      },
      "initialize(address,uint64,uint64,uint64)": {
        "notice": "Initialize Voting app with `_token.symbol(): string` for governance, minimum support of `@formatPct(_supportRequiredPct)`%, minimum acceptance quorum of `@formatPct(_minAcceptQuorumPct)`%, and a voting duration of `@transformTime(_voteTime)`"
      },
      "newVote(bytes,string)": {
        "notice": "Create a new vote about \"`_metadata`\""
      },
      "newVote(bytes,string,bool,bool)": {
        "notice": "Create a new vote about \"`_metadata`\""
      },
      "transferToVault(address)": {
        "notice": "Send funds to recovery Vault. This contract should never receive funds,        but in case it does, this function allows one to recover them."
      },
      "vote(uint256,bool,bool)": {
        "notice": "Vote `_supports ? 'yea' : 'nay'` in vote #`_voteId`"
      }
    }
  }
}