{
  "contractName": "Voting",
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "_minAcceptQuorumPct",
          "type": "uint256"
        }
      ],
      "name": "changeMinAcceptQuorumPct",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "MODIFY_QUORUM_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_token",
          "type": "address"
        },
        {
          "name": "_supportRequiredPct",
          "type": "uint256"
        },
        {
          "name": "_minAcceptQuorumPct",
          "type": "uint256"
        },
        {
          "name": "_voteTime",
          "type": "uint64"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "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"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_voteId",
          "type": "uint256"
        }
      ],
      "name": "getVote",
      "outputs": [
        {
          "name": "open",
          "type": "bool"
        },
        {
          "name": "executed",
          "type": "bool"
        },
        {
          "name": "creator",
          "type": "address"
        },
        {
          "name": "startDate",
          "type": "uint64"
        },
        {
          "name": "snapshotBlock",
          "type": "uint256"
        },
        {
          "name": "minAcceptQuorum",
          "type": "uint256"
        },
        {
          "name": "yea",
          "type": "uint256"
        },
        {
          "name": "nay",
          "type": "uint256"
        },
        {
          "name": "totalVoters",
          "type": "uint256"
        },
        {
          "name": "script",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "EVMSCRIPT_REGISTRY_APP_ID",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "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": true,
      "inputs": [],
      "name": "EVMSCRIPT_REGISTRY_APP",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "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": "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": "_voteId",
          "type": "uint256"
        }
      ],
      "name": "getVoteMetadata",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_sender",
          "type": "address"
        },
        {
          "name": "_evmCallScript",
          "type": "bytes"
        }
      ],
      "name": "canForward",
      "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": "_voter",
          "type": "address"
        }
      ],
      "name": "canVote",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "kernel",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "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": "_evmScript",
          "type": "bytes"
        }
      ],
      "name": "forward",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "minAcceptQuorumPct",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "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": true,
      "inputs": [
        {
          "name": "_script",
          "type": "bytes"
        }
      ],
      "name": "getExecutor",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_voteId",
          "type": "uint256"
        }
      ],
      "name": "executeVote",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "supportRequiredPct",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "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": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isForwarder",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "voteId",
          "type": "uint256"
        }
      ],
      "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": "minAcceptQuorumPct",
          "type": "uint256"
        }
      ],
      "name": "ChangeMinQuorum",
      "type": "event"
    }
  ],
  "bytecode": "0x6060604052341561000f57600080fd5b6128788061001e6000396000f30060606040526004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063036e4220146101645780633c624c75146101875780633ee31e70146101b85780634b12311c146102165780635a55c1f01461027a57806360b1e0571461039d57806380afdea8146103ce5780638b3dd749146103ff5780639b3fdf4c14610428578063a1658fad14610459578063bcf93dd6146104f7578063be2c64d414610534578063c05218c614610565578063c0774df314610601578063cc63604a14610695578063cdb2867b146106d0578063d4aae0c41461072a578063d5db2c801461077f578063d948d468146107d5578063dc474b1a14610832578063df133bca1461085b578063f92a79ff14610894578063f98a4eca14610931578063fad167ab14610954578063fc0c546a1461097d578063fc157cb4146109d2578063fd64eccb146109fb575b600080fd5b341561016f57600080fd5b6101856004808035906020019091905050610a28565b005b341561019257600080fd5b61019a610ae3565b60405180826000191660001916815260200191505060405180910390f35b34156101c357600080fd5b610214600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803567ffffffffffffffff16906020019091905050610b1c565b005b341561022157600080fd5b610256600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c01565b6040518082600281111561026657fe5b60ff16815260200191505060405180910390f35b341561028557600080fd5b61029b6004808035906020019091905050610c76565b604051808b1515151581526020018a1515151581526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018867ffffffffffffffff1667ffffffffffffffff16815260200187815260200186815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561035957808201518184015260208101905061033e565b50505050905090810190601f1680156103865780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390f35b34156103a857600080fd5b6103b0610dde565b60405180826000191660001916815260200191505060405180910390f35b34156103d957600080fd5b6103e1610e17565b60405180826000191660001916815260200191505060405180910390f35b341561040a57600080fd5b610412610e1d565b6040518082815260200191505060405180910390f35b341561043357600080fd5b61043b610e27565b60405180826000191660001916815260200191505060405180910390f35b341561046457600080fd5b6104dd600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610ec2565b604051808215151515815260200191505060405180910390f35b341561050257600080fd5b61050a6110c2565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b341561053f57600080fd5b6105476110dc565b60405180826000191660001916815260200191505060405180910390f35b341561057057600080fd5b6105866004808035906020019091905050611115565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105c65780820151818401526020810190506105ab565b50505050905090810190601f1680156105f35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561060c57600080fd5b61067b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506111dd565b604051808215151515815260200191505060405180910390f35b34156106a057600080fd5b6106b6600480803590602001909190505061122e565b604051808215151515815260200191505060405180910390f35b34156106db57600080fd5b610710600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061131b565b604051808215151515815260200191505060405180910390f35b341561073557600080fd5b61073d611446565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561078a57600080fd5b6107bf60048080359060200190820180359060200191909192908035906020019082018035906020019190919290505061146b565b6040518082815260200191505060405180910390f35b34156107e057600080fd5b610830600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611551565b005b341561083d57600080fd5b610845611584565b6040518082815260200191505060405180910390f35b341561086657600080fd5b61089260048080359060200190919080351515906020019091908035151590602001909190505061158a565b005b341561089f57600080fd5b6108ef600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506115b0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561093c57600080fd5b61095260048080359060200190919050506116b7565b005b341561095f57600080fd5b6109676116d7565b6040518082815260200191505060405180910390f35b341561098857600080fd5b6109906116dd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109dd57600080fd5b6109e5611703565b6040518082815260200191505060405180910390f35b3415610a0657600080fd5b610a0e61170f565b604051808215151515815260200191505060405180910390f35b60405180807f4d4f444946595f51554f52554d5f524f4c45000000000000000000000000000081525060120190506040518091039020610a6a82606654611718565b610a75338383610ec2565b1515610a8057600080fd5b600083111515610a8f57600080fd5b8260655410151515610aa057600080fd5b826066819055507f28bb663e324957c72fa46db87d8afa7591b1c293b2c7ad06e3574eace993ff6d836040518082815260200191505060405180910390a1505050565b60405180807f4d4f444946595f51554f52554d5f524f4c4500000000000000000000000000008152506012019050604051809103902081565b6000600354141515610b2d57600080fd5b610b35611784565b600082111515610b4457600080fd5b670de0b6b3a76400008311151515610b5b57600080fd5b818310151515610b6a57600080fd5b83606460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826065819055508160668190555080606760006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001606881818054905001915081610bfa919061256c565b5050505050565b6000606883815481101515610c1257fe5b90600052602060002090600a020160090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806000806000806000806000610c8c61259e565b600060688c815481101515610c9d57fe5b90600052602060002090600a02019050610cb6816117a5565b9a508060080160009054906101000a900460ff1699508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1698508060000160149054906101000a900467ffffffffffffffff1697508060010154965080600201549550806003015494508060040154935080600501549250806007018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dc95780601f10610d9e57610100808354040283529160200191610dc9565b820191906000526020600020905b815481529060010190602001808311610dac57829003601f168201915b50505050509150509193959799509193959799565b60405180807f65766d7265672e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902081565b60015481565b6000600354905090565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f65766d7265672e617261676f6e706d2e6574680000000000000000000000000081525060130190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b6000610ecc61259e565b60008084511115610ee557602084510290508391508082525b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806110b757506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fdef9106873088866000604051602001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561104d578082015181840152602081019050611032565b50505050905090810190601f16801561107a5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b151561109b57600080fd5b6102c65a03f115156110ac57600080fd5b505050604051805190505b925050509392505050565b606760009054906101000a900467ffffffffffffffff1681565b60405180807f4352454154455f564f5445535f524f4c450000000000000000000000000000008152506011019050604051809103902081565b61111d6125b2565b60688281548110151561112c57fe5b90600052602060002090600a02016006018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111d15780601f106111a6576101008083540402835291602001916111d1565b820191906000526020600020905b8154815290600101906020018083116111b457829003601f168201915b50505050509050919050565b60006112268360405180807f4352454154455f564f5445535f524f4c450000000000000000000000000000008152506011019050604051809103902061122161182a565b610ec2565b905092915050565b600080600060688481548110151561124257fe5b90600052602060002090600a020191508160080160009054906101000a900460ff16156112725760009250611314565b61128782600301548360050154606554611835565b156112955760019250611314565b6112b0826004015483600301546118b690919063ffffffff16565b90506112bb826117a5565b156112c95760009250611314565b6112da826003015482606554611835565b15156112e95760009250611314565b611300826003015483600501548460020154611835565b151561130f5760009250611314565b600192505b5050919050565b60008060688481548110151561132d57fe5b90600052602060002090600a02019050611346816117a5565b801561143d57506000606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ee2cd7e8584600101546000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561142057600080fd5b6102c65a03f1151561143157600080fd5b50505060405180519050115b91505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060405180807f4352454154455f564f5445535f524f4c45000000000000000000000000000000815250601101905060405180910390206114cd338260006040518059106114b75750595b9080825280602002602001820160405250610ec2565b15156114d857600080fd5b61154686868080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505085858080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050506118d7565b915050949350505050565b61155b33826111dd565b151561156657600080fd5b6115808160206040519081016040528060008152506118d7565b5050565b60665481565b611594833361131b565b151561159f57600080fd5b6115ab83833384611adf565b505050565b60006115ba611dfe565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561164a57808201518184015260208101905061162f565b50505050905090810190601f1680156116775780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b151561169557600080fd5b6102c65a03f115156116a657600080fd5b505050604051805190509050919050565b6116c08161122e565b15156116cb57600080fd5b6116d481611f5c565b50565b60655481565b606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b670de0b6b3a764000081565b60006001905090565b6117206125c6565b600260405180591061172f5750595b908082528060200260200182016040525090508281600081518110151561175257fe5b90602001906020020181815250508181600181518110151561177057fe5b906020019060200201818152505092915050565b600060035414151561179557600080fd5b61179d6120c1565b600381905550565b60006117f2606760009054906101000a900467ffffffffffffffff168360000160149054906101000a900467ffffffffffffffff1667ffffffffffffffff166120c990919063ffffffff16565b67ffffffffffffffff164267ffffffffffffffff1610801561182357508160080160009054906101000a900460ff16155b9050919050565b6118326125c6565b90565b600080600080861480156118495750600085115b1561185757600092506118ad565b61186a84866120fe90919063ffffffff16565b9150670de0b6b3a76400008281151561187f57fe5b0490506000670de0b6b3a76400008381151561189757fe5b06146118a5578086116118aa565b808610155b92505b50509392505050565b60008082840190508381101515156118cd57600080fd5b8091505092915050565b600080606880548091906001016118ee919061256c565b91506068828154811015156118ff57fe5b90600052602060002090600a02019050838160070190805190602001906119279291906125da565b50338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550828160060190805190602001906119ae92919061265a565b5060016119b96120c1565b038160010181905550606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663981b24d082600101546000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1515611a5f57600080fd5b6102c65a03f11515611a7057600080fd5b5050506040518051905081600501819055506066548160020181905550817f33c2d6285ba1442f7dd954820743aacec7468bc52e1671024b948f48f132264060405160405180910390a2611ac4823361131b565b15611ad857611ad7826001336001611adf565b5b5092915050565b6000806000606887815481101515611af357fe5b90600052602060002090600a02019250606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ee2cd7e8685600101546000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611bd457600080fd5b6102c65a03f11515611be557600080fd5b5050506040518051905091508260090160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905060016002811115611c4f57fe5b816002811115611c5b57fe5b1415611c8157611c7882846003015461213490919063ffffffff16565b83600301819055505b600280811115611c8d57fe5b816002811115611c9957fe5b1415611cbf57611cb682846004015461213490919063ffffffff16565b83600401819055505b8515611ce957611cdc8284600301546118b690919063ffffffff16565b8360030181905550611d09565b611d008284600401546118b690919063ffffffff16565b83600401819055505b85611d15576002611d18565b60015b8360090160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115611d7457fe5b02179055508473ffffffffffffffffffffffffffffffffffffffff16877fb34ee265e3d4f5ec4e8b52d59b2a9be8fceca2f274ebc080d8fba797fea9391f888560405180831515151581526020018281526020019250505060405180910390a3838015611de65750611de58761122e565b5b15611df557611df487611f5c565b5b50505050505050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f65766d7265672e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902060405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1515611f3857600080fd5b6102c65a03f11515611f4957600080fd5b5050506040518051905090508091505090565b6000611f6661259e565b606883815481101515611f7557fe5b90600052602060002090600a0201915060018260080160006101000a81548160ff0219169083151502179055506000604051805910611fb15750595b9080825280601f01601f1916602001820160405250905061208e826007018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120635780601f1061203857610100808354040283529160200191612063565b820191906000526020600020905b81548152906001019060200180831161204657829003601f168201915b50505050508260006040518059106120785750595b9080825280602002602001820160405250612150565b50827fbf8e2b108bb7c980e08903a8a46527699d5e84905a082d56dacb4150725c8cab60405160405180910390a2505050565b600043905090565b60008082840190508367ffffffffffffffff168167ffffffffffffffff16101515156120f457600080fd5b8091505092915050565b6000808284029050600084148061211f575082848281151561211c57fe5b04145b151561212a57600080fd5b8091505092915050565b600082821115151561214557600080fd5b818303905092915050565b61215861259e565b600061216261259e565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506001549050612199896115b0565b9450600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141515156121d757600080fd5b6121ec88888b6123989092919063ffffffff16565b9350600073ffffffffffffffffffffffffffffffffffffffff1663279cea3590507c01000000000000000000000000000000000000000000000000000000000292508473ffffffffffffffffffffffffffffffffffffffff16837c01000000000000000000000000000000000000000000000000000000009004856040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828051906020019080838360005b838110156122bf5780820151818401526020810190506122a4565b50505050905090810190601f1680156122ec5780820380516001836020036101000a031916815260200191505b509150506000604051808303818661646e5a03f492505050151561230f57600080fd5b61231761245e565b95508173ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561237457600080fd5b80600019166001546000191614151561238c57600080fd5b50505050509392505050565b6123a061259e565b600080600080606093506123b388612494565b602002840192506123c387612494565b602002830191506123d3866124d0565b60200282019050806040518059106123e85750595b9080825280601f01601f191660200182016040525094508360208601528260408601528160608601526124268561241e8a6124de565b868b516124e8565b61243b85612433896124de565b858a516124e8565b6124538561244888612507565b8460208a51026124e8565b505050509392505050565b61246661259e565b3d806000811461248b576040519250602082018301604052602082036020843e61248c565b5b505080905090565b600080602083518115156124a457fe5b06116124b15760006124b4565b60015b60ff16602083518115156124c457fe5b04600101019050919050565b600081516001019050919050565b6000819050919050565b60008260208601019050612500818560208501612511565b5050505050565b6000819050919050565b6000806000808593508692508491505b6020821015156125465783518352602083019250602084019350602082039150612521565b6001826020036101000a0390508019845116818451168181178552505050505050505050565b81548183558181151161259957600a0281600a02836000526020600020918201910161259891906126da565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061261b57805160ff1916838001178555612649565b82800160010185558215612649579182015b8281111561264857825182559160200191906001019061262d565b5b5090506126569190612797565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061269b57805160ff19168380011785556126c9565b828001600101855582156126c9579182015b828111156126c85782518255916020019190600101906126ad565b5b5090506126d69190612797565b5090565b61279491905b8082111561279057600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff02191690556001820160009055600282016000905560038201600090556004820160009055600582016000905560068201600061276391906127bc565b6007820160006127739190612804565b6008820160006101000a81549060ff021916905550600a016126e0565b5090565b90565b6127b991905b808211156127b557600081600090555060010161279d565b5090565b90565b50805460018160011615610100020316600290046000825580601f106127e25750612801565b601f0160209004906000526020600020908101906128009190612797565b5b50565b50805460018160011615610100020316600290046000825580601f1061282a5750612849565b601f0160209004906000526020600020908101906128489190612797565b5b505600a165627a7a72305820cf78a1e881ae05241ade20452622b741c90a38b5bd8eccccaa1ca7c20ab9fe700029",
  "deployedBytecode": "0x60606040526004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063036e4220146101645780633c624c75146101875780633ee31e70146101b85780634b12311c146102165780635a55c1f01461027a57806360b1e0571461039d57806380afdea8146103ce5780638b3dd749146103ff5780639b3fdf4c14610428578063a1658fad14610459578063bcf93dd6146104f7578063be2c64d414610534578063c05218c614610565578063c0774df314610601578063cc63604a14610695578063cdb2867b146106d0578063d4aae0c41461072a578063d5db2c801461077f578063d948d468146107d5578063dc474b1a14610832578063df133bca1461085b578063f92a79ff14610894578063f98a4eca14610931578063fad167ab14610954578063fc0c546a1461097d578063fc157cb4146109d2578063fd64eccb146109fb575b600080fd5b341561016f57600080fd5b6101856004808035906020019091905050610a28565b005b341561019257600080fd5b61019a610ae3565b60405180826000191660001916815260200191505060405180910390f35b34156101c357600080fd5b610214600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803567ffffffffffffffff16906020019091905050610b1c565b005b341561022157600080fd5b610256600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c01565b6040518082600281111561026657fe5b60ff16815260200191505060405180910390f35b341561028557600080fd5b61029b6004808035906020019091905050610c76565b604051808b1515151581526020018a1515151581526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018867ffffffffffffffff1667ffffffffffffffff16815260200187815260200186815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561035957808201518184015260208101905061033e565b50505050905090810190601f1680156103865780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390f35b34156103a857600080fd5b6103b0610dde565b60405180826000191660001916815260200191505060405180910390f35b34156103d957600080fd5b6103e1610e17565b60405180826000191660001916815260200191505060405180910390f35b341561040a57600080fd5b610412610e1d565b6040518082815260200191505060405180910390f35b341561043357600080fd5b61043b610e27565b60405180826000191660001916815260200191505060405180910390f35b341561046457600080fd5b6104dd600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610ec2565b604051808215151515815260200191505060405180910390f35b341561050257600080fd5b61050a6110c2565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b341561053f57600080fd5b6105476110dc565b60405180826000191660001916815260200191505060405180910390f35b341561057057600080fd5b6105866004808035906020019091905050611115565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105c65780820151818401526020810190506105ab565b50505050905090810190601f1680156105f35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561060c57600080fd5b61067b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506111dd565b604051808215151515815260200191505060405180910390f35b34156106a057600080fd5b6106b6600480803590602001909190505061122e565b604051808215151515815260200191505060405180910390f35b34156106db57600080fd5b610710600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061131b565b604051808215151515815260200191505060405180910390f35b341561073557600080fd5b61073d611446565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561078a57600080fd5b6107bf60048080359060200190820180359060200191909192908035906020019082018035906020019190919290505061146b565b6040518082815260200191505060405180910390f35b34156107e057600080fd5b610830600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611551565b005b341561083d57600080fd5b610845611584565b6040518082815260200191505060405180910390f35b341561086657600080fd5b61089260048080359060200190919080351515906020019091908035151590602001909190505061158a565b005b341561089f57600080fd5b6108ef600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506115b0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561093c57600080fd5b61095260048080359060200190919050506116b7565b005b341561095f57600080fd5b6109676116d7565b6040518082815260200191505060405180910390f35b341561098857600080fd5b6109906116dd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109dd57600080fd5b6109e5611703565b6040518082815260200191505060405180910390f35b3415610a0657600080fd5b610a0e61170f565b604051808215151515815260200191505060405180910390f35b60405180807f4d4f444946595f51554f52554d5f524f4c45000000000000000000000000000081525060120190506040518091039020610a6a82606654611718565b610a75338383610ec2565b1515610a8057600080fd5b600083111515610a8f57600080fd5b8260655410151515610aa057600080fd5b826066819055507f28bb663e324957c72fa46db87d8afa7591b1c293b2c7ad06e3574eace993ff6d836040518082815260200191505060405180910390a1505050565b60405180807f4d4f444946595f51554f52554d5f524f4c4500000000000000000000000000008152506012019050604051809103902081565b6000600354141515610b2d57600080fd5b610b35611784565b600082111515610b4457600080fd5b670de0b6b3a76400008311151515610b5b57600080fd5b818310151515610b6a57600080fd5b83606460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826065819055508160668190555080606760006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001606881818054905001915081610bfa919061256c565b5050505050565b6000606883815481101515610c1257fe5b90600052602060002090600a020160090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806000806000806000806000610c8c61259e565b600060688c815481101515610c9d57fe5b90600052602060002090600a02019050610cb6816117a5565b9a508060080160009054906101000a900460ff1699508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1698508060000160149054906101000a900467ffffffffffffffff1697508060010154965080600201549550806003015494508060040154935080600501549250806007018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dc95780601f10610d9e57610100808354040283529160200191610dc9565b820191906000526020600020905b815481529060010190602001808311610dac57829003601f168201915b50505050509150509193959799509193959799565b60405180807f65766d7265672e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902081565b60015481565b6000600354905090565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f65766d7265672e617261676f6e706d2e6574680000000000000000000000000081525060130190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b6000610ecc61259e565b60008084511115610ee557602084510290508391508082525b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806110b757506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fdef9106873088866000604051602001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561104d578082015181840152602081019050611032565b50505050905090810190601f16801561107a5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b151561109b57600080fd5b6102c65a03f115156110ac57600080fd5b505050604051805190505b925050509392505050565b606760009054906101000a900467ffffffffffffffff1681565b60405180807f4352454154455f564f5445535f524f4c450000000000000000000000000000008152506011019050604051809103902081565b61111d6125b2565b60688281548110151561112c57fe5b90600052602060002090600a02016006018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111d15780601f106111a6576101008083540402835291602001916111d1565b820191906000526020600020905b8154815290600101906020018083116111b457829003601f168201915b50505050509050919050565b60006112268360405180807f4352454154455f564f5445535f524f4c450000000000000000000000000000008152506011019050604051809103902061122161182a565b610ec2565b905092915050565b600080600060688481548110151561124257fe5b90600052602060002090600a020191508160080160009054906101000a900460ff16156112725760009250611314565b61128782600301548360050154606554611835565b156112955760019250611314565b6112b0826004015483600301546118b690919063ffffffff16565b90506112bb826117a5565b156112c95760009250611314565b6112da826003015482606554611835565b15156112e95760009250611314565b611300826003015483600501548460020154611835565b151561130f5760009250611314565b600192505b5050919050565b60008060688481548110151561132d57fe5b90600052602060002090600a02019050611346816117a5565b801561143d57506000606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ee2cd7e8584600101546000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561142057600080fd5b6102c65a03f1151561143157600080fd5b50505060405180519050115b91505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060405180807f4352454154455f564f5445535f524f4c45000000000000000000000000000000815250601101905060405180910390206114cd338260006040518059106114b75750595b9080825280602002602001820160405250610ec2565b15156114d857600080fd5b61154686868080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505085858080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050506118d7565b915050949350505050565b61155b33826111dd565b151561156657600080fd5b6115808160206040519081016040528060008152506118d7565b5050565b60665481565b611594833361131b565b151561159f57600080fd5b6115ab83833384611adf565b505050565b60006115ba611dfe565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561164a57808201518184015260208101905061162f565b50505050905090810190601f1680156116775780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b151561169557600080fd5b6102c65a03f115156116a657600080fd5b505050604051805190509050919050565b6116c08161122e565b15156116cb57600080fd5b6116d481611f5c565b50565b60655481565b606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b670de0b6b3a764000081565b60006001905090565b6117206125c6565b600260405180591061172f5750595b908082528060200260200182016040525090508281600081518110151561175257fe5b90602001906020020181815250508181600181518110151561177057fe5b906020019060200201818152505092915050565b600060035414151561179557600080fd5b61179d6120c1565b600381905550565b60006117f2606760009054906101000a900467ffffffffffffffff168360000160149054906101000a900467ffffffffffffffff1667ffffffffffffffff166120c990919063ffffffff16565b67ffffffffffffffff164267ffffffffffffffff1610801561182357508160080160009054906101000a900460ff16155b9050919050565b6118326125c6565b90565b600080600080861480156118495750600085115b1561185757600092506118ad565b61186a84866120fe90919063ffffffff16565b9150670de0b6b3a76400008281151561187f57fe5b0490506000670de0b6b3a76400008381151561189757fe5b06146118a5578086116118aa565b808610155b92505b50509392505050565b60008082840190508381101515156118cd57600080fd5b8091505092915050565b600080606880548091906001016118ee919061256c565b91506068828154811015156118ff57fe5b90600052602060002090600a02019050838160070190805190602001906119279291906125da565b50338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550828160060190805190602001906119ae92919061265a565b5060016119b96120c1565b038160010181905550606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663981b24d082600101546000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1515611a5f57600080fd5b6102c65a03f11515611a7057600080fd5b5050506040518051905081600501819055506066548160020181905550817f33c2d6285ba1442f7dd954820743aacec7468bc52e1671024b948f48f132264060405160405180910390a2611ac4823361131b565b15611ad857611ad7826001336001611adf565b5b5092915050565b6000806000606887815481101515611af357fe5b90600052602060002090600a02019250606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ee2cd7e8685600101546000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611bd457600080fd5b6102c65a03f11515611be557600080fd5b5050506040518051905091508260090160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905060016002811115611c4f57fe5b816002811115611c5b57fe5b1415611c8157611c7882846003015461213490919063ffffffff16565b83600301819055505b600280811115611c8d57fe5b816002811115611c9957fe5b1415611cbf57611cb682846004015461213490919063ffffffff16565b83600401819055505b8515611ce957611cdc8284600301546118b690919063ffffffff16565b8360030181905550611d09565b611d008284600401546118b690919063ffffffff16565b83600401819055505b85611d15576002611d18565b60015b8360090160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115611d7457fe5b02179055508473ffffffffffffffffffffffffffffffffffffffff16877fb34ee265e3d4f5ec4e8b52d59b2a9be8fceca2f274ebc080d8fba797fea9391f888560405180831515151581526020018281526020019250505060405180910390a3838015611de65750611de58761122e565b5b15611df557611df487611f5c565b5b50505050505050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f65766d7265672e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902060405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1515611f3857600080fd5b6102c65a03f11515611f4957600080fd5b5050506040518051905090508091505090565b6000611f6661259e565b606883815481101515611f7557fe5b90600052602060002090600a0201915060018260080160006101000a81548160ff0219169083151502179055506000604051805910611fb15750595b9080825280601f01601f1916602001820160405250905061208e826007018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120635780601f1061203857610100808354040283529160200191612063565b820191906000526020600020905b81548152906001019060200180831161204657829003601f168201915b50505050508260006040518059106120785750595b9080825280602002602001820160405250612150565b50827fbf8e2b108bb7c980e08903a8a46527699d5e84905a082d56dacb4150725c8cab60405160405180910390a2505050565b600043905090565b60008082840190508367ffffffffffffffff168167ffffffffffffffff16101515156120f457600080fd5b8091505092915050565b6000808284029050600084148061211f575082848281151561211c57fe5b04145b151561212a57600080fd5b8091505092915050565b600082821115151561214557600080fd5b818303905092915050565b61215861259e565b600061216261259e565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506001549050612199896115b0565b9450600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141515156121d757600080fd5b6121ec88888b6123989092919063ffffffff16565b9350600073ffffffffffffffffffffffffffffffffffffffff1663279cea3590507c01000000000000000000000000000000000000000000000000000000000292508473ffffffffffffffffffffffffffffffffffffffff16837c01000000000000000000000000000000000000000000000000000000009004856040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828051906020019080838360005b838110156122bf5780820151818401526020810190506122a4565b50505050905090810190601f1680156122ec5780820380516001836020036101000a031916815260200191505b509150506000604051808303818661646e5a03f492505050151561230f57600080fd5b61231761245e565b95508173ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561237457600080fd5b80600019166001546000191614151561238c57600080fd5b50505050509392505050565b6123a061259e565b600080600080606093506123b388612494565b602002840192506123c387612494565b602002830191506123d3866124d0565b60200282019050806040518059106123e85750595b9080825280601f01601f191660200182016040525094508360208601528260408601528160608601526124268561241e8a6124de565b868b516124e8565b61243b85612433896124de565b858a516124e8565b6124538561244888612507565b8460208a51026124e8565b505050509392505050565b61246661259e565b3d806000811461248b576040519250602082018301604052602082036020843e61248c565b5b505080905090565b600080602083518115156124a457fe5b06116124b15760006124b4565b60015b60ff16602083518115156124c457fe5b04600101019050919050565b600081516001019050919050565b6000819050919050565b60008260208601019050612500818560208501612511565b5050505050565b6000819050919050565b6000806000808593508692508491505b6020821015156125465783518352602083019250602084019350602082039150612521565b6001826020036101000a0390508019845116818451168181178552505050505050505050565b81548183558181151161259957600a0281600a02836000526020600020918201910161259891906126da565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061261b57805160ff1916838001178555612649565b82800160010185558215612649579182015b8281111561264857825182559160200191906001019061262d565b5b5090506126569190612797565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061269b57805160ff19168380011785556126c9565b828001600101855582156126c9579182015b828111156126c85782518255916020019190600101906126ad565b5b5090506126d69190612797565b5090565b61279491905b8082111561279057600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff02191690556001820160009055600282016000905560038201600090556004820160009055600582016000905560068201600061276391906127bc565b6007820160006127739190612804565b6008820160006101000a81549060ff021916905550600a016126e0565b5090565b90565b6127b991905b808211156127b557600081600090555060010161279d565b5090565b90565b50805460018160011615610100020316600290046000825580601f106127e25750612801565b601f0160209004906000526020600020908101906128009190612797565b5b50565b50805460018160011615610100020316600290046000825580601f1061282a5750612849565b601f0160209004906000526020600020908101906128489190612797565b5b505600a165627a7a72305820cf78a1e881ae05241ade20452622b741c90a38b5bd8eccccaa1ca7c20ab9fe700029",
  "sourceMap": "371:9078:8:-;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "371:9078:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2830:350;;;;;;;;;;;;;;;;;;;;;;;;;;751:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2139:543;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6501:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5736:635;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;68:84:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;113:20:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;269:107:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;158:103:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;506:494:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;592:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;671:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6377:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4635:155:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5018:712;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4796:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;86:21:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3376:178:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4493:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;553:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3809:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;824:169:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4174:123:8;;;;;;;;;;;;;;;;;;;;;;;;;;514:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;484:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;621:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4303:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2830:350;796:31;;;;;;;;;;;;;;;;;;;2919:44;2923:19;2944:18;;2919:3;:44::i;:::-;444:37:20;455:10;467:5;474:6;444:10;:37::i;:::-;436:46;;;;;;;;3014:1:8;2992:19;:23;2984:32;;;;;;;;3056:19;3034:18;;:41;;3026:50;;;;;;;;3107:19;3086:18;:40;;;;3137:36;3153:19;3137:36;;;;;;;;;;;;;;;;;;2830:350;;;:::o;751:76::-;796:31;;;;;;;;;;;;;;;;;;;751:76;:::o;2139:543::-;163:1:25;140:19;;:24;132:33;;;;;;;;2325:13:8;:11;:13::i;:::-;2379:1;2357:19;:23;2349:32;;;;;;;;656:8;2399:19;:31;;2391:40;;;;;;;;2472:19;2449;:42;;2441:51;;;;;;;;2511:6;2503:5;;:14;;;;;;;;;;;;;;;;;;2548:19;2527:18;:40;;;;2598:19;2577:18;:40;;;;2638:9;2627:8;;:20;;;;;;;;;;;;;;;;;;2674:1;2658:5;:17;;;;;;;;;;;;;;:::i;:::-;;2139:543;;;;:::o;6501:142::-;6578:10;6607:5;6613:7;6607:14;;;;;;;;;;;;;;;;;;;;:21;;:29;6629:6;6607:29;;;;;;;;;;;;;;;;;;;;;;;;;6600:36;;6501:142;;;;:::o;5736:635::-;5791:9;5802:13;5817:15;5834:16;5852:21;5875:23;5900:11;5913;5926:19;5947:12;;:::i;:::-;5971:17;5991:5;5997:7;5991:14;;;;;;;;;;;;;;;;;;;;5971:34;;6023:17;6035:4;6023:11;:17::i;:::-;6016:24;;6061:4;:13;;;;;;;;;;;;6050:24;;6094:4;:12;;;;;;;;;;;;6084:22;;6128:4;:14;;;;;;;;;;;;6116:26;;6168:4;:18;;;6152:34;;6214:4;:23;;;6196:41;;6253:4;:8;;;6247:14;;6277:4;:8;;;6271:14;;6309:4;:16;;;6295:30;;6344:4;:20;;6335:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5736:635;;;;;;;;;;;;:::o;68:84:31:-;120:32;;;;;;;;;;;;;;;;;;;68:84;:::o;113:20:19:-;;;;:::o;269:107:25:-;324:7;350:19;;343:26;;269:107;:::o;158:103:31:-;217:16;;;;;;;;;;;;;;;;;;;120:32;;;;;;;;;;;;;;;;;;;207:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;158:103;:::o;506:494:20:-;597:4;613:16;;:::i;:::-;722:18;705:1;689:6;:13;:17;685:212;;;759:2;743:6;:13;:18;722:39;;809:6;802:13;;862:10;857:3;850:6;784:103;932:1;921:6;;;;;;;;;;;913:20;;;:80;;;;937:6;;;;;;;;;;;:20;;;958:7;975:4;982:5;989:3;937:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;913:80:20;906:87;;506:494;;;;;;;:::o;592:22:8:-;;;;;;;;;;;;;:::o;671:74::-;715:30;;;;;;;;;;;;;;;;;;;671:74;:::o;6377:118::-;6440:6;;:::i;:::-;6465:5;6471:7;6465:14;;;;;;;;;;;;;;;;;;;;:23;;6458:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6377:118;;;:::o;4635:155::-;4715:4;4738:45;4749:7;715:30;;;;;;;;;;;;;;;;;;;4777:5;:3;:5::i;:::-;4738:10;:45::i;:::-;4731:52;;4635:155;;;;:::o;5018:712::-;5076:4;5092:17;5327:18;5112:5;5118:7;5112:14;;;;;;;;;;;;;;;;;;;;5092:34;;5141:4;:13;;;;;;;;;;;;5137:43;;;5175:5;5168:12;;;;5137:43;5232:59;5244:4;:8;;;5254:4;:16;;;5272:18;;5232:11;:59::i;:::-;5228:88;;;5312:4;5305:11;;;;5228:88;5348:22;5361:4;:8;;;5348:4;:8;;;:12;;:22;;;;:::i;:::-;5327:43;;5408:17;5420:4;5408:11;:17::i;:::-;5404:47;;;5446:5;5439:12;;;;5404:47;5490:53;5502:4;:8;;;5512:10;5524:18;;5490:11;:53::i;:::-;5489:54;5485:84;;;5564:5;5557:12;;;;5485:84;5611:64;5623:4;:8;;;5633:4;:16;;;5651:4;:23;;;5611:11;:64::i;:::-;5610:65;5606:95;;;5696:5;5689:12;;;;5606:95;5719:4;5712:11;;5018:712;;;;;;:::o;4796:216::-;4867:4;4883:17;4903:5;4909:7;4903:14;;;;;;;;;;;;;;;;;;;;4883:34;;4935:17;4947:4;4935:11;:17::i;:::-;:70;;;;;5004:1;4956:5;;;;;;;;;;;:17;;;4974:6;4982:4;:18;;;4956:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:49;4935:70;4928:77;;4796:216;;;;;:::o;86:21:19:-;;;;;;;;;;;;;:::o;3376:178:8:-;3477:14;715:30;;;;;;;;;;;;;;;;;;;306:47:20;317:10;329:5;350:1;336:16;;;;;;;;;;;;;;;;;;;;;;;;306:10;:47::i;:::-;298:56;;;;;;;;3510:37:8;3519:16;;3510:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3537:9;;3510:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:8;:37::i;:::-;3503:44;;3376:178;;;;;;;:::o;4493:136::-;4553:34;4564:10;4576;4553;:34::i;:::-;4545:43;;;;;;;;4598:24;4607:10;4598:24;;;;;;;;;;;;;:8;:24::i;:::-;;4493:136;:::o;553:33::-;;;;:::o;3809:260::-;3908:28;3916:7;3925:10;3908:7;:28::i;:::-;3900:37;;;;;;;;3947:115;3966:7;3987:9;4010:10;4034:18;3947:5;:115::i;:::-;3809:260;;;:::o;824:169:29:-;881:18;937:21;:19;:21::i;:::-;:39;;;977:7;937:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;911:75:29;;824:169;;;:::o;4174:123:8:-;4239:19;4250:7;4239:10;:19::i;:::-;4231:28;;;;;;;;4269:21;4282:7;4269:12;:21::i;:::-;4174:123;:::o;514:33::-;;;;:::o;484:24::-;;;;;;;;;;;;;:::o;621:43::-;656:8;621:43;:::o;4303:78::-;4347:4;4370;4363:11;;4303:78;:::o;1481:148:12:-;1541:11;;:::i;:::-;1582:1;1568:16;;;;;;;;;;;;;;;;;;;;;;;;1564:20;;1601:2;1594:1;1596;1594:4;;;;;;;;;;;;;;;;;:9;;;;;1620:2;1613:1;1615;1613:4;;;;;;;;;;;;;;;;;:9;;;;;1481:148;;;;:::o;487:96:25:-;163:1;140:19;;:24;132:33;;;;;;;;560:16;:14;:16::i;:::-;538:19;:38;;;;487:96::o;8797:155:8:-;8860:4;8898:28;8917:8;;;;;;;;;;;8898:4;:14;;;;;;;;;;;;:18;;;;:28;;;;:::i;:::-;8883:44;;8890:3;8883:44;;;:62;;;;;8932:4;:13;;;;;;;;;;;;8931:14;8883:62;8876:69;;8797:155;;;:::o;56:53:12:-;94:11;;:::i;:::-;56:53;:::o;9055:392:8:-;9145:4;9227:9;9265;9175:1;9165:6;:11;:25;;;;;9189:1;9180:6;:10;9165:25;9161:55;;;9211:5;9204:12;;;;9161:55;9239:16;9250:4;9239:6;:10;;:16;;;;:::i;:::-;9227:28;;656:8;9277:1;:12;;;;;;;;9265:24;;9412:1;656:8;9396:1;:12;;;;;;;;:17;:44;;9439:1;9430:6;:10;9396:44;;;9426:1;9416:6;:11;;9396:44;9389:51;;9055:392;;;;;;;;:::o;670:130:53:-;728:7;743:9;759:1;755;:5;743:17;;779:1;774;:6;;766:15;;;;;;;;794:1;787:8;;670:130;;;;;:::o;6649:760:8:-;6727:14;6786:17;6762:5;:14;;;;;;;;;;;:::i;:::-;6753:23;;6806:5;6812:6;6806:13;;;;;;;;;;;;;;;;;;;;6786:33;;6852:16;6829:4;:20;;:39;;;;;;;;;;;;:::i;:::-;;6893:10;6878:4;:12;;;:25;;;;;;;;;;;;;;;;;;6937:3;6913:4;:14;;;:28;;;;;;;;;;;;;;;;;;6967:9;6951:4;:13;;:25;;;;;;;;;;;;:::i;:::-;;7026:1;7007:16;:14;:16::i;:::-;:20;6986:4;:18;;:41;;;;7098:5;;;;;;;;;;;:19;;;7118:4;:18;;;7098:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7079:4;:16;;:58;;;;7173:18;;7147:4;:23;;:44;;;;7212:6;7202:17;;;;;;;;;;7234:27;7242:6;7250:10;7234:7;:27::i;:::-;7230:173;;;7277:115;7300:6;7324:4;7346:10;7374:4;7277:5;:115::i;:::-;7230:173;6649:760;;;;;:::o;7415:1056::-;7565:17;7701:18;7777:16;7585:5;7591:7;7585:14;;;;;;;;;;;;;;;;;;;;7565:34;;7722:5;;;;;;;;;;;:17;;;7740:6;7748:4;:18;;;7722:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7701:66;;7796:4;:11;;:19;7808:6;7796:19;;;;;;;;;;;;;;;;;;;;;;;;;7777:38;;7896:14;7887:23;;;;;;;;:5;:23;;;;;;;;;7883:76;;;7935:24;7948:10;7935:4;:8;;;:12;;:24;;;;:::i;:::-;7924:4;:8;;:35;;;;7883:76;7982:14;7973:23;;;;;;;;:5;:23;;;;;;;;;7969:76;;;8021:24;8034:10;8021:4;:8;;;:12;;:24;;;;:::i;:::-;8010:4;:8;;:35;;;;7969:76;8060:9;8056:124;;;8094:24;8107:10;8094:4;:8;;;:12;;:24;;;;:::i;:::-;8083:4;:8;;:35;;;;8056:124;;;8156:24;8169:10;8156:4;:8;;;:12;;:24;;;;:::i;:::-;8145:4;:8;;:35;;;;8056:124;8213:9;:43;;8242:14;8213:43;;;8225:14;8213:43;8191:4;:11;;:19;8203:6;8191:19;;;;;;;;;;;;;;;;:65;;;;;;;;;;;;;;;;;;;;;;;;8310:6;8267:106;;8289:7;8267:106;8330:9;8353:10;8267:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;8388:18;:41;;;;;8410:19;8421:7;8410:10;:19::i;:::-;8388:41;8384:80;;;8443:21;8456:7;8443:12;:21::i;:::-;8384:80;7415:1056;;;;;;;:::o;1021:200:29:-;1075:18;1105:20;1128:6;;;;;;;;;;;:13;;;217:16:31;;;;;;;;;;;;;;;;;;;120:32;;;;;;;;;;;;;;;;;;;207:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1128:37:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1105:60;;1201:12;1175:39;;1021:200;;:::o;8477:314:8:-;8535:17;8611:18;;:::i;:::-;8555:5;8561:7;8555:14;;;;;;;;;;;;;;;;;;;;8535:34;;8596:4;8580;:13;;;:20;;;;;;;;;;;;;;;;;;8642:1;8632:12;;;;;;;;;;;;;;;;;;;;;;;;;;;8611:33;;8697:56;8707:4;:20;;8697:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8729:5;8750:1;8736:16;;;;;;;;;;;;;;;;;;;;;;;;8697:9;:56::i;:::-;;8776:7;8764:20;;;;;;;;;;8477:314;;;:::o;767:94:25:-;816:7;842:12;835:19;;767:94;:::o;674:126:54:-;730:6;744:8;759:1;755;:5;744:16;;779:1;774:6;;:1;:6;;;;766:15;;;;;;;;794:1;787:8;;674:126;;;;;:::o;138:144:53:-;196:7;211:9;227:1;223;:5;211:17;;247:1;242;:6;:20;;;;261:1;256;252;:5;;;;;;;;:10;242:20;234:29;;;;;;;;276:1;269:8;;138:144;;;;;:::o;555:111::-;613:7;641:1;636;:6;;628:15;;;;;;;;660:1;656;:5;649:12;;555:111;;;;:::o;271:547:29:-;372:12;;:::i;:::-;483:20;582:25;;:::i;:::-;654:10;1806:17;1842:16;1826:6;;;;;;;;;;;1806:26;;1861:5;;1842:24;;506:20;518:7;506:11;:20::i;:::-;483:43;;568:1;544:26;;:12;:26;;;;536:35;;;;;;;;610:34;625:6;633:10;610:7;:14;;:34;;;;;:::i;:::-;582:62;;686:1;667:32;;;:41;;;;654:54;;727:12;:25;;753:3;727:44;;;758:12;727:44;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;719:53:29;;;;;;;;790:21;:19;:21::i;:::-;783:28;;1913:9;1903:19;;:6;;;;;;;;;;;:19;;;1895:28;;;;;;;;1950:8;1941:17;;;:5;;:17;;;;1933:26;;;;;;;;271:547;;;;;;;;;;:::o;728:830:32:-;822:14;;:::i;:::-;902:17;936;996;1056:14;922:4;902:24;;973:13;983:2;973:9;:13::i;:::-;968:2;:18;956:9;:30;936:50;;1033:13;1043:2;1033:9;:13::i;:::-;1028:2;:18;1016:9;:30;996:50;;1090:13;1100:2;1090:9;:13::i;:::-;1085:2;:18;1073:9;:30;1056:47;;1128:6;1118:17;;;;;;;;;;;;;;;;;;;;;;;;;;;1114:21;;1220:9;1213:4;1210:1;1206:3;1199:6;1264:9;1257:4;1254:1;1250:3;1243:6;1308:9;1301:4;1298:1;1294:3;1287:6;1381:41;1386:1;1389:10;1396:2;1389:6;:10::i;:::-;1401:9;1412:2;:9;1381:4;:41::i;:::-;1432;1437:1;1440:10;1447:2;1440:6;:10::i;:::-;1452:9;1463:2;:9;1432:4;:41::i;:::-;1483:46;1488:1;1491:10;1498:2;1491:6;:10::i;:::-;1503:9;1526:2;1514;:9;:14;1483:4;:46::i;:::-;728:830;;;;;;;;;:::o;1316:452:29:-;1370:9;;:::i;:::-;1426:14;1460:4;1482:1;1477:9;;;;1538:4;1532:5;1525:18;;1612:4;1606;1602:3;1597;1593;1587:4;1580:6;1692:4;1686;1682:3;1676:4;1671:3;1656:14;1453:279;;1477:9;1453:279;;1400:342;1758:3;1751:10;;1316:452;:::o;1564:236:32:-;1623:7;1783:1;1778:2;1766;:9;:14;;;;;;;;:18;:26;;1791:1;1766:26;;;1787:1;1766:26;1742:51;;1759:2;1747;:9;:14;;;;;;;;1742:1;:20;:51;1735:58;;1564:236;;;:::o;1806:139::-;1862:7;1929:2;:9;1925:1;:13;1918:20;;1806:139;;;:::o;2182:127::-;2238:11;2291:2;2284:9;;2270:33;;;:::o;1951:225::-;2044:9;2113:4;2106;2102:2;2098:3;2094;2086:32;;2137;2144:4;2150;2166:2;2156:7;:12;2137:6;:32::i;:::-;1951:225;;;;;:::o;2315:131::-;2375:11;2428:2;2421:9;;2407:33;;;:::o;3940:638::-;4012:11;4040:12;4070:11;4356:9;4026:4;4012:18;;4055:5;4040:20;;4084:4;4070:18;;4149:165;4163:2;4156:3;:9;;4149:165;;;4238:3;4232:5;4226:4;4219:6;4278:2;4270:10;;;;4301:2;4294:9;;;;4174:2;4167:9;;;;4149:165;;;4388:1;4381:3;4376:2;:8;4368:3;:17;:21;4356:33;;4457:4;4453:3;4447;4441:5;4437:3;4509:4;4502;4496:5;4492:3;4553:7;4543:8;4540:2;4534:4;4527:6;4408:164;;;;;;;;;:::o;371:9078:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o",
  "source": "pragma solidity 0.4.18;\n\nimport \"@aragon/os/contracts/apps/AragonApp.sol\";\n\nimport \"@aragon/os/contracts/common/IForwarder.sol\";\n\nimport \"@aragon/os/contracts/lib/minime/MiniMeToken.sol\";\nimport \"@aragon/os/contracts/lib/zeppelin/math/SafeMath.sol\";\nimport \"@aragon/os/contracts/lib/zeppelin/math/SafeMath64.sol\";\nimport \"@aragon/os/contracts/lib/misc/Migrations.sol\";\n\n\ncontract Voting is IForwarder, AragonApp {\n    using SafeMath for uint256;\n    using SafeMath64 for uint64;\n\n    MiniMeToken public token;\n    uint256 public supportRequiredPct;\n    uint256 public minAcceptQuorumPct;\n    uint64 public voteTime;\n\n    uint256 constant public PCT_BASE = 10 ** 18;\n\n    bytes32 constant public CREATE_VOTES_ROLE = keccak256(\"CREATE_VOTES_ROLE\");\n    bytes32 constant public MODIFY_QUORUM_ROLE = keccak256(\"MODIFY_QUORUM_ROLE\");\n\n    enum VoterState { Absent, Yea, Nay }\n\n    struct Vote {\n        address creator;\n        uint64 startDate;\n        uint256 snapshotBlock;\n        uint256 minAcceptQuorumPct;\n        uint256 yea;\n        uint256 nay;\n        uint256 totalVoters;\n        string metadata;\n        bytes executionScript;\n        bool executed;\n        mapping (address => VoterState) voters;\n    }\n\n    Vote[] votes;\n\n    event StartVote(uint256 indexed voteId);\n    event CastVote(uint256 indexed voteId, address indexed voter, bool supports, uint256 stake);\n    event ExecuteVote(uint256 indexed voteId);\n    event ChangeMinQuorum(uint256 minAcceptQuorumPct);\n\n    /**\n    * @notice Initializes Voting app (some parameters won't be modifiable after being set)\n    * @param _token MiniMeToken address that will be used as governance token\n    * @param _supportRequiredPct Percentage of voters that must support a vote for it to succeed (expressed as a 10^18 percetage, (eg 10^16 = 1%, 10^18 = 100%)\n    * @param _minAcceptQuorumPct Percetage of total voting power that must support a vote for it to succeed (expressed as a 10^18 percetage, (eg 10^16 = 1%, 10^18 = 100%)\n    * @param _voteTime Seconds that a vote will be open for token holders to vote (unless it is impossible for the fate of the vote to change)\n    */\n    function initialize(\n        MiniMeToken _token,\n        uint256 _supportRequiredPct,\n        uint256 _minAcceptQuorumPct,\n        uint64 _voteTime\n    ) onlyInit external\n    {\n        initialized();\n\n        require(_minAcceptQuorumPct > 0);\n        require(_supportRequiredPct <= PCT_BASE);\n        require(_supportRequiredPct >= _minAcceptQuorumPct);\n\n        token = _token;\n        supportRequiredPct = _supportRequiredPct;\n        minAcceptQuorumPct = _minAcceptQuorumPct;\n        voteTime = _voteTime;\n\n        votes.length += 1;\n    }\n\n    /**\n    * @notice Change minimum acceptance quorum to `_minAcceptQuorumPct`\n    * @param _minAcceptQuorumPct New acceptance quorum\n    */\n    function changeMinAcceptQuorumPct(uint256 _minAcceptQuorumPct) authP(MODIFY_QUORUM_ROLE, arr(_minAcceptQuorumPct, minAcceptQuorumPct)) external {\n        require(_minAcceptQuorumPct > 0);\n        require(supportRequiredPct >= _minAcceptQuorumPct);\n        minAcceptQuorumPct = _minAcceptQuorumPct;\n\n        ChangeMinQuorum(_minAcceptQuorumPct);\n    }\n\n    /**\n    * @notice Create new vote to execute `_executionScript`\n    * @param _executionScript EVM script to be executed on approval\n    * @return voteId id for newly created vote\n    */\n    function newVote(bytes _executionScript, string _metadata) auth(CREATE_VOTES_ROLE) external returns (uint256 voteId) {\n        return _newVote(_executionScript, _metadata);\n    }\n\n    /**\n    * @notice Vote `_supports` in vote with id `_voteId`\n    * @param _voteId Id for vote\n    * @param _supports Whether voter supports the vote\n    * @param _executesIfDecided Whether it should execute the vote if it becomes decided\n    */\n    function vote(uint256 _voteId, bool _supports, bool _executesIfDecided) external {\n        require(canVote(_voteId, msg.sender));\n        _vote(\n            _voteId,\n            _supports,\n            msg.sender,\n            _executesIfDecided\n        );\n    }\n\n    /**\n    * @notice Execute the result of vote `_voteId`\n    * @param _voteId Id for vote\n    */\n    function executeVote(uint256 _voteId) external {\n        require(canExecute(_voteId));\n        _executeVote(_voteId);\n    }\n\n    function isForwarder() public pure returns (bool) {\n        return true;\n    }\n\n    /**\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));\n        _newVote(_evmScript, \"\");\n    }\n\n    function canForward(address _sender, bytes _evmCallScript) public view returns (bool) {\n        return canPerform(_sender, CREATE_VOTES_ROLE, arr());\n    }\n\n    function canVote(uint256 _voteId, address _voter) public view 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 returns (bool) {\n        Vote storage vote = votes[_voteId];\n\n        if (vote.executed)\n            return false;\n\n        // Voting is already decided\n        if (_isValuePct(vote.yea, vote.totalVoters, supportRequiredPct))\n            return true;\n\n        uint256 totalVotes = vote.yea.add(vote.nay);\n\n        // vote ended?\n        if (_isVoteOpen(vote))\n            return false;\n        // has Support?\n        if (!_isValuePct(vote.yea, totalVotes, supportRequiredPct))\n            return false;\n        // has Min Quorum?\n        if (!_isValuePct(vote.yea, vote.totalVoters, vote.minAcceptQuorumPct))\n            return false;\n\n        return true;\n    }\n\n    function getVote(uint256 _voteId) public view returns (bool open, bool executed, address creator, uint64 startDate, uint256 snapshotBlock, uint256 minAcceptQuorum, uint256 yea, uint256 nay, uint256 totalVoters, bytes script) {\n        Vote storage vote = votes[_voteId];\n\n        open = _isVoteOpen(vote);\n        executed = vote.executed;\n        creator = vote.creator;\n        startDate = vote.startDate;\n        snapshotBlock = vote.snapshotBlock;\n        minAcceptQuorum = vote.minAcceptQuorumPct;\n        yea = vote.yea;\n        nay = vote.nay;\n        totalVoters = vote.totalVoters;\n        script = vote.executionScript;\n    }\n\n    function getVoteMetadata(uint256 _voteId) public view returns (string) {\n        return votes[_voteId].metadata;\n    }\n\n    function getVoterState(uint256 _voteId, address _voter) public view returns (VoterState) {\n        return votes[_voteId].voters[_voter];\n    }\n\n    function _newVote(bytes _executionScript, string _metadata) internal returns (uint256 voteId) {\n        voteId = votes.length++;\n        Vote storage vote = votes[voteId];\n        vote.executionScript = _executionScript;\n        vote.creator = msg.sender;\n        vote.startDate = uint64(now);\n        vote.metadata = _metadata;\n        vote.snapshotBlock = getBlockNumber() - 1; // avoid double voting in this very block\n        vote.totalVoters = token.totalSupplyAt(vote.snapshotBlock);\n        vote.minAcceptQuorumPct = minAcceptQuorumPct;\n\n        StartVote(voteId);\n\n        if (canVote(voteId, msg.sender)) {\n            _vote(\n                voteId,\n                true,\n                msg.sender,\n                true\n            );\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 asume the governance token is not maliciuous\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        if (state == VoterState.Nay)\n            vote.nay = vote.nay.sub(voterStake);\n\n        if (_supports)\n            vote.yea = vote.yea.add(voterStake);\n        else\n            vote.nay = vote.nay.add(voterStake);\n\n        vote.voters[_voter] = _supports ? VoterState.Yea : VoterState.Nay;\n\n        CastVote(\n            _voteId,\n            _voter,\n            _supports,\n            voterStake\n        );\n\n        if (_executesIfDecided && canExecute(_voteId))\n            _executeVote(_voteId);\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        ExecuteVote(_voteId);\n    }\n\n    function _isVoteOpen(Vote storage vote) internal view returns (bool) {\n        return uint64(now) < (vote.startDate.add(voteTime)) && !vote.executed;\n    }\n\n    /**\n    * @dev Calculates whether `_value` is at least a percent `_pct` over `_total`\n    */\n    function _isValuePct(uint256 _value, uint256 _total, uint256 _pct) internal pure returns (bool) {\n        if (_value == 0 && _total > 0)\n            return false;\n\n        uint256 m = _total.mul(_pct);\n        uint256 v = m / PCT_BASE;\n\n        // If division is exact, allow same value, otherwise require value to be greater\n        return m % PCT_BASE == 0 ? _value >= v : _value > v;\n    }\n}\n",
  "sourcePath": "@aragon/apps-voting/contracts/Voting.sol",
  "ast": {
    "attributes": {
      "absolutePath": "@aragon/apps-voting/contracts/Voting.sol",
      "exportedSymbols": {
        "Voting": [
          4339
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.4",
            ".18"
          ]
        },
        "id": 3521,
        "name": "PragmaDirective",
        "src": "0:23:8"
      },
      {
        "attributes": {
          "SourceUnit": 6969,
          "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
          "file": "@aragon/os/contracts/apps/AragonApp.sol",
          "scope": 4340,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 3522,
        "name": "ImportDirective",
        "src": "25:49:8"
      },
      {
        "attributes": {
          "SourceUnit": 7218,
          "absolutePath": "@aragon/os/contracts/common/IForwarder.sol",
          "file": "@aragon/os/contracts/common/IForwarder.sol",
          "scope": 4340,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 3523,
        "name": "ImportDirective",
        "src": "76:52:8"
      },
      {
        "attributes": {
          "SourceUnit": 11915,
          "absolutePath": "@aragon/os/contracts/lib/minime/MiniMeToken.sol",
          "file": "@aragon/os/contracts/lib/minime/MiniMeToken.sol",
          "scope": 4340,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 3524,
        "name": "ImportDirective",
        "src": "130:57:8"
      },
      {
        "attributes": {
          "SourceUnit": 12067,
          "absolutePath": "@aragon/os/contracts/lib/zeppelin/math/SafeMath.sol",
          "file": "@aragon/os/contracts/lib/zeppelin/math/SafeMath.sol",
          "scope": 4340,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 3525,
        "name": "ImportDirective",
        "src": "188:61:8"
      },
      {
        "attributes": {
          "SourceUnit": 12162,
          "absolutePath": "@aragon/os/contracts/lib/zeppelin/math/SafeMath64.sol",
          "file": "@aragon/os/contracts/lib/zeppelin/math/SafeMath64.sol",
          "scope": 4340,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 3526,
        "name": "ImportDirective",
        "src": "250:63:8"
      },
      {
        "attributes": {
          "SourceUnit": 11972,
          "absolutePath": "@aragon/os/contracts/lib/misc/Migrations.sol",
          "file": "@aragon/os/contracts/lib/misc/Migrations.sol",
          "scope": 4340,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 3527,
        "name": "ImportDirective",
        "src": "314:54:8"
      },
      {
        "attributes": {
          "contractDependencies": [
            5905,
            6870,
            6968,
            7217,
            7261,
            7846,
            7877
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            4339,
            6968,
            7846,
            7877,
            5905,
            7261,
            6870,
            7217
          ],
          "name": "Voting",
          "scope": 4340
        },
        "children": [
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "IForwarder",
                  "referencedDeclaration": 7217,
                  "type": "contract IForwarder"
                },
                "id": 3528,
                "name": "UserDefinedTypeName",
                "src": "390:10:8"
              }
            ],
            "id": 3529,
            "name": "InheritanceSpecifier",
            "src": "390:10:8"
          },
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "AragonApp",
                  "referencedDeclaration": 6968,
                  "type": "contract AragonApp"
                },
                "id": 3530,
                "name": "UserDefinedTypeName",
                "src": "402:9:8"
              }
            ],
            "id": 3531,
            "name": "InheritanceSpecifier",
            "src": "402:9:8"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "SafeMath",
                  "referencedDeclaration": 12066,
                  "type": "library SafeMath"
                },
                "id": 3532,
                "name": "UserDefinedTypeName",
                "src": "424:8:8"
              },
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 3533,
                "name": "ElementaryTypeName",
                "src": "437:7:8"
              }
            ],
            "id": 3534,
            "name": "UsingForDirective",
            "src": "418:27:8"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "SafeMath64",
                  "referencedDeclaration": 12161,
                  "type": "library SafeMath64"
                },
                "id": 3535,
                "name": "UserDefinedTypeName",
                "src": "456:10:8"
              },
              {
                "attributes": {
                  "name": "uint64",
                  "type": "uint64"
                },
                "id": 3536,
                "name": "ElementaryTypeName",
                "src": "471:6:8"
              }
            ],
            "id": 3537,
            "name": "UsingForDirective",
            "src": "450:28:8"
          },
          {
            "attributes": {
              "constant": false,
              "name": "token",
              "scope": 4339,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract MiniMeToken",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "MiniMeToken",
                  "referencedDeclaration": 11873,
                  "type": "contract MiniMeToken"
                },
                "id": 3538,
                "name": "UserDefinedTypeName",
                "src": "484:11:8"
              }
            ],
            "id": 3539,
            "name": "VariableDeclaration",
            "src": "484:24:8"
          },
          {
            "attributes": {
              "constant": false,
              "name": "supportRequiredPct",
              "scope": 4339,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 3540,
                "name": "ElementaryTypeName",
                "src": "514:7:8"
              }
            ],
            "id": 3541,
            "name": "VariableDeclaration",
            "src": "514:33:8"
          },
          {
            "attributes": {
              "constant": false,
              "name": "minAcceptQuorumPct",
              "scope": 4339,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 3542,
                "name": "ElementaryTypeName",
                "src": "553:7:8"
              }
            ],
            "id": 3543,
            "name": "VariableDeclaration",
            "src": "553:33:8"
          },
          {
            "attributes": {
              "constant": false,
              "name": "voteTime",
              "scope": 4339,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint64",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint64",
                  "type": "uint64"
                },
                "id": 3544,
                "name": "ElementaryTypeName",
                "src": "592:6:8"
              }
            ],
            "id": 3545,
            "name": "VariableDeclaration",
            "src": "592:22:8"
          },
          {
            "attributes": {
              "constant": true,
              "name": "PCT_BASE",
              "scope": 4339,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 3546,
                "name": "ElementaryTypeName",
                "src": "621:7:8"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "commonType": {
                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                    "typeString": "int_const 1000000000000000000"
                  },
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "operator": "**",
                  "type": "int_const 1000000000000000000"
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "3130",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "number",
                      "type": "int_const 10",
                      "value": "10"
                    },
                    "id": 3547,
                    "name": "Literal",
                    "src": "656:2:8"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "3138",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "number",
                      "type": "int_const 18",
                      "value": "18"
                    },
                    "id": 3548,
                    "name": "Literal",
                    "src": "662:2:8"
                  }
                ],
                "id": 3549,
                "name": "BinaryOperation",
                "src": "656:8:8"
              }
            ],
            "id": 3550,
            "name": "VariableDeclaration",
            "src": "621:43:8"
          },
          {
            "attributes": {
              "constant": true,
              "name": "CREATE_VOTES_ROLE",
              "scope": 4339,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bytes32",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "bytes32",
                  "type": "bytes32"
                },
                "id": 3551,
                "name": "ElementaryTypeName",
                "src": "671:7:8"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "isStructConstructorCall": false,
                  "lValueRequested": false,
                  "names": [
                    null
                  ],
                  "type": "bytes32",
                  "type_conversion": false
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_e7dcd7275292e064d090fbc5f3bd7995be23b502c1fed5cd94cfddbbdcd32bbc",
                          "typeString": "literal_string \"CREATE_VOTES_ROLE\""
                        }
                      ],
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 12584,
                      "type": "function () pure returns (bytes32)",
                      "value": "keccak256"
                    },
                    "id": 3552,
                    "name": "Identifier",
                    "src": "715:9:8"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "4352454154455f564f5445535f524f4c45",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "string",
                      "type": "literal_string \"CREATE_VOTES_ROLE\"",
                      "value": "CREATE_VOTES_ROLE"
                    },
                    "id": 3553,
                    "name": "Literal",
                    "src": "725:19:8"
                  }
                ],
                "id": 3554,
                "name": "FunctionCall",
                "src": "715:30:8"
              }
            ],
            "id": 3555,
            "name": "VariableDeclaration",
            "src": "671:74:8"
          },
          {
            "attributes": {
              "constant": true,
              "name": "MODIFY_QUORUM_ROLE",
              "scope": 4339,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bytes32",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "bytes32",
                  "type": "bytes32"
                },
                "id": 3556,
                "name": "ElementaryTypeName",
                "src": "751:7:8"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "isStructConstructorCall": false,
                  "lValueRequested": false,
                  "names": [
                    null
                  ],
                  "type": "bytes32",
                  "type_conversion": false
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_ad15e7261800b4bb73f1b69d3864565ffb1fd00cb93cf14fe48da8f1f2149f39",
                          "typeString": "literal_string \"MODIFY_QUORUM_ROLE\""
                        }
                      ],
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 12584,
                      "type": "function () pure returns (bytes32)",
                      "value": "keccak256"
                    },
                    "id": 3557,
                    "name": "Identifier",
                    "src": "796:9:8"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "4d4f444946595f51554f52554d5f524f4c45",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "string",
                      "type": "literal_string \"MODIFY_QUORUM_ROLE\"",
                      "value": "MODIFY_QUORUM_ROLE"
                    },
                    "id": 3558,
                    "name": "Literal",
                    "src": "806:20:8"
                  }
                ],
                "id": 3559,
                "name": "FunctionCall",
                "src": "796:31:8"
              }
            ],
            "id": 3560,
            "name": "VariableDeclaration",
            "src": "751:76:8"
          },
          {
            "attributes": {
              "canonicalName": "Voting.VoterState",
              "name": "VoterState"
            },
            "children": [
              {
                "attributes": {
                  "name": "Absent"
                },
                "id": 3561,
                "name": "EnumValue",
                "src": "852:6:8"
              },
              {
                "attributes": {
                  "name": "Yea"
                },
                "id": 3562,
                "name": "EnumValue",
                "src": "860:3:8"
              },
              {
                "attributes": {
                  "name": "Nay"
                },
                "id": 3563,
                "name": "EnumValue",
                "src": "865:3:8"
              }
            ],
            "id": 3564,
            "name": "EnumDefinition",
            "src": "834:36:8"
          },
          {
            "attributes": {
              "canonicalName": "Voting.Vote",
              "name": "Vote",
              "scope": 4339,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "name": "creator",
                  "scope": 3589,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "address",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "type": "address"
                    },
                    "id": 3565,
                    "name": "ElementaryTypeName",
                    "src": "898:7:8"
                  }
                ],
                "id": 3566,
                "name": "VariableDeclaration",
                "src": "898:15:8"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "startDate",
                  "scope": 3589,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint64",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint64",
                      "type": "uint64"
                    },
                    "id": 3567,
                    "name": "ElementaryTypeName",
                    "src": "923:6:8"
                  }
                ],
                "id": 3568,
                "name": "VariableDeclaration",
                "src": "923:16:8"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "snapshotBlock",
                  "scope": 3589,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 3569,
                    "name": "ElementaryTypeName",
                    "src": "949:7:8"
                  }
                ],
                "id": 3570,
                "name": "VariableDeclaration",
                "src": "949:21:8"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "minAcceptQuorumPct",
                  "scope": 3589,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 3571,
                    "name": "ElementaryTypeName",
                    "src": "980:7:8"
                  }
                ],
                "id": 3572,
                "name": "VariableDeclaration",
                "src": "980:26:8"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "yea",
                  "scope": 3589,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 3573,
                    "name": "ElementaryTypeName",
                    "src": "1016:7:8"
                  }
                ],
                "id": 3574,
                "name": "VariableDeclaration",
                "src": "1016:11:8"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "nay",
                  "scope": 3589,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 3575,
                    "name": "ElementaryTypeName",
                    "src": "1037:7:8"
                  }
                ],
                "id": 3576,
                "name": "VariableDeclaration",
                "src": "1037:11:8"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "totalVoters",
                  "scope": 3589,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 3577,
                    "name": "ElementaryTypeName",
                    "src": "1058:7:8"
                  }
                ],
                "id": 3578,
                "name": "VariableDeclaration",
                "src": "1058:19:8"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "metadata",
                  "scope": 3589,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "string storage pointer",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "string",
                      "type": "string storage pointer"
                    },
                    "id": 3579,
                    "name": "ElementaryTypeName",
                    "src": "1087:6:8"
                  }
                ],
                "id": 3580,
                "name": "VariableDeclaration",
                "src": "1087:15:8"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "executionScript",
                  "scope": 3589,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bytes storage pointer",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes",
                      "type": "bytes storage pointer"
                    },
                    "id": 3581,
                    "name": "ElementaryTypeName",
                    "src": "1112:5:8"
                  }
                ],
                "id": 3582,
                "name": "VariableDeclaration",
                "src": "1112:21:8"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "executed",
                  "scope": 3589,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bool",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bool",
                      "type": "bool"
                    },
                    "id": 3583,
                    "name": "ElementaryTypeName",
                    "src": "1143:4:8"
                  }
                ],
                "id": 3584,
                "name": "VariableDeclaration",
                "src": "1143:13:8"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "voters",
                  "scope": 3589,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "mapping(address => enum Voting.VoterState)",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "type": "mapping(address => enum Voting.VoterState)"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3585,
                        "name": "ElementaryTypeName",
                        "src": "1175:7:8"
                      },
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "VoterState",
                          "referencedDeclaration": 3564,
                          "type": "enum Voting.VoterState"
                        },
                        "id": 3586,
                        "name": "UserDefinedTypeName",
                        "src": "1186:10:8"
                      }
                    ],
                    "id": 3587,
                    "name": "Mapping",
                    "src": "1166:31:8"
                  }
                ],
                "id": 3588,
                "name": "VariableDeclaration",
                "src": "1166:38:8"
              }
            ],
            "id": 3589,
            "name": "StructDefinition",
            "src": "876:335:8"
          },
          {
            "attributes": {
              "constant": false,
              "name": "votes",
              "scope": 4339,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "struct Voting.Vote storage ref[] storage ref",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "length": null,
                  "type": "struct Voting.Vote storage ref[] storage pointer"
                },
                "children": [
                  {
                    "attributes": {
                      "contractScope": null,
                      "name": "Vote",
                      "referencedDeclaration": 3589,
                      "type": "struct Voting.Vote storage pointer"
                    },
                    "id": 3590,
                    "name": "UserDefinedTypeName",
                    "src": "1217:4:8"
                  }
                ],
                "id": 3591,
                "name": "ArrayTypeName",
                "src": "1217:6:8"
              }
            ],
            "id": 3592,
            "name": "VariableDeclaration",
            "src": "1217:12:8"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "StartVote"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "voteId",
                      "scope": 3596,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3593,
                        "name": "ElementaryTypeName",
                        "src": "1252:7:8"
                      }
                    ],
                    "id": 3594,
                    "name": "VariableDeclaration",
                    "src": "1252:22:8"
                  }
                ],
                "id": 3595,
                "name": "ParameterList",
                "src": "1251:24:8"
              }
            ],
            "id": 3596,
            "name": "EventDefinition",
            "src": "1236:40:8"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "CastVote"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "voteId",
                      "scope": 3606,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3597,
                        "name": "ElementaryTypeName",
                        "src": "1296:7:8"
                      }
                    ],
                    "id": 3598,
                    "name": "VariableDeclaration",
                    "src": "1296:22:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "voter",
                      "scope": 3606,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3599,
                        "name": "ElementaryTypeName",
                        "src": "1320:7:8"
                      }
                    ],
                    "id": 3600,
                    "name": "VariableDeclaration",
                    "src": "1320:21:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "supports",
                      "scope": 3606,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3601,
                        "name": "ElementaryTypeName",
                        "src": "1343:4:8"
                      }
                    ],
                    "id": 3602,
                    "name": "VariableDeclaration",
                    "src": "1343:13:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "stake",
                      "scope": 3606,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3603,
                        "name": "ElementaryTypeName",
                        "src": "1358:7:8"
                      }
                    ],
                    "id": 3604,
                    "name": "VariableDeclaration",
                    "src": "1358:13:8"
                  }
                ],
                "id": 3605,
                "name": "ParameterList",
                "src": "1295:77:8"
              }
            ],
            "id": 3606,
            "name": "EventDefinition",
            "src": "1281:92:8"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "ExecuteVote"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "voteId",
                      "scope": 3610,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3607,
                        "name": "ElementaryTypeName",
                        "src": "1396:7:8"
                      }
                    ],
                    "id": 3608,
                    "name": "VariableDeclaration",
                    "src": "1396:22:8"
                  }
                ],
                "id": 3609,
                "name": "ParameterList",
                "src": "1395:24:8"
              }
            ],
            "id": 3610,
            "name": "EventDefinition",
            "src": "1378:42:8"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "ChangeMinQuorum"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "minAcceptQuorumPct",
                      "scope": 3614,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3611,
                        "name": "ElementaryTypeName",
                        "src": "1447:7:8"
                      }
                    ],
                    "id": 3612,
                    "name": "VariableDeclaration",
                    "src": "1447:26:8"
                  }
                ],
                "id": 3613,
                "name": "ParameterList",
                "src": "1446:28:8"
              }
            ],
            "id": 3614,
            "name": "EventDefinition",
            "src": "1425:50:8"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "initialize",
              "payable": false,
              "scope": 4339,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_token",
                      "scope": 3671,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract MiniMeToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "MiniMeToken",
                          "referencedDeclaration": 11873,
                          "type": "contract MiniMeToken"
                        },
                        "id": 3615,
                        "name": "UserDefinedTypeName",
                        "src": "2168:11:8"
                      }
                    ],
                    "id": 3616,
                    "name": "VariableDeclaration",
                    "src": "2168:18:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_supportRequiredPct",
                      "scope": 3671,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3617,
                        "name": "ElementaryTypeName",
                        "src": "2196:7:8"
                      }
                    ],
                    "id": 3618,
                    "name": "VariableDeclaration",
                    "src": "2196:27:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_minAcceptQuorumPct",
                      "scope": 3671,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3619,
                        "name": "ElementaryTypeName",
                        "src": "2233:7:8"
                      }
                    ],
                    "id": 3620,
                    "name": "VariableDeclaration",
                    "src": "2233:27:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_voteTime",
                      "scope": 3671,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 3621,
                        "name": "ElementaryTypeName",
                        "src": "2270:6:8"
                      }
                    ],
                    "id": 3622,
                    "name": "VariableDeclaration",
                    "src": "2270:16:8"
                  }
                ],
                "id": 3623,
                "name": "ParameterList",
                "src": "2158:134:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3626,
                "name": "ParameterList",
                "src": "2315:0:8"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 7232,
                      "type": "modifier ()",
                      "value": "onlyInit"
                    },
                    "id": 3624,
                    "name": "Identifier",
                    "src": "2293:8:8"
                  }
                ],
                "id": 3625,
                "name": "ModifierInvocation",
                "src": "2293:8:8"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7251,
                              "type": "function ()",
                              "value": "initialized"
                            },
                            "id": 3627,
                            "name": "Identifier",
                            "src": "2325:11:8"
                          }
                        ],
                        "id": 3628,
                        "name": "FunctionCall",
                        "src": "2325:13:8"
                      }
                    ],
                    "id": 3629,
                    "name": "ExpressionStatement",
                    "src": "2325:13:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 3630,
                            "name": "Identifier",
                            "src": "2349:7:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3620,
                                  "type": "uint256",
                                  "value": "_minAcceptQuorumPct"
                                },
                                "id": 3631,
                                "name": "Identifier",
                                "src": "2357:19:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 3632,
                                "name": "Literal",
                                "src": "2379:1:8"
                              }
                            ],
                            "id": 3633,
                            "name": "BinaryOperation",
                            "src": "2357:23:8"
                          }
                        ],
                        "id": 3634,
                        "name": "FunctionCall",
                        "src": "2349:32:8"
                      }
                    ],
                    "id": 3635,
                    "name": "ExpressionStatement",
                    "src": "2349:32:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 3636,
                            "name": "Identifier",
                            "src": "2391:7:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "<=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3618,
                                  "type": "uint256",
                                  "value": "_supportRequiredPct"
                                },
                                "id": 3637,
                                "name": "Identifier",
                                "src": "2399:19:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3550,
                                  "type": "uint256",
                                  "value": "PCT_BASE"
                                },
                                "id": 3638,
                                "name": "Identifier",
                                "src": "2422:8:8"
                              }
                            ],
                            "id": 3639,
                            "name": "BinaryOperation",
                            "src": "2399:31:8"
                          }
                        ],
                        "id": 3640,
                        "name": "FunctionCall",
                        "src": "2391:40:8"
                      }
                    ],
                    "id": 3641,
                    "name": "ExpressionStatement",
                    "src": "2391:40:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 3642,
                            "name": "Identifier",
                            "src": "2441:7:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3618,
                                  "type": "uint256",
                                  "value": "_supportRequiredPct"
                                },
                                "id": 3643,
                                "name": "Identifier",
                                "src": "2449:19:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3620,
                                  "type": "uint256",
                                  "value": "_minAcceptQuorumPct"
                                },
                                "id": 3644,
                                "name": "Identifier",
                                "src": "2472:19:8"
                              }
                            ],
                            "id": 3645,
                            "name": "BinaryOperation",
                            "src": "2449:42:8"
                          }
                        ],
                        "id": 3646,
                        "name": "FunctionCall",
                        "src": "2441:51:8"
                      }
                    ],
                    "id": 3647,
                    "name": "ExpressionStatement",
                    "src": "2441:51:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract MiniMeToken"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3539,
                              "type": "contract MiniMeToken",
                              "value": "token"
                            },
                            "id": 3648,
                            "name": "Identifier",
                            "src": "2503:5:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3616,
                              "type": "contract MiniMeToken",
                              "value": "_token"
                            },
                            "id": 3649,
                            "name": "Identifier",
                            "src": "2511:6:8"
                          }
                        ],
                        "id": 3650,
                        "name": "Assignment",
                        "src": "2503:14:8"
                      }
                    ],
                    "id": 3651,
                    "name": "ExpressionStatement",
                    "src": "2503:14:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3541,
                              "type": "uint256",
                              "value": "supportRequiredPct"
                            },
                            "id": 3652,
                            "name": "Identifier",
                            "src": "2527:18:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3618,
                              "type": "uint256",
                              "value": "_supportRequiredPct"
                            },
                            "id": 3653,
                            "name": "Identifier",
                            "src": "2548:19:8"
                          }
                        ],
                        "id": 3654,
                        "name": "Assignment",
                        "src": "2527:40:8"
                      }
                    ],
                    "id": 3655,
                    "name": "ExpressionStatement",
                    "src": "2527:40:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3543,
                              "type": "uint256",
                              "value": "minAcceptQuorumPct"
                            },
                            "id": 3656,
                            "name": "Identifier",
                            "src": "2577:18:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3620,
                              "type": "uint256",
                              "value": "_minAcceptQuorumPct"
                            },
                            "id": 3657,
                            "name": "Identifier",
                            "src": "2598:19:8"
                          }
                        ],
                        "id": 3658,
                        "name": "Assignment",
                        "src": "2577:40:8"
                      }
                    ],
                    "id": 3659,
                    "name": "ExpressionStatement",
                    "src": "2577:40:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint64"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3545,
                              "type": "uint64",
                              "value": "voteTime"
                            },
                            "id": 3660,
                            "name": "Identifier",
                            "src": "2627:8:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3622,
                              "type": "uint64",
                              "value": "_voteTime"
                            },
                            "id": 3661,
                            "name": "Identifier",
                            "src": "2638:9:8"
                          }
                        ],
                        "id": 3662,
                        "name": "Assignment",
                        "src": "2627:20:8"
                      }
                    ],
                    "id": 3663,
                    "name": "ExpressionStatement",
                    "src": "2627:20:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "+=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3592,
                                  "type": "struct Voting.Vote storage ref[] storage ref",
                                  "value": "votes"
                                },
                                "id": 3664,
                                "name": "Identifier",
                                "src": "2658:5:8"
                              }
                            ],
                            "id": 3666,
                            "name": "MemberAccess",
                            "src": "2658:12:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 3667,
                            "name": "Literal",
                            "src": "2674:1:8"
                          }
                        ],
                        "id": 3668,
                        "name": "Assignment",
                        "src": "2658:17:8"
                      }
                    ],
                    "id": 3669,
                    "name": "ExpressionStatement",
                    "src": "2658:17:8"
                  }
                ],
                "id": 3670,
                "name": "Block",
                "src": "2315:367:8"
              }
            ],
            "id": 3671,
            "name": "FunctionDefinition",
            "src": "2139:543:8"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "changeMinAcceptQuorumPct",
              "payable": false,
              "scope": 4339,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_minAcceptQuorumPct",
                      "scope": 3704,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3672,
                        "name": "ElementaryTypeName",
                        "src": "2864:7:8"
                      }
                    ],
                    "id": 3673,
                    "name": "VariableDeclaration",
                    "src": "2864:27:8"
                  }
                ],
                "id": 3674,
                "name": "ParameterList",
                "src": "2863:29:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3682,
                "name": "ParameterList",
                "src": "2974:0:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6921,
                      "type": "modifier (bytes32,uint256[] memory)",
                      "value": "authP"
                    },
                    "id": 3675,
                    "name": "Identifier",
                    "src": "2893:5:8"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 3560,
                      "type": "bytes32",
                      "value": "MODIFY_QUORUM_ROLE"
                    },
                    "id": 3676,
                    "name": "Identifier",
                    "src": "2899:18:8"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "isStructConstructorCall": false,
                      "lValueRequested": false,
                      "names": [
                        null
                      ],
                      "type": "uint256[] memory",
                      "type_conversion": false
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "overloadedDeclarations": [
                            5519,
                            5534,
                            5554,
                            5569,
                            5589,
                            5610,
                            5630,
                            5659,
                            5684,
                            5709,
                            5732,
                            5763,
                            5802,
                            5849,
                            5904
                          ],
                          "referencedDeclaration": 5763,
                          "type": "function (uint256,uint256) pure returns (uint256[] memory)",
                          "value": "arr"
                        },
                        "id": 3677,
                        "name": "Identifier",
                        "src": "2919:3:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 3673,
                          "type": "uint256",
                          "value": "_minAcceptQuorumPct"
                        },
                        "id": 3678,
                        "name": "Identifier",
                        "src": "2923:19:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 3543,
                          "type": "uint256",
                          "value": "minAcceptQuorumPct"
                        },
                        "id": 3679,
                        "name": "Identifier",
                        "src": "2944:18:8"
                      }
                    ],
                    "id": 3680,
                    "name": "FunctionCall",
                    "src": "2919:44:8"
                  }
                ],
                "id": 3681,
                "name": "ModifierInvocation",
                "src": "2893:71:8"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 3683,
                            "name": "Identifier",
                            "src": "2984:7:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3673,
                                  "type": "uint256",
                                  "value": "_minAcceptQuorumPct"
                                },
                                "id": 3684,
                                "name": "Identifier",
                                "src": "2992:19:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 3685,
                                "name": "Literal",
                                "src": "3014:1:8"
                              }
                            ],
                            "id": 3686,
                            "name": "BinaryOperation",
                            "src": "2992:23:8"
                          }
                        ],
                        "id": 3687,
                        "name": "FunctionCall",
                        "src": "2984:32:8"
                      }
                    ],
                    "id": 3688,
                    "name": "ExpressionStatement",
                    "src": "2984:32:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 3689,
                            "name": "Identifier",
                            "src": "3026:7:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3541,
                                  "type": "uint256",
                                  "value": "supportRequiredPct"
                                },
                                "id": 3690,
                                "name": "Identifier",
                                "src": "3034:18:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3673,
                                  "type": "uint256",
                                  "value": "_minAcceptQuorumPct"
                                },
                                "id": 3691,
                                "name": "Identifier",
                                "src": "3056:19:8"
                              }
                            ],
                            "id": 3692,
                            "name": "BinaryOperation",
                            "src": "3034:41:8"
                          }
                        ],
                        "id": 3693,
                        "name": "FunctionCall",
                        "src": "3026:50:8"
                      }
                    ],
                    "id": 3694,
                    "name": "ExpressionStatement",
                    "src": "3026:50:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3543,
                              "type": "uint256",
                              "value": "minAcceptQuorumPct"
                            },
                            "id": 3695,
                            "name": "Identifier",
                            "src": "3086:18:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3673,
                              "type": "uint256",
                              "value": "_minAcceptQuorumPct"
                            },
                            "id": 3696,
                            "name": "Identifier",
                            "src": "3107:19:8"
                          }
                        ],
                        "id": 3697,
                        "name": "Assignment",
                        "src": "3086:40:8"
                      }
                    ],
                    "id": 3698,
                    "name": "ExpressionStatement",
                    "src": "3086:40:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3614,
                              "type": "function (uint256)",
                              "value": "ChangeMinQuorum"
                            },
                            "id": 3699,
                            "name": "Identifier",
                            "src": "3137:15:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3673,
                              "type": "uint256",
                              "value": "_minAcceptQuorumPct"
                            },
                            "id": 3700,
                            "name": "Identifier",
                            "src": "3153:19:8"
                          }
                        ],
                        "id": 3701,
                        "name": "FunctionCall",
                        "src": "3137:36:8"
                      }
                    ],
                    "id": 3702,
                    "name": "ExpressionStatement",
                    "src": "3137:36:8"
                  }
                ],
                "id": 3703,
                "name": "Block",
                "src": "2974:206:8"
              }
            ],
            "id": 3704,
            "name": "FunctionDefinition",
            "src": "2830:350:8"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "newVote",
              "payable": false,
              "scope": 4339,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_executionScript",
                      "scope": 3722,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes calldata",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 3705,
                        "name": "ElementaryTypeName",
                        "src": "3393:5:8"
                      }
                    ],
                    "id": 3706,
                    "name": "VariableDeclaration",
                    "src": "3393:22:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_metadata",
                      "scope": 3722,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string calldata",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 3707,
                        "name": "ElementaryTypeName",
                        "src": "3417:6:8"
                      }
                    ],
                    "id": 3708,
                    "name": "VariableDeclaration",
                    "src": "3417:16:8"
                  }
                ],
                "id": 3709,
                "name": "ParameterList",
                "src": "3392:42:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "voteId",
                      "scope": 3722,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3713,
                        "name": "ElementaryTypeName",
                        "src": "3477:7:8"
                      }
                    ],
                    "id": 3714,
                    "name": "VariableDeclaration",
                    "src": "3477:14:8"
                  }
                ],
                "id": 3715,
                "name": "ParameterList",
                "src": "3476:16:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6903,
                      "type": "modifier (bytes32)",
                      "value": "auth"
                    },
                    "id": 3710,
                    "name": "Identifier",
                    "src": "3435:4:8"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 3555,
                      "type": "bytes32",
                      "value": "CREATE_VOTES_ROLE"
                    },
                    "id": 3711,
                    "name": "Identifier",
                    "src": "3440:17:8"
                  }
                ],
                "id": 3712,
                "name": "ModifierInvocation",
                "src": "3435:23:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3715
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                },
                                {
                                  "typeIdentifier": "t_string_calldata_ptr",
                                  "typeString": "string calldata"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4111,
                              "type": "function (bytes memory,string memory) returns (uint256)",
                              "value": "_newVote"
                            },
                            "id": 3716,
                            "name": "Identifier",
                            "src": "3510:8:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3706,
                              "type": "bytes calldata",
                              "value": "_executionScript"
                            },
                            "id": 3717,
                            "name": "Identifier",
                            "src": "3519:16:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3708,
                              "type": "string calldata",
                              "value": "_metadata"
                            },
                            "id": 3718,
                            "name": "Identifier",
                            "src": "3537:9:8"
                          }
                        ],
                        "id": 3719,
                        "name": "FunctionCall",
                        "src": "3510:37:8"
                      }
                    ],
                    "id": 3720,
                    "name": "Return",
                    "src": "3503:44:8"
                  }
                ],
                "id": 3721,
                "name": "Block",
                "src": "3493:61:8"
              }
            ],
            "id": 3722,
            "name": "FunctionDefinition",
            "src": "3376:178:8"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "vote",
              "payable": false,
              "scope": 4339,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_voteId",
                      "scope": 3748,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3723,
                        "name": "ElementaryTypeName",
                        "src": "3823:7:8"
                      }
                    ],
                    "id": 3724,
                    "name": "VariableDeclaration",
                    "src": "3823:15:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_supports",
                      "scope": 3748,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3725,
                        "name": "ElementaryTypeName",
                        "src": "3840:4:8"
                      }
                    ],
                    "id": 3726,
                    "name": "VariableDeclaration",
                    "src": "3840:14:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_executesIfDecided",
                      "scope": 3748,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3727,
                        "name": "ElementaryTypeName",
                        "src": "3856:4:8"
                      }
                    ],
                    "id": 3728,
                    "name": "VariableDeclaration",
                    "src": "3856:23:8"
                  }
                ],
                "id": 3729,
                "name": "ParameterList",
                "src": "3822:58:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3730,
                "name": "ParameterList",
                "src": "3890:0:8"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 3731,
                            "name": "Identifier",
                            "src": "3900:7:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3837,
                                  "type": "function (uint256,address) view returns (bool)",
                                  "value": "canVote"
                                },
                                "id": 3732,
                                "name": "Identifier",
                                "src": "3908:7:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3724,
                                  "type": "uint256",
                                  "value": "_voteId"
                                },
                                "id": 3733,
                                "name": "Identifier",
                                "src": "3916:7:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12590,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 3734,
                                    "name": "Identifier",
                                    "src": "3925:3:8"
                                  }
                                ],
                                "id": 3735,
                                "name": "MemberAccess",
                                "src": "3925:10:8"
                              }
                            ],
                            "id": 3736,
                            "name": "FunctionCall",
                            "src": "3908:28:8"
                          }
                        ],
                        "id": 3737,
                        "name": "FunctionCall",
                        "src": "3900:37:8"
                      }
                    ],
                    "id": 3738,
                    "name": "ExpressionStatement",
                    "src": "3900:37:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4227,
                              "type": "function (uint256,bool,address,bool)",
                              "value": "_vote"
                            },
                            "id": 3739,
                            "name": "Identifier",
                            "src": "3947:5:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3724,
                              "type": "uint256",
                              "value": "_voteId"
                            },
                            "id": 3740,
                            "name": "Identifier",
                            "src": "3966:7:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3726,
                              "type": "bool",
                              "value": "_supports"
                            },
                            "id": 3741,
                            "name": "Identifier",
                            "src": "3987:9:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12590,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 3742,
                                "name": "Identifier",
                                "src": "4010:3:8"
                              }
                            ],
                            "id": 3743,
                            "name": "MemberAccess",
                            "src": "4010:10:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3728,
                              "type": "bool",
                              "value": "_executesIfDecided"
                            },
                            "id": 3744,
                            "name": "Identifier",
                            "src": "4034:18:8"
                          }
                        ],
                        "id": 3745,
                        "name": "FunctionCall",
                        "src": "3947:115:8"
                      }
                    ],
                    "id": 3746,
                    "name": "ExpressionStatement",
                    "src": "3947:115:8"
                  }
                ],
                "id": 3747,
                "name": "Block",
                "src": "3890:179:8"
              }
            ],
            "id": 3748,
            "name": "FunctionDefinition",
            "src": "3809:260:8"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "executeVote",
              "payable": false,
              "scope": 4339,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_voteId",
                      "scope": 3764,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3749,
                        "name": "ElementaryTypeName",
                        "src": "4195:7:8"
                      }
                    ],
                    "id": 3750,
                    "name": "VariableDeclaration",
                    "src": "4195:15:8"
                  }
                ],
                "id": 3751,
                "name": "ParameterList",
                "src": "4194:17:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3752,
                "name": "ParameterList",
                "src": "4221:0:8"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 3753,
                            "name": "Identifier",
                            "src": "4231:7:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3905,
                                  "type": "function (uint256) view returns (bool)",
                                  "value": "canExecute"
                                },
                                "id": 3754,
                                "name": "Identifier",
                                "src": "4239:10:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3750,
                                  "type": "uint256",
                                  "value": "_voteId"
                                },
                                "id": 3755,
                                "name": "Identifier",
                                "src": "4250:7:8"
                              }
                            ],
                            "id": 3756,
                            "name": "FunctionCall",
                            "src": "4239:19:8"
                          }
                        ],
                        "id": 3757,
                        "name": "FunctionCall",
                        "src": "4231:28:8"
                      }
                    ],
                    "id": 3758,
                    "name": "ExpressionStatement",
                    "src": "4231:28:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4267,
                              "type": "function (uint256)",
                              "value": "_executeVote"
                            },
                            "id": 3759,
                            "name": "Identifier",
                            "src": "4269:12:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3750,
                              "type": "uint256",
                              "value": "_voteId"
                            },
                            "id": 3760,
                            "name": "Identifier",
                            "src": "4282:7:8"
                          }
                        ],
                        "id": 3761,
                        "name": "FunctionCall",
                        "src": "4269:21:8"
                      }
                    ],
                    "id": 3762,
                    "name": "ExpressionStatement",
                    "src": "4269:21:8"
                  }
                ],
                "id": 3763,
                "name": "Block",
                "src": "4221:76:8"
              }
            ],
            "id": 3764,
            "name": "FunctionDefinition",
            "src": "4174:123:8"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "isForwarder",
              "payable": false,
              "scope": 4339,
              "stateMutability": "pure",
              "superFunction": 7202,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3765,
                "name": "ParameterList",
                "src": "4323:2:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3772,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3766,
                        "name": "ElementaryTypeName",
                        "src": "4347:4:8"
                      }
                    ],
                    "id": 3767,
                    "name": "VariableDeclaration",
                    "src": "4347:4:8"
                  }
                ],
                "id": 3768,
                "name": "ParameterList",
                "src": "4346:6:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3768
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 3769,
                        "name": "Literal",
                        "src": "4370:4:8"
                      }
                    ],
                    "id": 3770,
                    "name": "Return",
                    "src": "4363:11:8"
                  }
                ],
                "id": 3771,
                "name": "Block",
                "src": "4353:28:8"
              }
            ],
            "id": 3772,
            "name": "FunctionDefinition",
            "src": "4303:78:8"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "forward",
              "payable": false,
              "scope": 4339,
              "stateMutability": "nonpayable",
              "superFunction": 7216,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_evmScript",
                      "scope": 3791,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 3773,
                        "name": "ElementaryTypeName",
                        "src": "4510:5:8"
                      }
                    ],
                    "id": 3774,
                    "name": "VariableDeclaration",
                    "src": "4510:16:8"
                  }
                ],
                "id": 3775,
                "name": "ParameterList",
                "src": "4509:18:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3776,
                "name": "ParameterList",
                "src": "4535:0:8"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 3777,
                            "name": "Identifier",
                            "src": "4545:7:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    3808
                                  ],
                                  "referencedDeclaration": 3808,
                                  "type": "function (address,bytes memory) view returns (bool)",
                                  "value": "canForward"
                                },
                                "id": 3778,
                                "name": "Identifier",
                                "src": "4553:10:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12590,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 3779,
                                    "name": "Identifier",
                                    "src": "4564:3:8"
                                  }
                                ],
                                "id": 3780,
                                "name": "MemberAccess",
                                "src": "4564:10:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3774,
                                  "type": "bytes memory",
                                  "value": "_evmScript"
                                },
                                "id": 3781,
                                "name": "Identifier",
                                "src": "4576:10:8"
                              }
                            ],
                            "id": 3782,
                            "name": "FunctionCall",
                            "src": "4553:34:8"
                          }
                        ],
                        "id": 3783,
                        "name": "FunctionCall",
                        "src": "4545:43:8"
                      }
                    ],
                    "id": 3784,
                    "name": "ExpressionStatement",
                    "src": "4545:43:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4111,
                              "type": "function (bytes memory,string memory) returns (uint256)",
                              "value": "_newVote"
                            },
                            "id": 3785,
                            "name": "Identifier",
                            "src": "4598:8:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3774,
                              "type": "bytes memory",
                              "value": "_evmScript"
                            },
                            "id": 3786,
                            "name": "Identifier",
                            "src": "4607:10:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"\"",
                              "value": ""
                            },
                            "id": 3787,
                            "name": "Literal",
                            "src": "4619:2:8"
                          }
                        ],
                        "id": 3788,
                        "name": "FunctionCall",
                        "src": "4598:24:8"
                      }
                    ],
                    "id": 3789,
                    "name": "ExpressionStatement",
                    "src": "4598:24:8"
                  }
                ],
                "id": 3790,
                "name": "Block",
                "src": "4535:94:8"
              }
            ],
            "id": 3791,
            "name": "FunctionDefinition",
            "src": "4493:136:8"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "canForward",
              "payable": false,
              "scope": 4339,
              "stateMutability": "view",
              "superFunction": 7211,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_sender",
                      "scope": 3808,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3792,
                        "name": "ElementaryTypeName",
                        "src": "4655:7:8"
                      }
                    ],
                    "id": 3793,
                    "name": "VariableDeclaration",
                    "src": "4655:15:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_evmCallScript",
                      "scope": 3808,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 3794,
                        "name": "ElementaryTypeName",
                        "src": "4672:5:8"
                      }
                    ],
                    "id": 3795,
                    "name": "VariableDeclaration",
                    "src": "4672:20:8"
                  }
                ],
                "id": 3796,
                "name": "ParameterList",
                "src": "4654:39:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3808,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3797,
                        "name": "ElementaryTypeName",
                        "src": "4715:4:8"
                      }
                    ],
                    "id": 3798,
                    "name": "VariableDeclaration",
                    "src": "4715:4:8"
                  }
                ],
                "id": 3799,
                "name": "ParameterList",
                "src": "4714:6:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3799
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6967,
                              "type": "function (address,bytes32,uint256[] memory) view returns (bool)",
                              "value": "canPerform"
                            },
                            "id": 3800,
                            "name": "Identifier",
                            "src": "4738:10:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3793,
                              "type": "address",
                              "value": "_sender"
                            },
                            "id": 3801,
                            "name": "Identifier",
                            "src": "4749:7:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3555,
                              "type": "bytes32",
                              "value": "CREATE_VOTES_ROLE"
                            },
                            "id": 3802,
                            "name": "Identifier",
                            "src": "4758:17:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256[] memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "overloadedDeclarations": [
                                    5519,
                                    5534,
                                    5554,
                                    5569,
                                    5589,
                                    5610,
                                    5630,
                                    5659,
                                    5684,
                                    5709,
                                    5732,
                                    5763,
                                    5802,
                                    5849,
                                    5904
                                  ],
                                  "referencedDeclaration": 5519,
                                  "type": "function () pure returns (uint256[] memory)",
                                  "value": "arr"
                                },
                                "id": 3803,
                                "name": "Identifier",
                                "src": "4777:3:8"
                              }
                            ],
                            "id": 3804,
                            "name": "FunctionCall",
                            "src": "4777:5:8"
                          }
                        ],
                        "id": 3805,
                        "name": "FunctionCall",
                        "src": "4738:45:8"
                      }
                    ],
                    "id": 3806,
                    "name": "Return",
                    "src": "4731:52:8"
                  }
                ],
                "id": 3807,
                "name": "Block",
                "src": "4721:69:8"
              }
            ],
            "id": 3808,
            "name": "FunctionDefinition",
            "src": "4635:155:8"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "canVote",
              "payable": false,
              "scope": 4339,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_voteId",
                      "scope": 3837,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3809,
                        "name": "ElementaryTypeName",
                        "src": "4813:7:8"
                      }
                    ],
                    "id": 3810,
                    "name": "VariableDeclaration",
                    "src": "4813:15:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_voter",
                      "scope": 3837,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3811,
                        "name": "ElementaryTypeName",
                        "src": "4830:7:8"
                      }
                    ],
                    "id": 3812,
                    "name": "VariableDeclaration",
                    "src": "4830:14:8"
                  }
                ],
                "id": 3813,
                "name": "ParameterList",
                "src": "4812:33:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3837,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3814,
                        "name": "ElementaryTypeName",
                        "src": "4867:4:8"
                      }
                    ],
                    "id": 3815,
                    "name": "VariableDeclaration",
                    "src": "4867:4:8"
                  }
                ],
                "id": 3816,
                "name": "ParameterList",
                "src": "4866:6:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        3818
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "vote",
                          "scope": 3837,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct Voting.Vote storage pointer",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Vote",
                              "referencedDeclaration": 3589,
                              "type": "struct Voting.Vote storage pointer"
                            },
                            "id": 3817,
                            "name": "UserDefinedTypeName",
                            "src": "4883:4:8"
                          }
                        ],
                        "id": 3818,
                        "name": "VariableDeclaration",
                        "src": "4883:17:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct Voting.Vote storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3592,
                              "type": "struct Voting.Vote storage ref[] storage ref",
                              "value": "votes"
                            },
                            "id": 3819,
                            "name": "Identifier",
                            "src": "4903:5:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3810,
                              "type": "uint256",
                              "value": "_voteId"
                            },
                            "id": 3820,
                            "name": "Identifier",
                            "src": "4909:7:8"
                          }
                        ],
                        "id": 3821,
                        "name": "IndexAccess",
                        "src": "4903:14:8"
                      }
                    ],
                    "id": 3822,
                    "name": "VariableDeclarationStatement",
                    "src": "4883:34:8"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 3816
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "&&",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_Vote_$3589_storage_ptr",
                                      "typeString": "struct Voting.Vote storage pointer"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4290,
                                  "type": "function (struct Voting.Vote storage pointer) view returns (bool)",
                                  "value": "_isVoteOpen"
                                },
                                "id": 3823,
                                "name": "Identifier",
                                "src": "4935:11:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3818,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 3824,
                                "name": "Identifier",
                                "src": "4947:4:8"
                              }
                            ],
                            "id": 3825,
                            "name": "FunctionCall",
                            "src": "4935:17:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "balanceOfAt",
                                      "referencedDeclaration": 11324,
                                      "type": "function (address,uint256) view external returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3539,
                                          "type": "contract MiniMeToken",
                                          "value": "token"
                                        },
                                        "id": 3826,
                                        "name": "Identifier",
                                        "src": "4956:5:8"
                                      }
                                    ],
                                    "id": 3827,
                                    "name": "MemberAccess",
                                    "src": "4956:17:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3812,
                                      "type": "address",
                                      "value": "_voter"
                                    },
                                    "id": 3828,
                                    "name": "Identifier",
                                    "src": "4974:6:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "snapshotBlock",
                                      "referencedDeclaration": 3570,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3818,
                                          "type": "struct Voting.Vote storage pointer",
                                          "value": "vote"
                                        },
                                        "id": 3829,
                                        "name": "Identifier",
                                        "src": "4982:4:8"
                                      }
                                    ],
                                    "id": 3830,
                                    "name": "MemberAccess",
                                    "src": "4982:18:8"
                                  }
                                ],
                                "id": 3831,
                                "name": "FunctionCall",
                                "src": "4956:45:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 3832,
                                "name": "Literal",
                                "src": "5004:1:8"
                              }
                            ],
                            "id": 3833,
                            "name": "BinaryOperation",
                            "src": "4956:49:8"
                          }
                        ],
                        "id": 3834,
                        "name": "BinaryOperation",
                        "src": "4935:70:8"
                      }
                    ],
                    "id": 3835,
                    "name": "Return",
                    "src": "4928:77:8"
                  }
                ],
                "id": 3836,
                "name": "Block",
                "src": "4873:139:8"
              }
            ],
            "id": 3837,
            "name": "FunctionDefinition",
            "src": "4796:216:8"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "canExecute",
              "payable": false,
              "scope": 4339,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_voteId",
                      "scope": 3905,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3838,
                        "name": "ElementaryTypeName",
                        "src": "5038:7:8"
                      }
                    ],
                    "id": 3839,
                    "name": "VariableDeclaration",
                    "src": "5038:15:8"
                  }
                ],
                "id": 3840,
                "name": "ParameterList",
                "src": "5037:17:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3905,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3841,
                        "name": "ElementaryTypeName",
                        "src": "5076:4:8"
                      }
                    ],
                    "id": 3842,
                    "name": "VariableDeclaration",
                    "src": "5076:4:8"
                  }
                ],
                "id": 3843,
                "name": "ParameterList",
                "src": "5075:6:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        3845
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "vote",
                          "scope": 3905,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct Voting.Vote storage pointer",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Vote",
                              "referencedDeclaration": 3589,
                              "type": "struct Voting.Vote storage pointer"
                            },
                            "id": 3844,
                            "name": "UserDefinedTypeName",
                            "src": "5092:4:8"
                          }
                        ],
                        "id": 3845,
                        "name": "VariableDeclaration",
                        "src": "5092:17:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct Voting.Vote storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3592,
                              "type": "struct Voting.Vote storage ref[] storage ref",
                              "value": "votes"
                            },
                            "id": 3846,
                            "name": "Identifier",
                            "src": "5112:5:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3839,
                              "type": "uint256",
                              "value": "_voteId"
                            },
                            "id": 3847,
                            "name": "Identifier",
                            "src": "5118:7:8"
                          }
                        ],
                        "id": 3848,
                        "name": "IndexAccess",
                        "src": "5112:14:8"
                      }
                    ],
                    "id": 3849,
                    "name": "VariableDeclarationStatement",
                    "src": "5092:34:8"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "executed",
                          "referencedDeclaration": 3584,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3845,
                              "type": "struct Voting.Vote storage pointer",
                              "value": "vote"
                            },
                            "id": 3850,
                            "name": "Identifier",
                            "src": "5141:4:8"
                          }
                        ],
                        "id": 3851,
                        "name": "MemberAccess",
                        "src": "5141:13:8"
                      },
                      {
                        "attributes": {
                          "functionReturnParameters": 3843
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "66616c7365",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "bool",
                              "type": "bool",
                              "value": "false"
                            },
                            "id": 3852,
                            "name": "Literal",
                            "src": "5175:5:8"
                          }
                        ],
                        "id": 3853,
                        "name": "Return",
                        "src": "5168:12:8"
                      }
                    ],
                    "id": 3854,
                    "name": "IfStatement",
                    "src": "5137:43:8"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4338,
                              "type": "function (uint256,uint256,uint256) pure returns (bool)",
                              "value": "_isValuePct"
                            },
                            "id": 3855,
                            "name": "Identifier",
                            "src": "5232:11:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "yea",
                              "referencedDeclaration": 3574,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3845,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 3856,
                                "name": "Identifier",
                                "src": "5244:4:8"
                              }
                            ],
                            "id": 3857,
                            "name": "MemberAccess",
                            "src": "5244:8:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "totalVoters",
                              "referencedDeclaration": 3578,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3845,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 3858,
                                "name": "Identifier",
                                "src": "5254:4:8"
                              }
                            ],
                            "id": 3859,
                            "name": "MemberAccess",
                            "src": "5254:16:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3541,
                              "type": "uint256",
                              "value": "supportRequiredPct"
                            },
                            "id": 3860,
                            "name": "Identifier",
                            "src": "5272:18:8"
                          }
                        ],
                        "id": 3861,
                        "name": "FunctionCall",
                        "src": "5232:59:8"
                      },
                      {
                        "attributes": {
                          "functionReturnParameters": 3843
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "74727565",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "bool",
                              "type": "bool",
                              "value": "true"
                            },
                            "id": 3862,
                            "name": "Literal",
                            "src": "5312:4:8"
                          }
                        ],
                        "id": 3863,
                        "name": "Return",
                        "src": "5305:11:8"
                      }
                    ],
                    "id": 3864,
                    "name": "IfStatement",
                    "src": "5228:88:8"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        3866
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "totalVotes",
                          "scope": 3905,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 3865,
                            "name": "ElementaryTypeName",
                            "src": "5327:7:8"
                          }
                        ],
                        "id": 3866,
                        "name": "VariableDeclaration",
                        "src": "5327:18:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "add",
                              "referencedDeclaration": 12065,
                              "type": "function (uint256,uint256) pure returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "yea",
                                  "referencedDeclaration": 3574,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3845,
                                      "type": "struct Voting.Vote storage pointer",
                                      "value": "vote"
                                    },
                                    "id": 3867,
                                    "name": "Identifier",
                                    "src": "5348:4:8"
                                  }
                                ],
                                "id": 3868,
                                "name": "MemberAccess",
                                "src": "5348:8:8"
                              }
                            ],
                            "id": 3869,
                            "name": "MemberAccess",
                            "src": "5348:12:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "nay",
                              "referencedDeclaration": 3576,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3845,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 3870,
                                "name": "Identifier",
                                "src": "5361:4:8"
                              }
                            ],
                            "id": 3871,
                            "name": "MemberAccess",
                            "src": "5361:8:8"
                          }
                        ],
                        "id": 3872,
                        "name": "FunctionCall",
                        "src": "5348:22:8"
                      }
                    ],
                    "id": 3873,
                    "name": "VariableDeclarationStatement",
                    "src": "5327:43:8"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Vote_$3589_storage_ptr",
                                  "typeString": "struct Voting.Vote storage pointer"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4290,
                              "type": "function (struct Voting.Vote storage pointer) view returns (bool)",
                              "value": "_isVoteOpen"
                            },
                            "id": 3874,
                            "name": "Identifier",
                            "src": "5408:11:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3845,
                              "type": "struct Voting.Vote storage pointer",
                              "value": "vote"
                            },
                            "id": 3875,
                            "name": "Identifier",
                            "src": "5420:4:8"
                          }
                        ],
                        "id": 3876,
                        "name": "FunctionCall",
                        "src": "5408:17:8"
                      },
                      {
                        "attributes": {
                          "functionReturnParameters": 3843
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "66616c7365",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "bool",
                              "type": "bool",
                              "value": "false"
                            },
                            "id": 3877,
                            "name": "Literal",
                            "src": "5446:5:8"
                          }
                        ],
                        "id": 3878,
                        "name": "Return",
                        "src": "5439:12:8"
                      }
                    ],
                    "id": 3879,
                    "name": "IfStatement",
                    "src": "5404:47:8"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!",
                          "prefix": true,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4338,
                                  "type": "function (uint256,uint256,uint256) pure returns (bool)",
                                  "value": "_isValuePct"
                                },
                                "id": 3880,
                                "name": "Identifier",
                                "src": "5490:11:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "yea",
                                  "referencedDeclaration": 3574,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3845,
                                      "type": "struct Voting.Vote storage pointer",
                                      "value": "vote"
                                    },
                                    "id": 3881,
                                    "name": "Identifier",
                                    "src": "5502:4:8"
                                  }
                                ],
                                "id": 3882,
                                "name": "MemberAccess",
                                "src": "5502:8:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3866,
                                  "type": "uint256",
                                  "value": "totalVotes"
                                },
                                "id": 3883,
                                "name": "Identifier",
                                "src": "5512:10:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3541,
                                  "type": "uint256",
                                  "value": "supportRequiredPct"
                                },
                                "id": 3884,
                                "name": "Identifier",
                                "src": "5524:18:8"
                              }
                            ],
                            "id": 3885,
                            "name": "FunctionCall",
                            "src": "5490:53:8"
                          }
                        ],
                        "id": 3886,
                        "name": "UnaryOperation",
                        "src": "5489:54:8"
                      },
                      {
                        "attributes": {
                          "functionReturnParameters": 3843
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "66616c7365",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "bool",
                              "type": "bool",
                              "value": "false"
                            },
                            "id": 3887,
                            "name": "Literal",
                            "src": "5564:5:8"
                          }
                        ],
                        "id": 3888,
                        "name": "Return",
                        "src": "5557:12:8"
                      }
                    ],
                    "id": 3889,
                    "name": "IfStatement",
                    "src": "5485:84:8"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!",
                          "prefix": true,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4338,
                                  "type": "function (uint256,uint256,uint256) pure returns (bool)",
                                  "value": "_isValuePct"
                                },
                                "id": 3890,
                                "name": "Identifier",
                                "src": "5611:11:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "yea",
                                  "referencedDeclaration": 3574,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3845,
                                      "type": "struct Voting.Vote storage pointer",
                                      "value": "vote"
                                    },
                                    "id": 3891,
                                    "name": "Identifier",
                                    "src": "5623:4:8"
                                  }
                                ],
                                "id": 3892,
                                "name": "MemberAccess",
                                "src": "5623:8:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "totalVoters",
                                  "referencedDeclaration": 3578,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3845,
                                      "type": "struct Voting.Vote storage pointer",
                                      "value": "vote"
                                    },
                                    "id": 3893,
                                    "name": "Identifier",
                                    "src": "5633:4:8"
                                  }
                                ],
                                "id": 3894,
                                "name": "MemberAccess",
                                "src": "5633:16:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "minAcceptQuorumPct",
                                  "referencedDeclaration": 3572,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3845,
                                      "type": "struct Voting.Vote storage pointer",
                                      "value": "vote"
                                    },
                                    "id": 3895,
                                    "name": "Identifier",
                                    "src": "5651:4:8"
                                  }
                                ],
                                "id": 3896,
                                "name": "MemberAccess",
                                "src": "5651:23:8"
                              }
                            ],
                            "id": 3897,
                            "name": "FunctionCall",
                            "src": "5611:64:8"
                          }
                        ],
                        "id": 3898,
                        "name": "UnaryOperation",
                        "src": "5610:65:8"
                      },
                      {
                        "attributes": {
                          "functionReturnParameters": 3843
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "66616c7365",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "bool",
                              "type": "bool",
                              "value": "false"
                            },
                            "id": 3899,
                            "name": "Literal",
                            "src": "5696:5:8"
                          }
                        ],
                        "id": 3900,
                        "name": "Return",
                        "src": "5689:12:8"
                      }
                    ],
                    "id": 3901,
                    "name": "IfStatement",
                    "src": "5606:95:8"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 3843
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 3902,
                        "name": "Literal",
                        "src": "5719:4:8"
                      }
                    ],
                    "id": 3903,
                    "name": "Return",
                    "src": "5712:11:8"
                  }
                ],
                "id": 3904,
                "name": "Block",
                "src": "5082:648:8"
              }
            ],
            "id": 3905,
            "name": "FunctionDefinition",
            "src": "5018:712:8"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getVote",
              "payable": false,
              "scope": 4339,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_voteId",
                      "scope": 3988,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3906,
                        "name": "ElementaryTypeName",
                        "src": "5753:7:8"
                      }
                    ],
                    "id": 3907,
                    "name": "VariableDeclaration",
                    "src": "5753:15:8"
                  }
                ],
                "id": 3908,
                "name": "ParameterList",
                "src": "5752:17:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "open",
                      "scope": 3988,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3909,
                        "name": "ElementaryTypeName",
                        "src": "5791:4:8"
                      }
                    ],
                    "id": 3910,
                    "name": "VariableDeclaration",
                    "src": "5791:9:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "executed",
                      "scope": 3988,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3911,
                        "name": "ElementaryTypeName",
                        "src": "5802:4:8"
                      }
                    ],
                    "id": 3912,
                    "name": "VariableDeclaration",
                    "src": "5802:13:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "creator",
                      "scope": 3988,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3913,
                        "name": "ElementaryTypeName",
                        "src": "5817:7:8"
                      }
                    ],
                    "id": 3914,
                    "name": "VariableDeclaration",
                    "src": "5817:15:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "startDate",
                      "scope": 3988,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 3915,
                        "name": "ElementaryTypeName",
                        "src": "5834:6:8"
                      }
                    ],
                    "id": 3916,
                    "name": "VariableDeclaration",
                    "src": "5834:16:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "snapshotBlock",
                      "scope": 3988,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3917,
                        "name": "ElementaryTypeName",
                        "src": "5852:7:8"
                      }
                    ],
                    "id": 3918,
                    "name": "VariableDeclaration",
                    "src": "5852:21:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "minAcceptQuorum",
                      "scope": 3988,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3919,
                        "name": "ElementaryTypeName",
                        "src": "5875:7:8"
                      }
                    ],
                    "id": 3920,
                    "name": "VariableDeclaration",
                    "src": "5875:23:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "yea",
                      "scope": 3988,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3921,
                        "name": "ElementaryTypeName",
                        "src": "5900:7:8"
                      }
                    ],
                    "id": 3922,
                    "name": "VariableDeclaration",
                    "src": "5900:11:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "nay",
                      "scope": 3988,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3923,
                        "name": "ElementaryTypeName",
                        "src": "5913:7:8"
                      }
                    ],
                    "id": 3924,
                    "name": "VariableDeclaration",
                    "src": "5913:11:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "totalVoters",
                      "scope": 3988,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3925,
                        "name": "ElementaryTypeName",
                        "src": "5926:7:8"
                      }
                    ],
                    "id": 3926,
                    "name": "VariableDeclaration",
                    "src": "5926:19:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "script",
                      "scope": 3988,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 3927,
                        "name": "ElementaryTypeName",
                        "src": "5947:5:8"
                      }
                    ],
                    "id": 3928,
                    "name": "VariableDeclaration",
                    "src": "5947:12:8"
                  }
                ],
                "id": 3929,
                "name": "ParameterList",
                "src": "5790:170:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        3931
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "vote",
                          "scope": 3988,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct Voting.Vote storage pointer",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Vote",
                              "referencedDeclaration": 3589,
                              "type": "struct Voting.Vote storage pointer"
                            },
                            "id": 3930,
                            "name": "UserDefinedTypeName",
                            "src": "5971:4:8"
                          }
                        ],
                        "id": 3931,
                        "name": "VariableDeclaration",
                        "src": "5971:17:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct Voting.Vote storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3592,
                              "type": "struct Voting.Vote storage ref[] storage ref",
                              "value": "votes"
                            },
                            "id": 3932,
                            "name": "Identifier",
                            "src": "5991:5:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3907,
                              "type": "uint256",
                              "value": "_voteId"
                            },
                            "id": 3933,
                            "name": "Identifier",
                            "src": "5997:7:8"
                          }
                        ],
                        "id": 3934,
                        "name": "IndexAccess",
                        "src": "5991:14:8"
                      }
                    ],
                    "id": 3935,
                    "name": "VariableDeclarationStatement",
                    "src": "5971:34:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3910,
                              "type": "bool",
                              "value": "open"
                            },
                            "id": 3936,
                            "name": "Identifier",
                            "src": "6016:4:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_Vote_$3589_storage_ptr",
                                      "typeString": "struct Voting.Vote storage pointer"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4290,
                                  "type": "function (struct Voting.Vote storage pointer) view returns (bool)",
                                  "value": "_isVoteOpen"
                                },
                                "id": 3937,
                                "name": "Identifier",
                                "src": "6023:11:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3931,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 3938,
                                "name": "Identifier",
                                "src": "6035:4:8"
                              }
                            ],
                            "id": 3939,
                            "name": "FunctionCall",
                            "src": "6023:17:8"
                          }
                        ],
                        "id": 3940,
                        "name": "Assignment",
                        "src": "6016:24:8"
                      }
                    ],
                    "id": 3941,
                    "name": "ExpressionStatement",
                    "src": "6016:24:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3912,
                              "type": "bool",
                              "value": "executed"
                            },
                            "id": 3942,
                            "name": "Identifier",
                            "src": "6050:8:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "executed",
                              "referencedDeclaration": 3584,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3931,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 3943,
                                "name": "Identifier",
                                "src": "6061:4:8"
                              }
                            ],
                            "id": 3944,
                            "name": "MemberAccess",
                            "src": "6061:13:8"
                          }
                        ],
                        "id": 3945,
                        "name": "Assignment",
                        "src": "6050:24:8"
                      }
                    ],
                    "id": 3946,
                    "name": "ExpressionStatement",
                    "src": "6050:24:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3914,
                              "type": "address",
                              "value": "creator"
                            },
                            "id": 3947,
                            "name": "Identifier",
                            "src": "6084:7:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "creator",
                              "referencedDeclaration": 3566,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3931,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 3948,
                                "name": "Identifier",
                                "src": "6094:4:8"
                              }
                            ],
                            "id": 3949,
                            "name": "MemberAccess",
                            "src": "6094:12:8"
                          }
                        ],
                        "id": 3950,
                        "name": "Assignment",
                        "src": "6084:22:8"
                      }
                    ],
                    "id": 3951,
                    "name": "ExpressionStatement",
                    "src": "6084:22:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint64"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3916,
                              "type": "uint64",
                              "value": "startDate"
                            },
                            "id": 3952,
                            "name": "Identifier",
                            "src": "6116:9:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "startDate",
                              "referencedDeclaration": 3568,
                              "type": "uint64"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3931,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 3953,
                                "name": "Identifier",
                                "src": "6128:4:8"
                              }
                            ],
                            "id": 3954,
                            "name": "MemberAccess",
                            "src": "6128:14:8"
                          }
                        ],
                        "id": 3955,
                        "name": "Assignment",
                        "src": "6116:26:8"
                      }
                    ],
                    "id": 3956,
                    "name": "ExpressionStatement",
                    "src": "6116:26:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3918,
                              "type": "uint256",
                              "value": "snapshotBlock"
                            },
                            "id": 3957,
                            "name": "Identifier",
                            "src": "6152:13:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "snapshotBlock",
                              "referencedDeclaration": 3570,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3931,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 3958,
                                "name": "Identifier",
                                "src": "6168:4:8"
                              }
                            ],
                            "id": 3959,
                            "name": "MemberAccess",
                            "src": "6168:18:8"
                          }
                        ],
                        "id": 3960,
                        "name": "Assignment",
                        "src": "6152:34:8"
                      }
                    ],
                    "id": 3961,
                    "name": "ExpressionStatement",
                    "src": "6152:34:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3920,
                              "type": "uint256",
                              "value": "minAcceptQuorum"
                            },
                            "id": 3962,
                            "name": "Identifier",
                            "src": "6196:15:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "minAcceptQuorumPct",
                              "referencedDeclaration": 3572,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3931,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 3963,
                                "name": "Identifier",
                                "src": "6214:4:8"
                              }
                            ],
                            "id": 3964,
                            "name": "MemberAccess",
                            "src": "6214:23:8"
                          }
                        ],
                        "id": 3965,
                        "name": "Assignment",
                        "src": "6196:41:8"
                      }
                    ],
                    "id": 3966,
                    "name": "ExpressionStatement",
                    "src": "6196:41:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3922,
                              "type": "uint256",
                              "value": "yea"
                            },
                            "id": 3967,
                            "name": "Identifier",
                            "src": "6247:3:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "yea",
                              "referencedDeclaration": 3574,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3931,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 3968,
                                "name": "Identifier",
                                "src": "6253:4:8"
                              }
                            ],
                            "id": 3969,
                            "name": "MemberAccess",
                            "src": "6253:8:8"
                          }
                        ],
                        "id": 3970,
                        "name": "Assignment",
                        "src": "6247:14:8"
                      }
                    ],
                    "id": 3971,
                    "name": "ExpressionStatement",
                    "src": "6247:14:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3924,
                              "type": "uint256",
                              "value": "nay"
                            },
                            "id": 3972,
                            "name": "Identifier",
                            "src": "6271:3:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "nay",
                              "referencedDeclaration": 3576,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3931,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 3973,
                                "name": "Identifier",
                                "src": "6277:4:8"
                              }
                            ],
                            "id": 3974,
                            "name": "MemberAccess",
                            "src": "6277:8:8"
                          }
                        ],
                        "id": 3975,
                        "name": "Assignment",
                        "src": "6271:14:8"
                      }
                    ],
                    "id": 3976,
                    "name": "ExpressionStatement",
                    "src": "6271:14:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3926,
                              "type": "uint256",
                              "value": "totalVoters"
                            },
                            "id": 3977,
                            "name": "Identifier",
                            "src": "6295:11:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "totalVoters",
                              "referencedDeclaration": 3578,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3931,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 3978,
                                "name": "Identifier",
                                "src": "6309:4:8"
                              }
                            ],
                            "id": 3979,
                            "name": "MemberAccess",
                            "src": "6309:16:8"
                          }
                        ],
                        "id": 3980,
                        "name": "Assignment",
                        "src": "6295:30:8"
                      }
                    ],
                    "id": 3981,
                    "name": "ExpressionStatement",
                    "src": "6295:30:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes memory"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3928,
                              "type": "bytes memory",
                              "value": "script"
                            },
                            "id": 3982,
                            "name": "Identifier",
                            "src": "6335:6:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "executionScript",
                              "referencedDeclaration": 3582,
                              "type": "bytes storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3931,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 3983,
                                "name": "Identifier",
                                "src": "6344:4:8"
                              }
                            ],
                            "id": 3984,
                            "name": "MemberAccess",
                            "src": "6344:20:8"
                          }
                        ],
                        "id": 3985,
                        "name": "Assignment",
                        "src": "6335:29:8"
                      }
                    ],
                    "id": 3986,
                    "name": "ExpressionStatement",
                    "src": "6335:29:8"
                  }
                ],
                "id": 3987,
                "name": "Block",
                "src": "5961:410:8"
              }
            ],
            "id": 3988,
            "name": "FunctionDefinition",
            "src": "5736:635:8"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getVoteMetadata",
              "payable": false,
              "scope": 4339,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_voteId",
                      "scope": 4001,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3989,
                        "name": "ElementaryTypeName",
                        "src": "6402:7:8"
                      }
                    ],
                    "id": 3990,
                    "name": "VariableDeclaration",
                    "src": "6402:15:8"
                  }
                ],
                "id": 3991,
                "name": "ParameterList",
                "src": "6401:17:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4001,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 3992,
                        "name": "ElementaryTypeName",
                        "src": "6440:6:8"
                      }
                    ],
                    "id": 3993,
                    "name": "VariableDeclaration",
                    "src": "6440:6:8"
                  }
                ],
                "id": 3994,
                "name": "ParameterList",
                "src": "6439:8:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3994
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "metadata",
                          "referencedDeclaration": 3580,
                          "type": "string storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "struct Voting.Vote storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3592,
                                  "type": "struct Voting.Vote storage ref[] storage ref",
                                  "value": "votes"
                                },
                                "id": 3995,
                                "name": "Identifier",
                                "src": "6465:5:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3990,
                                  "type": "uint256",
                                  "value": "_voteId"
                                },
                                "id": 3996,
                                "name": "Identifier",
                                "src": "6471:7:8"
                              }
                            ],
                            "id": 3997,
                            "name": "IndexAccess",
                            "src": "6465:14:8"
                          }
                        ],
                        "id": 3998,
                        "name": "MemberAccess",
                        "src": "6465:23:8"
                      }
                    ],
                    "id": 3999,
                    "name": "Return",
                    "src": "6458:30:8"
                  }
                ],
                "id": 4000,
                "name": "Block",
                "src": "6448:47:8"
              }
            ],
            "id": 4001,
            "name": "FunctionDefinition",
            "src": "6377:118:8"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getVoterState",
              "payable": false,
              "scope": 4339,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_voteId",
                      "scope": 4018,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 4002,
                        "name": "ElementaryTypeName",
                        "src": "6524:7:8"
                      }
                    ],
                    "id": 4003,
                    "name": "VariableDeclaration",
                    "src": "6524:15:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_voter",
                      "scope": 4018,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4004,
                        "name": "ElementaryTypeName",
                        "src": "6541:7:8"
                      }
                    ],
                    "id": 4005,
                    "name": "VariableDeclaration",
                    "src": "6541:14:8"
                  }
                ],
                "id": 4006,
                "name": "ParameterList",
                "src": "6523:33:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4018,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "enum Voting.VoterState",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "VoterState",
                          "referencedDeclaration": 3564,
                          "type": "enum Voting.VoterState"
                        },
                        "id": 4007,
                        "name": "UserDefinedTypeName",
                        "src": "6578:10:8"
                      }
                    ],
                    "id": 4008,
                    "name": "VariableDeclaration",
                    "src": "6578:10:8"
                  }
                ],
                "id": 4009,
                "name": "ParameterList",
                "src": "6577:12:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 4009
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "enum Voting.VoterState"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "voters",
                              "referencedDeclaration": 3588,
                              "type": "mapping(address => enum Voting.VoterState)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct Voting.Vote storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3592,
                                      "type": "struct Voting.Vote storage ref[] storage ref",
                                      "value": "votes"
                                    },
                                    "id": 4010,
                                    "name": "Identifier",
                                    "src": "6607:5:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4003,
                                      "type": "uint256",
                                      "value": "_voteId"
                                    },
                                    "id": 4011,
                                    "name": "Identifier",
                                    "src": "6613:7:8"
                                  }
                                ],
                                "id": 4012,
                                "name": "IndexAccess",
                                "src": "6607:14:8"
                              }
                            ],
                            "id": 4013,
                            "name": "MemberAccess",
                            "src": "6607:21:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4005,
                              "type": "address",
                              "value": "_voter"
                            },
                            "id": 4014,
                            "name": "Identifier",
                            "src": "6629:6:8"
                          }
                        ],
                        "id": 4015,
                        "name": "IndexAccess",
                        "src": "6607:29:8"
                      }
                    ],
                    "id": 4016,
                    "name": "Return",
                    "src": "6600:36:8"
                  }
                ],
                "id": 4017,
                "name": "Block",
                "src": "6590:53:8"
              }
            ],
            "id": 4018,
            "name": "FunctionDefinition",
            "src": "6501:142:8"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "_newVote",
              "payable": false,
              "scope": 4339,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_executionScript",
                      "scope": 4111,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 4019,
                        "name": "ElementaryTypeName",
                        "src": "6667:5:8"
                      }
                    ],
                    "id": 4020,
                    "name": "VariableDeclaration",
                    "src": "6667:22:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_metadata",
                      "scope": 4111,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 4021,
                        "name": "ElementaryTypeName",
                        "src": "6691:6:8"
                      }
                    ],
                    "id": 4022,
                    "name": "VariableDeclaration",
                    "src": "6691:16:8"
                  }
                ],
                "id": 4023,
                "name": "ParameterList",
                "src": "6666:42:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "voteId",
                      "scope": 4111,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 4024,
                        "name": "ElementaryTypeName",
                        "src": "6727:7:8"
                      }
                    ],
                    "id": 4025,
                    "name": "VariableDeclaration",
                    "src": "6727:14:8"
                  }
                ],
                "id": 4026,
                "name": "ParameterList",
                "src": "6726:16:8"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4025,
                              "type": "uint256",
                              "value": "voteId"
                            },
                            "id": 4027,
                            "name": "Identifier",
                            "src": "6753:6:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "member_name": "length",
                                  "referencedDeclaration": null,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3592,
                                      "type": "struct Voting.Vote storage ref[] storage ref",
                                      "value": "votes"
                                    },
                                    "id": 4028,
                                    "name": "Identifier",
                                    "src": "6762:5:8"
                                  }
                                ],
                                "id": 4029,
                                "name": "MemberAccess",
                                "src": "6762:12:8"
                              }
                            ],
                            "id": 4030,
                            "name": "UnaryOperation",
                            "src": "6762:14:8"
                          }
                        ],
                        "id": 4031,
                        "name": "Assignment",
                        "src": "6753:23:8"
                      }
                    ],
                    "id": 4032,
                    "name": "ExpressionStatement",
                    "src": "6753:23:8"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        4034
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "vote",
                          "scope": 4111,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct Voting.Vote storage pointer",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Vote",
                              "referencedDeclaration": 3589,
                              "type": "struct Voting.Vote storage pointer"
                            },
                            "id": 4033,
                            "name": "UserDefinedTypeName",
                            "src": "6786:4:8"
                          }
                        ],
                        "id": 4034,
                        "name": "VariableDeclaration",
                        "src": "6786:17:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct Voting.Vote storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3592,
                              "type": "struct Voting.Vote storage ref[] storage ref",
                              "value": "votes"
                            },
                            "id": 4035,
                            "name": "Identifier",
                            "src": "6806:5:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4025,
                              "type": "uint256",
                              "value": "voteId"
                            },
                            "id": 4036,
                            "name": "Identifier",
                            "src": "6812:6:8"
                          }
                        ],
                        "id": 4037,
                        "name": "IndexAccess",
                        "src": "6806:13:8"
                      }
                    ],
                    "id": 4038,
                    "name": "VariableDeclarationStatement",
                    "src": "6786:33:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "executionScript",
                              "referencedDeclaration": 3582,
                              "type": "bytes storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4034,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 4039,
                                "name": "Identifier",
                                "src": "6829:4:8"
                              }
                            ],
                            "id": 4041,
                            "name": "MemberAccess",
                            "src": "6829:20:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4020,
                              "type": "bytes memory",
                              "value": "_executionScript"
                            },
                            "id": 4042,
                            "name": "Identifier",
                            "src": "6852:16:8"
                          }
                        ],
                        "id": 4043,
                        "name": "Assignment",
                        "src": "6829:39:8"
                      }
                    ],
                    "id": 4044,
                    "name": "ExpressionStatement",
                    "src": "6829:39:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "creator",
                              "referencedDeclaration": 3566,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4034,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 4045,
                                "name": "Identifier",
                                "src": "6878:4:8"
                              }
                            ],
                            "id": 4047,
                            "name": "MemberAccess",
                            "src": "6878:12:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12590,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 4048,
                                "name": "Identifier",
                                "src": "6893:3:8"
                              }
                            ],
                            "id": 4049,
                            "name": "MemberAccess",
                            "src": "6893:10:8"
                          }
                        ],
                        "id": 4050,
                        "name": "Assignment",
                        "src": "6878:25:8"
                      }
                    ],
                    "id": 4051,
                    "name": "ExpressionStatement",
                    "src": "6878:25:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint64"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "startDate",
                              "referencedDeclaration": 3568,
                              "type": "uint64"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4034,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 4052,
                                "name": "Identifier",
                                "src": "6913:4:8"
                              }
                            ],
                            "id": 4054,
                            "name": "MemberAccess",
                            "src": "6913:14:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint64",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint64)",
                                  "value": "uint64"
                                },
                                "id": 4055,
                                "name": "ElementaryTypeNameExpression",
                                "src": "6930:6:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12592,
                                  "type": "uint256",
                                  "value": "now"
                                },
                                "id": 4056,
                                "name": "Identifier",
                                "src": "6937:3:8"
                              }
                            ],
                            "id": 4057,
                            "name": "FunctionCall",
                            "src": "6930:11:8"
                          }
                        ],
                        "id": 4058,
                        "name": "Assignment",
                        "src": "6913:28:8"
                      }
                    ],
                    "id": 4059,
                    "name": "ExpressionStatement",
                    "src": "6913:28:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "string storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "metadata",
                              "referencedDeclaration": 3580,
                              "type": "string storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4034,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 4060,
                                "name": "Identifier",
                                "src": "6951:4:8"
                              }
                            ],
                            "id": 4062,
                            "name": "MemberAccess",
                            "src": "6951:13:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4022,
                              "type": "string memory",
                              "value": "_metadata"
                            },
                            "id": 4063,
                            "name": "Identifier",
                            "src": "6967:9:8"
                          }
                        ],
                        "id": 4064,
                        "name": "Assignment",
                        "src": "6951:25:8"
                      }
                    ],
                    "id": 4065,
                    "name": "ExpressionStatement",
                    "src": "6951:25:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "snapshotBlock",
                              "referencedDeclaration": 3570,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4034,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 4066,
                                "name": "Identifier",
                                "src": "6986:4:8"
                              }
                            ],
                            "id": 4068,
                            "name": "MemberAccess",
                            "src": "6986:18:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "-",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7260,
                                      "type": "function () view returns (uint256)",
                                      "value": "getBlockNumber"
                                    },
                                    "id": 4069,
                                    "name": "Identifier",
                                    "src": "7007:14:8"
                                  }
                                ],
                                "id": 4070,
                                "name": "FunctionCall",
                                "src": "7007:16:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 4071,
                                "name": "Literal",
                                "src": "7026:1:8"
                              }
                            ],
                            "id": 4072,
                            "name": "BinaryOperation",
                            "src": "7007:20:8"
                          }
                        ],
                        "id": 4073,
                        "name": "Assignment",
                        "src": "6986:41:8"
                      }
                    ],
                    "id": 4074,
                    "name": "ExpressionStatement",
                    "src": "6986:41:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "totalVoters",
                              "referencedDeclaration": 3578,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4034,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 4075,
                                "name": "Identifier",
                                "src": "7079:4:8"
                              }
                            ],
                            "id": 4077,
                            "name": "MemberAccess",
                            "src": "7079:16:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "totalSupplyAt",
                                  "referencedDeclaration": 11371,
                                  "type": "function (uint256) view external returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3539,
                                      "type": "contract MiniMeToken",
                                      "value": "token"
                                    },
                                    "id": 4078,
                                    "name": "Identifier",
                                    "src": "7098:5:8"
                                  }
                                ],
                                "id": 4079,
                                "name": "MemberAccess",
                                "src": "7098:19:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "snapshotBlock",
                                  "referencedDeclaration": 3570,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4034,
                                      "type": "struct Voting.Vote storage pointer",
                                      "value": "vote"
                                    },
                                    "id": 4080,
                                    "name": "Identifier",
                                    "src": "7118:4:8"
                                  }
                                ],
                                "id": 4081,
                                "name": "MemberAccess",
                                "src": "7118:18:8"
                              }
                            ],
                            "id": 4082,
                            "name": "FunctionCall",
                            "src": "7098:39:8"
                          }
                        ],
                        "id": 4083,
                        "name": "Assignment",
                        "src": "7079:58:8"
                      }
                    ],
                    "id": 4084,
                    "name": "ExpressionStatement",
                    "src": "7079:58:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "minAcceptQuorumPct",
                              "referencedDeclaration": 3572,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4034,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 4085,
                                "name": "Identifier",
                                "src": "7147:4:8"
                              }
                            ],
                            "id": 4087,
                            "name": "MemberAccess",
                            "src": "7147:23:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3543,
                              "type": "uint256",
                              "value": "minAcceptQuorumPct"
                            },
                            "id": 4088,
                            "name": "Identifier",
                            "src": "7173:18:8"
                          }
                        ],
                        "id": 4089,
                        "name": "Assignment",
                        "src": "7147:44:8"
                      }
                    ],
                    "id": 4090,
                    "name": "ExpressionStatement",
                    "src": "7147:44:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3596,
                              "type": "function (uint256)",
                              "value": "StartVote"
                            },
                            "id": 4091,
                            "name": "Identifier",
                            "src": "7202:9:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4025,
                              "type": "uint256",
                              "value": "voteId"
                            },
                            "id": 4092,
                            "name": "Identifier",
                            "src": "7212:6:8"
                          }
                        ],
                        "id": 4093,
                        "name": "FunctionCall",
                        "src": "7202:17:8"
                      }
                    ],
                    "id": 4094,
                    "name": "ExpressionStatement",
                    "src": "7202:17:8"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3837,
                              "type": "function (uint256,address) view returns (bool)",
                              "value": "canVote"
                            },
                            "id": 4095,
                            "name": "Identifier",
                            "src": "7234:7:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4025,
                              "type": "uint256",
                              "value": "voteId"
                            },
                            "id": 4096,
                            "name": "Identifier",
                            "src": "7242:6:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12590,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 4097,
                                "name": "Identifier",
                                "src": "7250:3:8"
                              }
                            ],
                            "id": 4098,
                            "name": "MemberAccess",
                            "src": "7250:10:8"
                          }
                        ],
                        "id": 4099,
                        "name": "FunctionCall",
                        "src": "7234:27:8"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4227,
                                      "type": "function (uint256,bool,address,bool)",
                                      "value": "_vote"
                                    },
                                    "id": 4100,
                                    "name": "Identifier",
                                    "src": "7277:5:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4025,
                                      "type": "uint256",
                                      "value": "voteId"
                                    },
                                    "id": 4101,
                                    "name": "Identifier",
                                    "src": "7300:6:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "74727565",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "bool",
                                      "type": "bool",
                                      "value": "true"
                                    },
                                    "id": 4102,
                                    "name": "Literal",
                                    "src": "7324:4:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sender",
                                      "referencedDeclaration": null,
                                      "type": "address"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12590,
                                          "type": "msg",
                                          "value": "msg"
                                        },
                                        "id": 4103,
                                        "name": "Identifier",
                                        "src": "7346:3:8"
                                      }
                                    ],
                                    "id": 4104,
                                    "name": "MemberAccess",
                                    "src": "7346:10:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "74727565",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "bool",
                                      "type": "bool",
                                      "value": "true"
                                    },
                                    "id": 4105,
                                    "name": "Literal",
                                    "src": "7374:4:8"
                                  }
                                ],
                                "id": 4106,
                                "name": "FunctionCall",
                                "src": "7277:115:8"
                              }
                            ],
                            "id": 4107,
                            "name": "ExpressionStatement",
                            "src": "7277:115:8"
                          }
                        ],
                        "id": 4108,
                        "name": "Block",
                        "src": "7263:140:8"
                      }
                    ],
                    "id": 4109,
                    "name": "IfStatement",
                    "src": "7230:173:8"
                  }
                ],
                "id": 4110,
                "name": "Block",
                "src": "6743:666:8"
              }
            ],
            "id": 4111,
            "name": "FunctionDefinition",
            "src": "6649:760:8"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "_vote",
              "payable": false,
              "scope": 4339,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_voteId",
                      "scope": 4227,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 4112,
                        "name": "ElementaryTypeName",
                        "src": "7439:7:8"
                      }
                    ],
                    "id": 4113,
                    "name": "VariableDeclaration",
                    "src": "7439:15:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_supports",
                      "scope": 4227,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4114,
                        "name": "ElementaryTypeName",
                        "src": "7464:4:8"
                      }
                    ],
                    "id": 4115,
                    "name": "VariableDeclaration",
                    "src": "7464:14:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_voter",
                      "scope": 4227,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 4116,
                        "name": "ElementaryTypeName",
                        "src": "7488:7:8"
                      }
                    ],
                    "id": 4117,
                    "name": "VariableDeclaration",
                    "src": "7488:14:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_executesIfDecided",
                      "scope": 4227,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4118,
                        "name": "ElementaryTypeName",
                        "src": "7512:4:8"
                      }
                    ],
                    "id": 4119,
                    "name": "VariableDeclaration",
                    "src": "7512:23:8"
                  }
                ],
                "id": 4120,
                "name": "ParameterList",
                "src": "7429:112:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 4121,
                "name": "ParameterList",
                "src": "7555:0:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        4123
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "vote",
                          "scope": 4227,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct Voting.Vote storage pointer",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Vote",
                              "referencedDeclaration": 3589,
                              "type": "struct Voting.Vote storage pointer"
                            },
                            "id": 4122,
                            "name": "UserDefinedTypeName",
                            "src": "7565:4:8"
                          }
                        ],
                        "id": 4123,
                        "name": "VariableDeclaration",
                        "src": "7565:17:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct Voting.Vote storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3592,
                              "type": "struct Voting.Vote storage ref[] storage ref",
                              "value": "votes"
                            },
                            "id": 4124,
                            "name": "Identifier",
                            "src": "7585:5:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4113,
                              "type": "uint256",
                              "value": "_voteId"
                            },
                            "id": 4125,
                            "name": "Identifier",
                            "src": "7591:7:8"
                          }
                        ],
                        "id": 4126,
                        "name": "IndexAccess",
                        "src": "7585:14:8"
                      }
                    ],
                    "id": 4127,
                    "name": "VariableDeclarationStatement",
                    "src": "7565:34:8"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        4129
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "voterStake",
                          "scope": 4227,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 4128,
                            "name": "ElementaryTypeName",
                            "src": "7701:7:8"
                          }
                        ],
                        "id": 4129,
                        "name": "VariableDeclaration",
                        "src": "7701:18:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "balanceOfAt",
                              "referencedDeclaration": 11324,
                              "type": "function (address,uint256) view external returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3539,
                                  "type": "contract MiniMeToken",
                                  "value": "token"
                                },
                                "id": 4130,
                                "name": "Identifier",
                                "src": "7722:5:8"
                              }
                            ],
                            "id": 4131,
                            "name": "MemberAccess",
                            "src": "7722:17:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4117,
                              "type": "address",
                              "value": "_voter"
                            },
                            "id": 4132,
                            "name": "Identifier",
                            "src": "7740:6:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "snapshotBlock",
                              "referencedDeclaration": 3570,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4123,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 4133,
                                "name": "Identifier",
                                "src": "7748:4:8"
                              }
                            ],
                            "id": 4134,
                            "name": "MemberAccess",
                            "src": "7748:18:8"
                          }
                        ],
                        "id": 4135,
                        "name": "FunctionCall",
                        "src": "7722:45:8"
                      }
                    ],
                    "id": 4136,
                    "name": "VariableDeclarationStatement",
                    "src": "7701:66:8"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        4138
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "state",
                          "scope": 4227,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "enum Voting.VoterState",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "VoterState",
                              "referencedDeclaration": 3564,
                              "type": "enum Voting.VoterState"
                            },
                            "id": 4137,
                            "name": "UserDefinedTypeName",
                            "src": "7777:10:8"
                          }
                        ],
                        "id": 4138,
                        "name": "VariableDeclaration",
                        "src": "7777:16:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "enum Voting.VoterState"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "voters",
                              "referencedDeclaration": 3588,
                              "type": "mapping(address => enum Voting.VoterState)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4123,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 4139,
                                "name": "Identifier",
                                "src": "7796:4:8"
                              }
                            ],
                            "id": 4140,
                            "name": "MemberAccess",
                            "src": "7796:11:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4117,
                              "type": "address",
                              "value": "_voter"
                            },
                            "id": 4141,
                            "name": "Identifier",
                            "src": "7808:6:8"
                          }
                        ],
                        "id": 4142,
                        "name": "IndexAccess",
                        "src": "7796:19:8"
                      }
                    ],
                    "id": 4143,
                    "name": "VariableDeclarationStatement",
                    "src": "7777:38:8"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_VoterState_$3564",
                            "typeString": "enum Voting.VoterState"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4138,
                              "type": "enum Voting.VoterState",
                              "value": "state"
                            },
                            "id": 4144,
                            "name": "Identifier",
                            "src": "7887:5:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "member_name": "Yea",
                              "referencedDeclaration": null,
                              "type": "enum Voting.VoterState"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3564,
                                  "type": "type(enum Voting.VoterState)",
                                  "value": "VoterState"
                                },
                                "id": 4145,
                                "name": "Identifier",
                                "src": "7896:10:8"
                              }
                            ],
                            "id": 4146,
                            "name": "MemberAccess",
                            "src": "7896:14:8"
                          }
                        ],
                        "id": 4147,
                        "name": "BinaryOperation",
                        "src": "7887:23:8"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "member_name": "yea",
                                  "referencedDeclaration": 3574,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4123,
                                      "type": "struct Voting.Vote storage pointer",
                                      "value": "vote"
                                    },
                                    "id": 4148,
                                    "name": "Identifier",
                                    "src": "7924:4:8"
                                  }
                                ],
                                "id": 4150,
                                "name": "MemberAccess",
                                "src": "7924:8:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sub",
                                      "referencedDeclaration": 12041,
                                      "type": "function (uint256,uint256) pure returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "yea",
                                          "referencedDeclaration": 3574,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4123,
                                              "type": "struct Voting.Vote storage pointer",
                                              "value": "vote"
                                            },
                                            "id": 4151,
                                            "name": "Identifier",
                                            "src": "7935:4:8"
                                          }
                                        ],
                                        "id": 4152,
                                        "name": "MemberAccess",
                                        "src": "7935:8:8"
                                      }
                                    ],
                                    "id": 4153,
                                    "name": "MemberAccess",
                                    "src": "7935:12:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4129,
                                      "type": "uint256",
                                      "value": "voterStake"
                                    },
                                    "id": 4154,
                                    "name": "Identifier",
                                    "src": "7948:10:8"
                                  }
                                ],
                                "id": 4155,
                                "name": "FunctionCall",
                                "src": "7935:24:8"
                              }
                            ],
                            "id": 4156,
                            "name": "Assignment",
                            "src": "7924:35:8"
                          }
                        ],
                        "id": 4157,
                        "name": "ExpressionStatement",
                        "src": "7924:35:8"
                      }
                    ],
                    "id": 4158,
                    "name": "IfStatement",
                    "src": "7883:76:8"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_VoterState_$3564",
                            "typeString": "enum Voting.VoterState"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4138,
                              "type": "enum Voting.VoterState",
                              "value": "state"
                            },
                            "id": 4159,
                            "name": "Identifier",
                            "src": "7973:5:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "member_name": "Nay",
                              "referencedDeclaration": null,
                              "type": "enum Voting.VoterState"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3564,
                                  "type": "type(enum Voting.VoterState)",
                                  "value": "VoterState"
                                },
                                "id": 4160,
                                "name": "Identifier",
                                "src": "7982:10:8"
                              }
                            ],
                            "id": 4161,
                            "name": "MemberAccess",
                            "src": "7982:14:8"
                          }
                        ],
                        "id": 4162,
                        "name": "BinaryOperation",
                        "src": "7973:23:8"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "member_name": "nay",
                                  "referencedDeclaration": 3576,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4123,
                                      "type": "struct Voting.Vote storage pointer",
                                      "value": "vote"
                                    },
                                    "id": 4163,
                                    "name": "Identifier",
                                    "src": "8010:4:8"
                                  }
                                ],
                                "id": 4165,
                                "name": "MemberAccess",
                                "src": "8010:8:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sub",
                                      "referencedDeclaration": 12041,
                                      "type": "function (uint256,uint256) pure returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "nay",
                                          "referencedDeclaration": 3576,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4123,
                                              "type": "struct Voting.Vote storage pointer",
                                              "value": "vote"
                                            },
                                            "id": 4166,
                                            "name": "Identifier",
                                            "src": "8021:4:8"
                                          }
                                        ],
                                        "id": 4167,
                                        "name": "MemberAccess",
                                        "src": "8021:8:8"
                                      }
                                    ],
                                    "id": 4168,
                                    "name": "MemberAccess",
                                    "src": "8021:12:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4129,
                                      "type": "uint256",
                                      "value": "voterStake"
                                    },
                                    "id": 4169,
                                    "name": "Identifier",
                                    "src": "8034:10:8"
                                  }
                                ],
                                "id": 4170,
                                "name": "FunctionCall",
                                "src": "8021:24:8"
                              }
                            ],
                            "id": 4171,
                            "name": "Assignment",
                            "src": "8010:35:8"
                          }
                        ],
                        "id": 4172,
                        "name": "ExpressionStatement",
                        "src": "8010:35:8"
                      }
                    ],
                    "id": 4173,
                    "name": "IfStatement",
                    "src": "7969:76:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 4115,
                          "type": "bool",
                          "value": "_supports"
                        },
                        "id": 4174,
                        "name": "Identifier",
                        "src": "8060:9:8"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "member_name": "yea",
                                  "referencedDeclaration": 3574,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4123,
                                      "type": "struct Voting.Vote storage pointer",
                                      "value": "vote"
                                    },
                                    "id": 4175,
                                    "name": "Identifier",
                                    "src": "8083:4:8"
                                  }
                                ],
                                "id": 4177,
                                "name": "MemberAccess",
                                "src": "8083:8:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "add",
                                      "referencedDeclaration": 12065,
                                      "type": "function (uint256,uint256) pure returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "yea",
                                          "referencedDeclaration": 3574,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4123,
                                              "type": "struct Voting.Vote storage pointer",
                                              "value": "vote"
                                            },
                                            "id": 4178,
                                            "name": "Identifier",
                                            "src": "8094:4:8"
                                          }
                                        ],
                                        "id": 4179,
                                        "name": "MemberAccess",
                                        "src": "8094:8:8"
                                      }
                                    ],
                                    "id": 4180,
                                    "name": "MemberAccess",
                                    "src": "8094:12:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4129,
                                      "type": "uint256",
                                      "value": "voterStake"
                                    },
                                    "id": 4181,
                                    "name": "Identifier",
                                    "src": "8107:10:8"
                                  }
                                ],
                                "id": 4182,
                                "name": "FunctionCall",
                                "src": "8094:24:8"
                              }
                            ],
                            "id": 4183,
                            "name": "Assignment",
                            "src": "8083:35:8"
                          }
                        ],
                        "id": 4184,
                        "name": "ExpressionStatement",
                        "src": "8083:35:8"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "member_name": "nay",
                                  "referencedDeclaration": 3576,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4123,
                                      "type": "struct Voting.Vote storage pointer",
                                      "value": "vote"
                                    },
                                    "id": 4185,
                                    "name": "Identifier",
                                    "src": "8145:4:8"
                                  }
                                ],
                                "id": 4187,
                                "name": "MemberAccess",
                                "src": "8145:8:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "add",
                                      "referencedDeclaration": 12065,
                                      "type": "function (uint256,uint256) pure returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "nay",
                                          "referencedDeclaration": 3576,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4123,
                                              "type": "struct Voting.Vote storage pointer",
                                              "value": "vote"
                                            },
                                            "id": 4188,
                                            "name": "Identifier",
                                            "src": "8156:4:8"
                                          }
                                        ],
                                        "id": 4189,
                                        "name": "MemberAccess",
                                        "src": "8156:8:8"
                                      }
                                    ],
                                    "id": 4190,
                                    "name": "MemberAccess",
                                    "src": "8156:12:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4129,
                                      "type": "uint256",
                                      "value": "voterStake"
                                    },
                                    "id": 4191,
                                    "name": "Identifier",
                                    "src": "8169:10:8"
                                  }
                                ],
                                "id": 4192,
                                "name": "FunctionCall",
                                "src": "8156:24:8"
                              }
                            ],
                            "id": 4193,
                            "name": "Assignment",
                            "src": "8145:35:8"
                          }
                        ],
                        "id": 4194,
                        "name": "ExpressionStatement",
                        "src": "8145:35:8"
                      }
                    ],
                    "id": 4195,
                    "name": "IfStatement",
                    "src": "8056:124:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "enum Voting.VoterState"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "enum Voting.VoterState"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "voters",
                                  "referencedDeclaration": 3588,
                                  "type": "mapping(address => enum Voting.VoterState)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4123,
                                      "type": "struct Voting.Vote storage pointer",
                                      "value": "vote"
                                    },
                                    "id": 4196,
                                    "name": "Identifier",
                                    "src": "8191:4:8"
                                  }
                                ],
                                "id": 4199,
                                "name": "MemberAccess",
                                "src": "8191:11:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4117,
                                  "type": "address",
                                  "value": "_voter"
                                },
                                "id": 4198,
                                "name": "Identifier",
                                "src": "8203:6:8"
                              }
                            ],
                            "id": 4200,
                            "name": "IndexAccess",
                            "src": "8191:19:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "enum Voting.VoterState"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4115,
                                  "type": "bool",
                                  "value": "_supports"
                                },
                                "id": 4201,
                                "name": "Identifier",
                                "src": "8213:9:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "Yea",
                                  "referencedDeclaration": null,
                                  "type": "enum Voting.VoterState"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3564,
                                      "type": "type(enum Voting.VoterState)",
                                      "value": "VoterState"
                                    },
                                    "id": 4202,
                                    "name": "Identifier",
                                    "src": "8225:10:8"
                                  }
                                ],
                                "id": 4203,
                                "name": "MemberAccess",
                                "src": "8225:14:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "Nay",
                                  "referencedDeclaration": null,
                                  "type": "enum Voting.VoterState"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3564,
                                      "type": "type(enum Voting.VoterState)",
                                      "value": "VoterState"
                                    },
                                    "id": 4204,
                                    "name": "Identifier",
                                    "src": "8242:10:8"
                                  }
                                ],
                                "id": 4205,
                                "name": "MemberAccess",
                                "src": "8242:14:8"
                              }
                            ],
                            "id": 4206,
                            "name": "Conditional",
                            "src": "8213:43:8"
                          }
                        ],
                        "id": 4207,
                        "name": "Assignment",
                        "src": "8191:65:8"
                      }
                    ],
                    "id": 4208,
                    "name": "ExpressionStatement",
                    "src": "8191:65:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3606,
                              "type": "function (uint256,address,bool,uint256)",
                              "value": "CastVote"
                            },
                            "id": 4209,
                            "name": "Identifier",
                            "src": "8267:8:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4113,
                              "type": "uint256",
                              "value": "_voteId"
                            },
                            "id": 4210,
                            "name": "Identifier",
                            "src": "8289:7:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4117,
                              "type": "address",
                              "value": "_voter"
                            },
                            "id": 4211,
                            "name": "Identifier",
                            "src": "8310:6:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4115,
                              "type": "bool",
                              "value": "_supports"
                            },
                            "id": 4212,
                            "name": "Identifier",
                            "src": "8330:9:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4129,
                              "type": "uint256",
                              "value": "voterStake"
                            },
                            "id": 4213,
                            "name": "Identifier",
                            "src": "8353:10:8"
                          }
                        ],
                        "id": 4214,
                        "name": "FunctionCall",
                        "src": "8267:106:8"
                      }
                    ],
                    "id": 4215,
                    "name": "ExpressionStatement",
                    "src": "8267:106:8"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "&&",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4119,
                              "type": "bool",
                              "value": "_executesIfDecided"
                            },
                            "id": 4216,
                            "name": "Identifier",
                            "src": "8388:18:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3905,
                                  "type": "function (uint256) view returns (bool)",
                                  "value": "canExecute"
                                },
                                "id": 4217,
                                "name": "Identifier",
                                "src": "8410:10:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4113,
                                  "type": "uint256",
                                  "value": "_voteId"
                                },
                                "id": 4218,
                                "name": "Identifier",
                                "src": "8421:7:8"
                              }
                            ],
                            "id": 4219,
                            "name": "FunctionCall",
                            "src": "8410:19:8"
                          }
                        ],
                        "id": 4220,
                        "name": "BinaryOperation",
                        "src": "8388:41:8"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "tuple()",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4267,
                                  "type": "function (uint256)",
                                  "value": "_executeVote"
                                },
                                "id": 4221,
                                "name": "Identifier",
                                "src": "8443:12:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4113,
                                  "type": "uint256",
                                  "value": "_voteId"
                                },
                                "id": 4222,
                                "name": "Identifier",
                                "src": "8456:7:8"
                              }
                            ],
                            "id": 4223,
                            "name": "FunctionCall",
                            "src": "8443:21:8"
                          }
                        ],
                        "id": 4224,
                        "name": "ExpressionStatement",
                        "src": "8443:21:8"
                      }
                    ],
                    "id": 4225,
                    "name": "IfStatement",
                    "src": "8384:80:8"
                  }
                ],
                "id": 4226,
                "name": "Block",
                "src": "7555:916:8"
              }
            ],
            "id": 4227,
            "name": "FunctionDefinition",
            "src": "7415:1056:8"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "_executeVote",
              "payable": false,
              "scope": 4339,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_voteId",
                      "scope": 4267,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 4228,
                        "name": "ElementaryTypeName",
                        "src": "8499:7:8"
                      }
                    ],
                    "id": 4229,
                    "name": "VariableDeclaration",
                    "src": "8499:15:8"
                  }
                ],
                "id": 4230,
                "name": "ParameterList",
                "src": "8498:17:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 4231,
                "name": "ParameterList",
                "src": "8525:0:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        4233
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "vote",
                          "scope": 4267,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct Voting.Vote storage pointer",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Vote",
                              "referencedDeclaration": 3589,
                              "type": "struct Voting.Vote storage pointer"
                            },
                            "id": 4232,
                            "name": "UserDefinedTypeName",
                            "src": "8535:4:8"
                          }
                        ],
                        "id": 4233,
                        "name": "VariableDeclaration",
                        "src": "8535:17:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct Voting.Vote storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3592,
                              "type": "struct Voting.Vote storage ref[] storage ref",
                              "value": "votes"
                            },
                            "id": 4234,
                            "name": "Identifier",
                            "src": "8555:5:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4229,
                              "type": "uint256",
                              "value": "_voteId"
                            },
                            "id": 4235,
                            "name": "Identifier",
                            "src": "8561:7:8"
                          }
                        ],
                        "id": 4236,
                        "name": "IndexAccess",
                        "src": "8555:14:8"
                      }
                    ],
                    "id": 4237,
                    "name": "VariableDeclarationStatement",
                    "src": "8535:34:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "executed",
                              "referencedDeclaration": 3584,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4233,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 4238,
                                "name": "Identifier",
                                "src": "8580:4:8"
                              }
                            ],
                            "id": 4240,
                            "name": "MemberAccess",
                            "src": "8580:13:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "74727565",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "bool",
                              "type": "bool",
                              "value": "true"
                            },
                            "id": 4241,
                            "name": "Literal",
                            "src": "8596:4:8"
                          }
                        ],
                        "id": 4242,
                        "name": "Assignment",
                        "src": "8580:20:8"
                      }
                    ],
                    "id": 4243,
                    "name": "ExpressionStatement",
                    "src": "8580:20:8"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        4245
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "input",
                          "scope": 4267,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "bytes memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes",
                              "type": "bytes storage pointer"
                            },
                            "id": 4244,
                            "name": "ElementaryTypeName",
                            "src": "8611:5:8"
                          }
                        ],
                        "id": 4245,
                        "name": "VariableDeclaration",
                        "src": "8611:18:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "function (uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "bytes",
                                  "type": "bytes storage pointer"
                                },
                                "id": 4246,
                                "name": "ElementaryTypeName",
                                "src": "8636:5:8"
                              }
                            ],
                            "id": 4247,
                            "name": "NewExpression",
                            "src": "8632:9:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 4248,
                            "name": "Literal",
                            "src": "8642:1:8"
                          }
                        ],
                        "id": 4249,
                        "name": "FunctionCall",
                        "src": "8632:12:8"
                      }
                    ],
                    "id": 4250,
                    "name": "VariableDeclarationStatement",
                    "src": "8611:33:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "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"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7779,
                              "type": "function (bytes memory,bytes memory,address[] memory) returns (bytes memory)",
                              "value": "runScript"
                            },
                            "id": 4251,
                            "name": "Identifier",
                            "src": "8697:9:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "executionScript",
                              "referencedDeclaration": 3582,
                              "type": "bytes storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4233,
                                  "type": "struct Voting.Vote storage pointer",
                                  "value": "vote"
                                },
                                "id": 4252,
                                "name": "Identifier",
                                "src": "8707:4:8"
                              }
                            ],
                            "id": 4253,
                            "name": "MemberAccess",
                            "src": "8707:20:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4245,
                              "type": "bytes memory",
                              "value": "input"
                            },
                            "id": 4254,
                            "name": "Identifier",
                            "src": "8729:5:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address[] memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "function (uint256) pure returns (address[] memory)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "length": null,
                                      "type": "address[] storage pointer"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "address",
                                          "type": "address"
                                        },
                                        "id": 4255,
                                        "name": "ElementaryTypeName",
                                        "src": "8740:7:8"
                                      }
                                    ],
                                    "id": 4256,
                                    "name": "ArrayTypeName",
                                    "src": "8740:9:8"
                                  }
                                ],
                                "id": 4257,
                                "name": "NewExpression",
                                "src": "8736:13:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 4258,
                                "name": "Literal",
                                "src": "8750:1:8"
                              }
                            ],
                            "id": 4259,
                            "name": "FunctionCall",
                            "src": "8736:16:8"
                          }
                        ],
                        "id": 4260,
                        "name": "FunctionCall",
                        "src": "8697:56:8"
                      }
                    ],
                    "id": 4261,
                    "name": "ExpressionStatement",
                    "src": "8697:56:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3610,
                              "type": "function (uint256)",
                              "value": "ExecuteVote"
                            },
                            "id": 4262,
                            "name": "Identifier",
                            "src": "8764:11:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4229,
                              "type": "uint256",
                              "value": "_voteId"
                            },
                            "id": 4263,
                            "name": "Identifier",
                            "src": "8776:7:8"
                          }
                        ],
                        "id": 4264,
                        "name": "FunctionCall",
                        "src": "8764:20:8"
                      }
                    ],
                    "id": 4265,
                    "name": "ExpressionStatement",
                    "src": "8764:20:8"
                  }
                ],
                "id": 4266,
                "name": "Block",
                "src": "8525:266:8"
              }
            ],
            "id": 4267,
            "name": "FunctionDefinition",
            "src": "8477:314:8"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "_isVoteOpen",
              "payable": false,
              "scope": 4339,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "vote",
                      "scope": 4290,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct Voting.Vote storage pointer",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Vote",
                          "referencedDeclaration": 3589,
                          "type": "struct Voting.Vote storage pointer"
                        },
                        "id": 4268,
                        "name": "UserDefinedTypeName",
                        "src": "8818:4:8"
                      }
                    ],
                    "id": 4269,
                    "name": "VariableDeclaration",
                    "src": "8818:17:8"
                  }
                ],
                "id": 4270,
                "name": "ParameterList",
                "src": "8817:19:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4290,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4271,
                        "name": "ElementaryTypeName",
                        "src": "8860:4:8"
                      }
                    ],
                    "id": 4272,
                    "name": "VariableDeclaration",
                    "src": "8860:4:8"
                  }
                ],
                "id": 4273,
                "name": "ParameterList",
                "src": "8859:6:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 4273
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "&&",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "<",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint64",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint64)",
                                      "value": "uint64"
                                    },
                                    "id": 4274,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "8883:6:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12592,
                                      "type": "uint256",
                                      "value": "now"
                                    },
                                    "id": 4275,
                                    "name": "Identifier",
                                    "src": "8890:3:8"
                                  }
                                ],
                                "id": 4276,
                                "name": "FunctionCall",
                                "src": "8883:11:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint64"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint64",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "add",
                                          "referencedDeclaration": 12160,
                                          "type": "function (uint64,uint64) pure returns (uint64)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "startDate",
                                              "referencedDeclaration": 3568,
                                              "type": "uint64"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 4269,
                                                  "type": "struct Voting.Vote storage pointer",
                                                  "value": "vote"
                                                },
                                                "id": 4277,
                                                "name": "Identifier",
                                                "src": "8898:4:8"
                                              }
                                            ],
                                            "id": 4278,
                                            "name": "MemberAccess",
                                            "src": "8898:14:8"
                                          }
                                        ],
                                        "id": 4279,
                                        "name": "MemberAccess",
                                        "src": "8898:18:8"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3545,
                                          "type": "uint64",
                                          "value": "voteTime"
                                        },
                                        "id": 4280,
                                        "name": "Identifier",
                                        "src": "8917:8:8"
                                      }
                                    ],
                                    "id": 4281,
                                    "name": "FunctionCall",
                                    "src": "8898:28:8"
                                  }
                                ],
                                "id": 4282,
                                "name": "TupleExpression",
                                "src": "8897:30:8"
                              }
                            ],
                            "id": 4283,
                            "name": "BinaryOperation",
                            "src": "8883:44:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!",
                              "prefix": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "executed",
                                  "referencedDeclaration": 3584,
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4269,
                                      "type": "struct Voting.Vote storage pointer",
                                      "value": "vote"
                                    },
                                    "id": 4284,
                                    "name": "Identifier",
                                    "src": "8932:4:8"
                                  }
                                ],
                                "id": 4285,
                                "name": "MemberAccess",
                                "src": "8932:13:8"
                              }
                            ],
                            "id": 4286,
                            "name": "UnaryOperation",
                            "src": "8931:14:8"
                          }
                        ],
                        "id": 4287,
                        "name": "BinaryOperation",
                        "src": "8883:62:8"
                      }
                    ],
                    "id": 4288,
                    "name": "Return",
                    "src": "8876:69:8"
                  }
                ],
                "id": 4289,
                "name": "Block",
                "src": "8866:86:8"
              }
            ],
            "id": 4290,
            "name": "FunctionDefinition",
            "src": "8797:155:8"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "_isValuePct",
              "payable": false,
              "scope": 4339,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_value",
                      "scope": 4338,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 4291,
                        "name": "ElementaryTypeName",
                        "src": "9076:7:8"
                      }
                    ],
                    "id": 4292,
                    "name": "VariableDeclaration",
                    "src": "9076:14:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_total",
                      "scope": 4338,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 4293,
                        "name": "ElementaryTypeName",
                        "src": "9092:7:8"
                      }
                    ],
                    "id": 4294,
                    "name": "VariableDeclaration",
                    "src": "9092:14:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_pct",
                      "scope": 4338,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 4295,
                        "name": "ElementaryTypeName",
                        "src": "9108:7:8"
                      }
                    ],
                    "id": 4296,
                    "name": "VariableDeclaration",
                    "src": "9108:12:8"
                  }
                ],
                "id": 4297,
                "name": "ParameterList",
                "src": "9075:46:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 4338,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 4298,
                        "name": "ElementaryTypeName",
                        "src": "9145:4:8"
                      }
                    ],
                    "id": 4299,
                    "name": "VariableDeclaration",
                    "src": "9145:4:8"
                  }
                ],
                "id": 4300,
                "name": "ParameterList",
                "src": "9144:6:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "&&",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4292,
                                  "type": "uint256",
                                  "value": "_value"
                                },
                                "id": 4301,
                                "name": "Identifier",
                                "src": "9165:6:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 4302,
                                "name": "Literal",
                                "src": "9175:1:8"
                              }
                            ],
                            "id": 4303,
                            "name": "BinaryOperation",
                            "src": "9165:11:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294,
                                  "type": "uint256",
                                  "value": "_total"
                                },
                                "id": 4304,
                                "name": "Identifier",
                                "src": "9180:6:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 4305,
                                "name": "Literal",
                                "src": "9189:1:8"
                              }
                            ],
                            "id": 4306,
                            "name": "BinaryOperation",
                            "src": "9180:10:8"
                          }
                        ],
                        "id": 4307,
                        "name": "BinaryOperation",
                        "src": "9165:25:8"
                      },
                      {
                        "attributes": {
                          "functionReturnParameters": 4300
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "66616c7365",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "bool",
                              "type": "bool",
                              "value": "false"
                            },
                            "id": 4308,
                            "name": "Literal",
                            "src": "9211:5:8"
                          }
                        ],
                        "id": 4309,
                        "name": "Return",
                        "src": "9204:12:8"
                      }
                    ],
                    "id": 4310,
                    "name": "IfStatement",
                    "src": "9161:55:8"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        4312
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "m",
                          "scope": 4338,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 4311,
                            "name": "ElementaryTypeName",
                            "src": "9227:7:8"
                          }
                        ],
                        "id": 4312,
                        "name": "VariableDeclaration",
                        "src": "9227:9:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "mul",
                              "referencedDeclaration": 12003,
                              "type": "function (uint256,uint256) pure returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294,
                                  "type": "uint256",
                                  "value": "_total"
                                },
                                "id": 4313,
                                "name": "Identifier",
                                "src": "9239:6:8"
                              }
                            ],
                            "id": 4314,
                            "name": "MemberAccess",
                            "src": "9239:10:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4296,
                              "type": "uint256",
                              "value": "_pct"
                            },
                            "id": 4315,
                            "name": "Identifier",
                            "src": "9250:4:8"
                          }
                        ],
                        "id": 4316,
                        "name": "FunctionCall",
                        "src": "9239:16:8"
                      }
                    ],
                    "id": 4317,
                    "name": "VariableDeclarationStatement",
                    "src": "9227:28:8"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        4319
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "v",
                          "scope": 4338,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 4318,
                            "name": "ElementaryTypeName",
                            "src": "9265:7:8"
                          }
                        ],
                        "id": 4319,
                        "name": "VariableDeclaration",
                        "src": "9265:9:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "/",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4312,
                              "type": "uint256",
                              "value": "m"
                            },
                            "id": 4320,
                            "name": "Identifier",
                            "src": "9277:1:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3550,
                              "type": "uint256",
                              "value": "PCT_BASE"
                            },
                            "id": 4321,
                            "name": "Identifier",
                            "src": "9281:8:8"
                          }
                        ],
                        "id": 4322,
                        "name": "BinaryOperation",
                        "src": "9277:12:8"
                      }
                    ],
                    "id": 4323,
                    "name": "VariableDeclarationStatement",
                    "src": "9265:24:8"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 4300
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "%",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4312,
                                      "type": "uint256",
                                      "value": "m"
                                    },
                                    "id": 4324,
                                    "name": "Identifier",
                                    "src": "9396:1:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3550,
                                      "type": "uint256",
                                      "value": "PCT_BASE"
                                    },
                                    "id": 4325,
                                    "name": "Identifier",
                                    "src": "9400:8:8"
                                  }
                                ],
                                "id": 4326,
                                "name": "BinaryOperation",
                                "src": "9396:12:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 4327,
                                "name": "Literal",
                                "src": "9412:1:8"
                              }
                            ],
                            "id": 4328,
                            "name": "BinaryOperation",
                            "src": "9396:17:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4292,
                                  "type": "uint256",
                                  "value": "_value"
                                },
                                "id": 4329,
                                "name": "Identifier",
                                "src": "9416:6:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4319,
                                  "type": "uint256",
                                  "value": "v"
                                },
                                "id": 4330,
                                "name": "Identifier",
                                "src": "9426:1:8"
                              }
                            ],
                            "id": 4331,
                            "name": "BinaryOperation",
                            "src": "9416:11:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4292,
                                  "type": "uint256",
                                  "value": "_value"
                                },
                                "id": 4332,
                                "name": "Identifier",
                                "src": "9430:6:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4319,
                                  "type": "uint256",
                                  "value": "v"
                                },
                                "id": 4333,
                                "name": "Identifier",
                                "src": "9439:1:8"
                              }
                            ],
                            "id": 4334,
                            "name": "BinaryOperation",
                            "src": "9430:10:8"
                          }
                        ],
                        "id": 4335,
                        "name": "Conditional",
                        "src": "9396:44:8"
                      }
                    ],
                    "id": 4336,
                    "name": "Return",
                    "src": "9389:51:8"
                  }
                ],
                "id": 4337,
                "name": "Block",
                "src": "9151:296:8"
              }
            ],
            "id": 4338,
            "name": "FunctionDefinition",
            "src": "9055:392:8"
          }
        ],
        "id": 4339,
        "name": "ContractDefinition",
        "src": "371:9078:8"
      }
    ],
    "id": 4340,
    "name": "SourceUnit",
    "src": "0:9450:8"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-03-14T08:41:25.077Z"
}