{
  "id": "f8cdfba82c04352c08fa5e763514fcf7",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.6.10",
  "solcLongVersion": "0.6.10+commit.00c0fcaf",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/protocol/integration/governance/CompoundLikeGovernanceAdapter.sol": {
        "content": "/*\n    Copyright 2020 Set Labs Inc.\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n    SPDX-License-Identifier: Apache License, Version 2.0\n*/\n\npragma solidity 0.6.10;\npragma experimental \"ABIEncoderV2\";\n\n\n/**\n * @title CompoundLikeGovernanceAdapter\n * @author Set Protocol\n *\n * Governance adapter for Compound-like governance systems (e.g. Uniswap) that returns data for voting, delegating and making proposals\n */\ncontract CompoundLikeGovernanceAdapter {\n\n    /* ============ Constants ============ */\n\n    // Signature of the propose function in Compound Governor Alpha. This is used to encode the calldata for the propose function\n    string public constant PROPOSE_SIGNATURE = \"propose(address[],uint256[],string[],bytes[],string)\";\n    \n    // Signature of the delegate function in Compound Governor Alpha\n    string public constant DELEGATE_SIGNATURE = \"delegate(address)\";\n\n    address public constant ZERO_ADDRESS = 0x0000000000000000000000000000000000000000;\n\n    /* ============ State Variables ============ */\n\n    // Address of governance token\n    address public immutable governanceToken;\n\n    // Address of Compound-like Governor Alpha contract\n    address public immutable governorAlpha;\n\n    /* ============ Constructor ============ */\n\n    /**\n     * Set state variables\n     *\n     * @param _governorAlpha    Address of Governor Alpha contract\n     * @param _governanceToken  Address of governance token\n     */\n    constructor(address _governorAlpha, address _governanceToken) public {\n        governorAlpha = _governorAlpha;\n        governanceToken = _governanceToken;\n    }\n\n    /* ============ External Getter Functions ============ */\n\n    /**\n     * Generates the calldata to vote on a proposal. Bytes data paramater is unused in Compound\n     *\n     * @param _proposalId           ID of the proposal to vote on\n     * @param _support              Boolean indicating whether to support proposal\n     *\n     * @return address              Target contract address\n     * @return uint256              Total quantity of ETH (Set to 0)\n     * @return bytes                Propose calldata\n     */\n    function getVoteCalldata(uint256 _proposalId, bool _support, bytes memory /* _data */) external view returns (address, uint256, bytes memory) {\n        // castVote(uint256 _proposalId, bool _support)\n        bytes memory callData = abi.encodeWithSignature(\"castVote(uint256,bool)\", _proposalId, _support);\n\n        return (governorAlpha, 0, callData);\n    }\n\n    /**\n     * Generates the calldata to delegate votes to another ETH address. Self and zero address allowed, which is equivalent to registering and revoking in Compound\n     * like governance systems.\n     *\n     * @param _delegatee            Address of the delegatee\n     *\n     * @return address              Target contract address\n     * @return uint256              Total quantity of ETH (Set to 0)\n     * @return bytes                Propose calldata\n     */\n    function getDelegateCalldata(address _delegatee) external view returns (address, uint256, bytes memory) {\n        // delegate(address _delegatee)\n        bytes memory callData = abi.encodeWithSignature(DELEGATE_SIGNATURE, _delegatee);\n\n        return (governanceToken, 0, callData);\n    }\n\n    /**\n     * Generates the calldata to register for voting. This is equivalent to delegating to the SetToken address in Compound.\n     *\n     * @param _setToken             Address of SetToken\n     *\n     * @return address              Target contract address\n     * @return uint256              Total quantity of ETH (Set to 0)\n     * @return bytes                Propose calldata\n     */\n    function getRegisterCalldata(address _setToken) external view returns (address, uint256, bytes memory) {\n        // delegate(address _delegatee)\n        bytes memory callData = abi.encodeWithSignature(DELEGATE_SIGNATURE, _setToken);\n\n        return (governanceToken, 0, callData);\n    }\n\n    /**\n     * Generates the calldata to revoke voting. This is equivalent to delegating to the zero address in Compound.\n     *\n     * @return address              Target contract address\n     * @return uint256              Total quantity of ETH (Set to 0)\n     * @return bytes                Propose calldata\n     */\n    function getRevokeCalldata() external view returns (address, uint256, bytes memory) {\n        // delegate(address _delegatee)\n        bytes memory callData = abi.encodeWithSignature(DELEGATE_SIGNATURE, ZERO_ADDRESS);\n\n        return (governanceToken, 0, callData);\n    }\n\n    /**\n     * Generates the calldata to create a new proposal\n     *\n     * @param _proposalData         Byte data containing data about the proposal\n     *\n     * @return address              Target contract address\n     * @return uint256              Total quantity of ETH (Set to 0)\n     * @return bytes                Propose calldata\n     */\n    function getProposeCalldata(bytes memory _proposalData) external view returns (address, uint256, bytes memory) {\n        // Decode proposal data\n        (\n            address[] memory targets,\n            uint256[] memory values,\n            string[] memory signatures,\n            bytes[] memory calldatas,\n            string memory description\n        ) = abi.decode(_proposalData, (address[],uint256[],string[],bytes[],string));\n\n        // propose(address[],uint256[],string[],bytes[],string)\n        bytes memory callData = abi.encodeWithSignature(PROPOSE_SIGNATURE, targets, values, signatures, calldatas, description);\n\n        return (governorAlpha, 0, callData);\n    }\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "contracts": {
      "contracts/protocol/integration/governance/CompoundLikeGovernanceAdapter.sol": {
        "CompoundLikeGovernanceAdapter": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_governorAlpha",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_governanceToken",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "DELEGATE_SIGNATURE",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PROPOSE_SIGNATURE",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "ZERO_ADDRESS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_delegatee",
                  "type": "address"
                }
              ],
              "name": "getDelegateCalldata",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_proposalData",
                  "type": "bytes"
                }
              ],
              "name": "getProposeCalldata",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_setToken",
                  "type": "address"
                }
              ],
              "name": "getRegisterCalldata",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getRevokeCalldata",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_proposalId",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "_support",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "getVoteCalldata",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "governanceToken",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "governorAlpha",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60c060405234801561001057600080fd5b50604051610c1c380380610c1c83398101604081905261002f9161004d565b6001600160601b0319606092831b811660a052911b1660805261009e565b6000806040838503121561005f578182fd5b825161006a81610086565b602084015190925061007b81610086565b809150509250929050565b6001600160a01b038116811461009b57600080fd5b50565b60805160601c60a05160601c610b416100db600039806101e85280610261528061046e52508061031a52806103d2528061044a5250610b416000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063d5abba9911610066578063d5abba9914610109578063f3d414c814610111578063f3f4b7ea14610126578063f96dae0a1461012e578063fd430085146101365761009e565b8063538ba4f9146100a35780635cb8b5e3146100c1578063a4fed2ce146100e3578063d0ae50ae146100f6578063d3da53a4146100f6575b600080fd5b6100ab61013e565b6040516100b891906108e7565b60405180910390f35b6100d46100cf366004610747565b610143565b6040516100b8939291906108fb565b6100d46100f1366004610782565b61021c565b6100d4610104366004610658565b610292565b6100d4610349565b6101196103ff565b6040516100b891906109f8565b61011961042c565b6100ab610448565b6100ab61046c565b600081565b60008060608060608060608088806020019051810190610163919061067b565b945094509450945094506060604051806060016040528060348152602001610ad86034913986868686866040516024016101a195949392919061092b565b60408051601f1981840301815290829052916101bc916108cb565b6040519081900390206020820180516001600160e01b03166001600160e01b03199092169190911790527f000000000000000000000000000000000000000000000000000000000000000099506000985096505050505050509193909250565b6000806060808686604051602401610235929190610a0b565b60408051601f198184030181529190526020810180516001600160e01b03166315373e3d60e01b1790527f000000000000000000000000000000000000000000000000000000000000000094506000935091505093509350939050565b6000806060806040518060400160405280601181526020017064656c656761746528616464726573732960781b815250856040516024016102d391906108e7565b60408051601f1981840301815290829052916102ee916108cb565b6040519081900390206020820180516001600160e01b03166001600160e01b03199092169190911790527f00000000000000000000000000000000000000000000000000000000000000009450600093509150509193909250565b6000806060806040518060400160405280601181526020017064656c656761746528616464726573732960781b815250600060405160240161038b91906108e7565b60408051601f1981840301815290829052916103a6916108cb565b6040519081900390206020820180516001600160e01b03166001600160e01b03199092169190911790527f0000000000000000000000000000000000000000000000000000000000000000945060009350915050909192565b6040518060400160405280601181526020017064656c656761746528616464726573732960781b81525081565b604051806060016040528060348152602001610ad86034913981565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600082601f8301126104a0578081fd5b81516104b36104ae82610a42565b610a1b565b8181529150602080830190848101818402860182018710156104d457600080fd5b60005b848110156104fc5781516104ea81610abf565b845292820192908201906001016104d7565b505050505092915050565b600082601f830112610517578081fd5b81516105256104ae82610a42565b818152915060208083019084810160005b848110156104fc5761054d888484518a010161060b565b84529282019290820190600101610536565b600082601f83011261056f578081fd5b815161057d6104ae82610a42565b81815291506020808301908481018184028601820187101561059e57600080fd5b60005b848110156104fc578151845292820192908201906001016105a1565b600082601f8301126105cd578081fd5b81356105db6104ae82610a62565b91508082528360208285010111156105f257600080fd5b8060208401602084013760009082016020015292915050565b600082601f83011261061b578081fd5b81516106296104ae82610a62565b915080825283602082850101111561064057600080fd5b610651816020840160208601610a8f565b5092915050565b600060208284031215610669578081fd5b813561067481610abf565b9392505050565b600080600080600060a08688031215610692578081fd5b855167ffffffffffffffff808211156106a9578283fd5b6106b589838a01610490565b965060208801519150808211156106ca578283fd5b6106d689838a0161055f565b955060408801519150808211156106eb578283fd5b6106f789838a01610507565b9450606088015191508082111561070c578283fd5b61071889838a01610507565b9350608088015191508082111561072d578283fd5b5061073a8882890161060b565b9150509295509295909350565b600060208284031215610758578081fd5b813567ffffffffffffffff81111561076e578182fd5b61077a848285016105bd565b949350505050565b600080600060608486031215610796578283fd5b83359250602084013580151581146107ac578283fd5b9150604084013567ffffffffffffffff8111156107c7578182fd5b6107d3868287016105bd565b9150509250925092565b6001600160a01b0316815260200190565b815260200190565b60008282518085526020808601955080818302840101818601855b8481101561083f57601f1986840301895261082d83835161089f565b98840198925090830190600101610811565b5090979650505050505050565b6000815180845260208085018081965082840281019150828601855b8581101561089257828403895261088084835161089f565b98850198935090840190600101610868565b5091979650505050505050565b600081518084526108b7816020860160208601610a8f565b601f01601f19169290920160200192915050565b600082516108dd818460208701610a8f565b9190910192915050565b6001600160a01b0391909116815260200190565b600060018060a01b038516825283602083015260606040830152610922606083018461089f565b95945050505050565b600060a0820160a083528088516109428184610a86565b915060209250828a01845b8281101561096e576109608483516107dd565b93509084019060010161094d565b505050838103828501528088516109858184610a86565b9150838a019250845b818110156109af576109a18385516107ee565b93850193925060010161098e565b505084810360408601526109c3818961084c565b9250505082810360608401526109d981866107f6565b83810360808501526109eb818661089f565b9998505050505050505050565b600060208252610674602083018461089f565b9182521515602082015260400190565b60405181810167ffffffffffffffff81118282101715610a3a57600080fd5b604052919050565b600067ffffffffffffffff821115610a58578081fd5b5060209081020190565b600067ffffffffffffffff821115610a78578081fd5b50601f01601f191660200190565b90815260200190565b60005b83811015610aaa578181015183820152602001610a92565b83811115610ab9576000848401525b50505050565b6001600160a01b0381168114610ad457600080fd5b5056fe70726f706f736528616464726573735b5d2c75696e743235365b5d2c737472696e675b5d2c62797465735b5d2c737472696e6729a26469706673582212201c1b8ea2630878bfe38de401c3be05aa8c21633bf9a1ec64996515db193c9aaf64736f6c634300060a0033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xC1C CODESIZE SUB DUP1 PUSH2 0xC1C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x4D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0xA0 MSTORE SWAP2 SHL AND PUSH1 0x80 MSTORE PUSH2 0x9E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x6A DUP2 PUSH2 0x86 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x7B DUP2 PUSH2 0x86 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0xB41 PUSH2 0xDB PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1E8 MSTORE DUP1 PUSH2 0x261 MSTORE DUP1 PUSH2 0x46E MSTORE POP DUP1 PUSH2 0x31A MSTORE DUP1 PUSH2 0x3D2 MSTORE DUP1 PUSH2 0x44A MSTORE POP PUSH2 0xB41 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x9E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD5ABBA99 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD5ABBA99 EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0xF3D414C8 EQ PUSH2 0x111 JUMPI DUP1 PUSH4 0xF3F4B7EA EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0xF96DAE0A EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0xFD430085 EQ PUSH2 0x136 JUMPI PUSH2 0x9E JUMP JUMPDEST DUP1 PUSH4 0x538BA4F9 EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0x5CB8B5E3 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0xA4FED2CE EQ PUSH2 0xE3 JUMPI DUP1 PUSH4 0xD0AE50AE EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0xD3DA53A4 EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB PUSH2 0x13E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0x8E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD4 PUSH2 0xCF CALLDATASIZE PUSH1 0x4 PUSH2 0x747 JUMP JUMPDEST PUSH2 0x143 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x8FB JUMP JUMPDEST PUSH2 0xD4 PUSH2 0xF1 CALLDATASIZE PUSH1 0x4 PUSH2 0x782 JUMP JUMPDEST PUSH2 0x21C JUMP JUMPDEST PUSH2 0xD4 PUSH2 0x104 CALLDATASIZE PUSH1 0x4 PUSH2 0x658 JUMP JUMPDEST PUSH2 0x292 JUMP JUMPDEST PUSH2 0xD4 PUSH2 0x349 JUMP JUMPDEST PUSH2 0x119 PUSH2 0x3FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0x9F8 JUMP JUMPDEST PUSH2 0x119 PUSH2 0x42C JUMP JUMPDEST PUSH2 0xAB PUSH2 0x448 JUMP JUMPDEST PUSH2 0xAB PUSH2 0x46C JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 DUP9 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x67B JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAD8 PUSH1 0x34 SWAP2 CODECOPY DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A1 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x92B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE SWAP2 PUSH2 0x1BC SWAP2 PUSH2 0x8CB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH32 0x0 SWAP10 POP PUSH1 0x0 SWAP9 POP SWAP7 POP POP POP POP POP POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 DUP1 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x235 SWAP3 SWAP2 SWAP1 PUSH2 0xA0B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x15373E3D PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH32 0x0 SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP2 POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x64656C6567617465286164647265737329 PUSH1 0x78 SHL DUP2 MSTORE POP DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2D3 SWAP2 SWAP1 PUSH2 0x8E7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE SWAP2 PUSH2 0x2EE SWAP2 PUSH2 0x8CB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH32 0x0 SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP2 POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x64656C6567617465286164647265737329 PUSH1 0x78 SHL DUP2 MSTORE POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x38B SWAP2 SWAP1 PUSH2 0x8E7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE SWAP2 PUSH2 0x3A6 SWAP2 PUSH2 0x8CB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH32 0x0 SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP2 POP POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x64656C6567617465286164647265737329 PUSH1 0x78 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAD8 PUSH1 0x34 SWAP2 CODECOPY DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4A0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x4B3 PUSH2 0x4AE DUP3 PUSH2 0xA42 JUMP JUMPDEST PUSH2 0xA1B JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x4D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4FC JUMPI DUP2 MLOAD PUSH2 0x4EA DUP2 PUSH2 0xABF JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4D7 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x517 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x525 PUSH2 0x4AE DUP3 PUSH2 0xA42 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4FC JUMPI PUSH2 0x54D DUP9 DUP5 DUP5 MLOAD DUP11 ADD ADD PUSH2 0x60B JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x536 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x56F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x57D PUSH2 0x4AE DUP3 PUSH2 0xA42 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4FC JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5A1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5CD JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5DB PUSH2 0x4AE DUP3 PUSH2 0xA62 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x5F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x61B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x629 PUSH2 0x4AE DUP3 PUSH2 0xA62 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x640 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x651 DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xA8F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x669 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x674 DUP2 PUSH2 0xABF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x692 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x6A9 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x6B5 DUP10 DUP4 DUP11 ADD PUSH2 0x490 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x6CA JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x6D6 DUP10 DUP4 DUP11 ADD PUSH2 0x55F JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x6EB JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x6F7 DUP10 DUP4 DUP11 ADD PUSH2 0x507 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x70C JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x718 DUP10 DUP4 DUP11 ADD PUSH2 0x507 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x72D JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x73A DUP9 DUP3 DUP10 ADD PUSH2 0x60B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x758 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x76E JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x77A DUP5 DUP3 DUP6 ADD PUSH2 0x5BD JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x796 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x7AC JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7C7 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x7D3 DUP7 DUP3 DUP8 ADD PUSH2 0x5BD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MLOAD DUP1 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP6 POP DUP1 DUP2 DUP4 MUL DUP5 ADD ADD DUP2 DUP7 ADD DUP6 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x83F JUMPI PUSH1 0x1F NOT DUP7 DUP5 SUB ADD DUP10 MSTORE PUSH2 0x82D DUP4 DUP4 MLOAD PUSH2 0x89F JUMP JUMPDEST SWAP9 DUP5 ADD SWAP9 SWAP3 POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x811 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD DUP1 DUP2 SWAP7 POP DUP3 DUP5 MUL DUP2 ADD SWAP2 POP DUP3 DUP7 ADD DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x892 JUMPI DUP3 DUP5 SUB DUP10 MSTORE PUSH2 0x880 DUP5 DUP4 MLOAD PUSH2 0x89F JUMP JUMPDEST SWAP9 DUP6 ADD SWAP9 SWAP4 POP SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x868 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x8B7 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xA8F JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x8DD DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xA8F JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 AND DUP3 MSTORE DUP4 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x922 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x89F JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD PUSH1 0xA0 DUP4 MSTORE DUP1 DUP9 MLOAD PUSH2 0x942 DUP2 DUP5 PUSH2 0xA86 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 SWAP3 POP DUP3 DUP11 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x96E JUMPI PUSH2 0x960 DUP5 DUP4 MLOAD PUSH2 0x7DD JUMP JUMPDEST SWAP4 POP SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x94D JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP9 MLOAD PUSH2 0x985 DUP2 DUP5 PUSH2 0xA86 JUMP JUMPDEST SWAP2 POP DUP4 DUP11 ADD SWAP3 POP DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x9AF JUMPI PUSH2 0x9A1 DUP4 DUP6 MLOAD PUSH2 0x7EE JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x98E JUMP JUMPDEST POP POP DUP5 DUP2 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x9C3 DUP2 DUP10 PUSH2 0x84C JUMP JUMPDEST SWAP3 POP POP POP DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x9D9 DUP2 DUP7 PUSH2 0x7F6 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x80 DUP6 ADD MSTORE PUSH2 0x9EB DUP2 DUP7 PUSH2 0x89F JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x674 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x89F JUMP JUMPDEST SWAP2 DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xA3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xA58 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xA78 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAAA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA92 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xAB9 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xAD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID PUSH17 0x726F706F736528616464726573735B5D2C PUSH22 0x696E743235365B5D2C737472696E675B5D2C62797465 PUSH20 0x5B5D2C737472696E6729A2646970667358221220 SHR SHL DUP15 LOG2 PUSH4 0x878BFE3 DUP14 0xE4 ADD 0xC3 0xBE SDIV 0xAA DUP13 0x21 PUSH4 0x3BF9A1EC PUSH5 0x996515DB19 EXTCODECOPY SWAP11 0xAF PUSH5 0x736F6C6343 STOP MOD EXP STOP CALLER ",
              "sourceMap": "928:5137:0:-:0;;;1948:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2027:30:0;;;;;;;;2067:34;;;;;928:5137;;146:399:-1;;;278:2;266:9;257:7;253:23;249:32;246:2;;;-1:-1;;284:12;246:2;89:6;83:13;101:33;128:5;101:33;;;447:2;497:22;;83:13;336:74;;-1:-1;101:33;83:13;101:33;;;455:74;;;;240:305;;;;;;778:117;-1:-1;;;;;712:54;;837:35;;827:2;;886:1;;876:12;827:2;821:74;;;928:5137:0;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "14": [
                  {
                    "length": 32,
                    "start": 794
                  },
                  {
                    "length": 32,
                    "start": 978
                  },
                  {
                    "length": 32,
                    "start": 1098
                  }
                ],
                "16": [
                  {
                    "length": 32,
                    "start": 488
                  },
                  {
                    "length": 32,
                    "start": 609
                  },
                  {
                    "length": 32,
                    "start": 1134
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061009e5760003560e01c8063d5abba9911610066578063d5abba9914610109578063f3d414c814610111578063f3f4b7ea14610126578063f96dae0a1461012e578063fd430085146101365761009e565b8063538ba4f9146100a35780635cb8b5e3146100c1578063a4fed2ce146100e3578063d0ae50ae146100f6578063d3da53a4146100f6575b600080fd5b6100ab61013e565b6040516100b891906108e7565b60405180910390f35b6100d46100cf366004610747565b610143565b6040516100b8939291906108fb565b6100d46100f1366004610782565b61021c565b6100d4610104366004610658565b610292565b6100d4610349565b6101196103ff565b6040516100b891906109f8565b61011961042c565b6100ab610448565b6100ab61046c565b600081565b60008060608060608060608088806020019051810190610163919061067b565b945094509450945094506060604051806060016040528060348152602001610ad86034913986868686866040516024016101a195949392919061092b565b60408051601f1981840301815290829052916101bc916108cb565b6040519081900390206020820180516001600160e01b03166001600160e01b03199092169190911790527f000000000000000000000000000000000000000000000000000000000000000099506000985096505050505050509193909250565b6000806060808686604051602401610235929190610a0b565b60408051601f198184030181529190526020810180516001600160e01b03166315373e3d60e01b1790527f000000000000000000000000000000000000000000000000000000000000000094506000935091505093509350939050565b6000806060806040518060400160405280601181526020017064656c656761746528616464726573732960781b815250856040516024016102d391906108e7565b60408051601f1981840301815290829052916102ee916108cb565b6040519081900390206020820180516001600160e01b03166001600160e01b03199092169190911790527f00000000000000000000000000000000000000000000000000000000000000009450600093509150509193909250565b6000806060806040518060400160405280601181526020017064656c656761746528616464726573732960781b815250600060405160240161038b91906108e7565b60408051601f1981840301815290829052916103a6916108cb565b6040519081900390206020820180516001600160e01b03166001600160e01b03199092169190911790527f0000000000000000000000000000000000000000000000000000000000000000945060009350915050909192565b6040518060400160405280601181526020017064656c656761746528616464726573732960781b81525081565b604051806060016040528060348152602001610ad86034913981565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600082601f8301126104a0578081fd5b81516104b36104ae82610a42565b610a1b565b8181529150602080830190848101818402860182018710156104d457600080fd5b60005b848110156104fc5781516104ea81610abf565b845292820192908201906001016104d7565b505050505092915050565b600082601f830112610517578081fd5b81516105256104ae82610a42565b818152915060208083019084810160005b848110156104fc5761054d888484518a010161060b565b84529282019290820190600101610536565b600082601f83011261056f578081fd5b815161057d6104ae82610a42565b81815291506020808301908481018184028601820187101561059e57600080fd5b60005b848110156104fc578151845292820192908201906001016105a1565b600082601f8301126105cd578081fd5b81356105db6104ae82610a62565b91508082528360208285010111156105f257600080fd5b8060208401602084013760009082016020015292915050565b600082601f83011261061b578081fd5b81516106296104ae82610a62565b915080825283602082850101111561064057600080fd5b610651816020840160208601610a8f565b5092915050565b600060208284031215610669578081fd5b813561067481610abf565b9392505050565b600080600080600060a08688031215610692578081fd5b855167ffffffffffffffff808211156106a9578283fd5b6106b589838a01610490565b965060208801519150808211156106ca578283fd5b6106d689838a0161055f565b955060408801519150808211156106eb578283fd5b6106f789838a01610507565b9450606088015191508082111561070c578283fd5b61071889838a01610507565b9350608088015191508082111561072d578283fd5b5061073a8882890161060b565b9150509295509295909350565b600060208284031215610758578081fd5b813567ffffffffffffffff81111561076e578182fd5b61077a848285016105bd565b949350505050565b600080600060608486031215610796578283fd5b83359250602084013580151581146107ac578283fd5b9150604084013567ffffffffffffffff8111156107c7578182fd5b6107d3868287016105bd565b9150509250925092565b6001600160a01b0316815260200190565b815260200190565b60008282518085526020808601955080818302840101818601855b8481101561083f57601f1986840301895261082d83835161089f565b98840198925090830190600101610811565b5090979650505050505050565b6000815180845260208085018081965082840281019150828601855b8581101561089257828403895261088084835161089f565b98850198935090840190600101610868565b5091979650505050505050565b600081518084526108b7816020860160208601610a8f565b601f01601f19169290920160200192915050565b600082516108dd818460208701610a8f565b9190910192915050565b6001600160a01b0391909116815260200190565b600060018060a01b038516825283602083015260606040830152610922606083018461089f565b95945050505050565b600060a0820160a083528088516109428184610a86565b915060209250828a01845b8281101561096e576109608483516107dd565b93509084019060010161094d565b505050838103828501528088516109858184610a86565b9150838a019250845b818110156109af576109a18385516107ee565b93850193925060010161098e565b505084810360408601526109c3818961084c565b9250505082810360608401526109d981866107f6565b83810360808501526109eb818661089f565b9998505050505050505050565b600060208252610674602083018461089f565b9182521515602082015260400190565b60405181810167ffffffffffffffff81118282101715610a3a57600080fd5b604052919050565b600067ffffffffffffffff821115610a58578081fd5b5060209081020190565b600067ffffffffffffffff821115610a78578081fd5b50601f01601f191660200190565b90815260200190565b60005b83811015610aaa578181015183820152602001610a92565b83811115610ab9576000848401525b50505050565b6001600160a01b0381168114610ad457600080fd5b5056fe70726f706f736528616464726573735b5d2c75696e743235365b5d2c737472696e675b5d2c62797465735b5d2c737472696e6729a26469706673582212201c1b8ea2630878bfe38de401c3be05aa8c21633bf9a1ec64996515db193c9aaf64736f6c634300060a0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x9E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD5ABBA99 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD5ABBA99 EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0xF3D414C8 EQ PUSH2 0x111 JUMPI DUP1 PUSH4 0xF3F4B7EA EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0xF96DAE0A EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0xFD430085 EQ PUSH2 0x136 JUMPI PUSH2 0x9E JUMP JUMPDEST DUP1 PUSH4 0x538BA4F9 EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0x5CB8B5E3 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0xA4FED2CE EQ PUSH2 0xE3 JUMPI DUP1 PUSH4 0xD0AE50AE EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0xD3DA53A4 EQ PUSH2 0xF6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB PUSH2 0x13E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0x8E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD4 PUSH2 0xCF CALLDATASIZE PUSH1 0x4 PUSH2 0x747 JUMP JUMPDEST PUSH2 0x143 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x8FB JUMP JUMPDEST PUSH2 0xD4 PUSH2 0xF1 CALLDATASIZE PUSH1 0x4 PUSH2 0x782 JUMP JUMPDEST PUSH2 0x21C JUMP JUMPDEST PUSH2 0xD4 PUSH2 0x104 CALLDATASIZE PUSH1 0x4 PUSH2 0x658 JUMP JUMPDEST PUSH2 0x292 JUMP JUMPDEST PUSH2 0xD4 PUSH2 0x349 JUMP JUMPDEST PUSH2 0x119 PUSH2 0x3FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0x9F8 JUMP JUMPDEST PUSH2 0x119 PUSH2 0x42C JUMP JUMPDEST PUSH2 0xAB PUSH2 0x448 JUMP JUMPDEST PUSH2 0xAB PUSH2 0x46C JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 PUSH1 0x60 DUP1 DUP9 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x67B JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAD8 PUSH1 0x34 SWAP2 CODECOPY DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A1 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x92B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE SWAP2 PUSH2 0x1BC SWAP2 PUSH2 0x8CB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH32 0x0 SWAP10 POP PUSH1 0x0 SWAP9 POP SWAP7 POP POP POP POP POP POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 DUP1 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x235 SWAP3 SWAP2 SWAP1 PUSH2 0xA0B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x15373E3D PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH32 0x0 SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP2 POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x64656C6567617465286164647265737329 PUSH1 0x78 SHL DUP2 MSTORE POP DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2D3 SWAP2 SWAP1 PUSH2 0x8E7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE SWAP2 PUSH2 0x2EE SWAP2 PUSH2 0x8CB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH32 0x0 SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP2 POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x60 DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x64656C6567617465286164647265737329 PUSH1 0x78 SHL DUP2 MSTORE POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x38B SWAP2 SWAP1 PUSH2 0x8E7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE SWAP2 PUSH2 0x3A6 SWAP2 PUSH2 0x8CB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB SWAP1 KECCAK256 PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH32 0x0 SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP2 POP POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x11 DUP2 MSTORE PUSH1 0x20 ADD PUSH17 0x64656C6567617465286164647265737329 PUSH1 0x78 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAD8 PUSH1 0x34 SWAP2 CODECOPY DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4A0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x4B3 PUSH2 0x4AE DUP3 PUSH2 0xA42 JUMP JUMPDEST PUSH2 0xA1B JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x4D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4FC JUMPI DUP2 MLOAD PUSH2 0x4EA DUP2 PUSH2 0xABF JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4D7 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x517 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x525 PUSH2 0x4AE DUP3 PUSH2 0xA42 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4FC JUMPI PUSH2 0x54D DUP9 DUP5 DUP5 MLOAD DUP11 ADD ADD PUSH2 0x60B JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x536 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x56F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x57D PUSH2 0x4AE DUP3 PUSH2 0xA42 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x59E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4FC JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5A1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5CD JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x5DB PUSH2 0x4AE DUP3 PUSH2 0xA62 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x5F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x61B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x629 PUSH2 0x4AE DUP3 PUSH2 0xA62 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x640 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x651 DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xA8F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x669 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x674 DUP2 PUSH2 0xABF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x692 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x6A9 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x6B5 DUP10 DUP4 DUP11 ADD PUSH2 0x490 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x6CA JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x6D6 DUP10 DUP4 DUP11 ADD PUSH2 0x55F JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x6EB JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x6F7 DUP10 DUP4 DUP11 ADD PUSH2 0x507 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x70C JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x718 DUP10 DUP4 DUP11 ADD PUSH2 0x507 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x72D JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x73A DUP9 DUP3 DUP10 ADD PUSH2 0x60B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x758 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x76E JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x77A DUP5 DUP3 DUP6 ADD PUSH2 0x5BD JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x796 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x7AC JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7C7 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x7D3 DUP7 DUP3 DUP8 ADD PUSH2 0x5BD JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MLOAD DUP1 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP6 POP DUP1 DUP2 DUP4 MUL DUP5 ADD ADD DUP2 DUP7 ADD DUP6 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x83F JUMPI PUSH1 0x1F NOT DUP7 DUP5 SUB ADD DUP10 MSTORE PUSH2 0x82D DUP4 DUP4 MLOAD PUSH2 0x89F JUMP JUMPDEST SWAP9 DUP5 ADD SWAP9 SWAP3 POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x811 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD DUP1 DUP2 SWAP7 POP DUP3 DUP5 MUL DUP2 ADD SWAP2 POP DUP3 DUP7 ADD DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x892 JUMPI DUP3 DUP5 SUB DUP10 MSTORE PUSH2 0x880 DUP5 DUP4 MLOAD PUSH2 0x89F JUMP JUMPDEST SWAP9 DUP6 ADD SWAP9 SWAP4 POP SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x868 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x8B7 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xA8F JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x8DD DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xA8F JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 AND DUP3 MSTORE DUP4 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x922 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x89F JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD PUSH1 0xA0 DUP4 MSTORE DUP1 DUP9 MLOAD PUSH2 0x942 DUP2 DUP5 PUSH2 0xA86 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 SWAP3 POP DUP3 DUP11 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x96E JUMPI PUSH2 0x960 DUP5 DUP4 MLOAD PUSH2 0x7DD JUMP JUMPDEST SWAP4 POP SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x94D JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP1 DUP9 MLOAD PUSH2 0x985 DUP2 DUP5 PUSH2 0xA86 JUMP JUMPDEST SWAP2 POP DUP4 DUP11 ADD SWAP3 POP DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x9AF JUMPI PUSH2 0x9A1 DUP4 DUP6 MLOAD PUSH2 0x7EE JUMP JUMPDEST SWAP4 DUP6 ADD SWAP4 SWAP3 POP PUSH1 0x1 ADD PUSH2 0x98E JUMP JUMPDEST POP POP DUP5 DUP2 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x9C3 DUP2 DUP10 PUSH2 0x84C JUMP JUMPDEST SWAP3 POP POP POP DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x9D9 DUP2 DUP7 PUSH2 0x7F6 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x80 DUP6 ADD MSTORE PUSH2 0x9EB DUP2 DUP7 PUSH2 0x89F JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x674 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x89F JUMP JUMPDEST SWAP2 DUP3 MSTORE ISZERO ISZERO PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xA3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xA58 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xA78 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAAA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA92 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xAB9 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xAD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID PUSH17 0x726F706F736528616464726573735B5D2C PUSH22 0x696E743235365B5D2C737472696E675B5D2C62797465 PUSH20 0x5B5D2C737472696E6729A2646970667358221220 SHR SHL DUP15 LOG2 PUSH4 0x878BFE3 DUP14 0xE4 ADD 0xC3 0xBE SDIV 0xAA DUP13 0x21 PUSH4 0x3BF9A1EC PUSH5 0x996515DB19 EXTCODECOPY SWAP11 0xAF PUSH5 0x736F6C6343 STOP MOD EXP STOP CALLER ",
              "sourceMap": "928:5137:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1398:81;;;:::i;:::-;;;;;;;;;;;;;;;;5386:677;;;;;;;;;:::i;:::-;;;;;;;;;;2634:357;;;;;;;;;:::i;3465:288::-;;;;;;;;;:::i;4762:270::-;;;:::i;1328:63::-;;;:::i;:::-;;;;;;;;1151:97;;;:::i;1574:40::-;;;:::i;1677:38::-;;;:::i;1398:81::-;1437:42;1398:81;:::o;5386:677::-;5465:7;5474;5483:12;5553:24;5591:23;5628:26;5668:24;5706:25;5755:13;5744:72;;;;;;;;;;;;;;5539:277;;;;;;;;;;5891:21;5939:17;;;;;;;;;;;;;;;;;5958:7;5967:6;5975:10;5987:9;5998:11;5915:95;;;;;;;;;;;;;;;;;-1:-1:-1;;5915:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5915:95:0;-1:-1:-1;;;;;;5915:95:0;;;;;;;;;6029:13;;-1:-1:-1;;;;5915:95:0;-1:-1:-1;;;;;;;5386:677:0;;;;;:::o;2634:357::-;2744:7;2753;2762:12;2842:21;2916:11;2929:8;2866:72;;;;;;;;;;;;;;-1:-1:-1;;2866:72:0;;;;;;;;;;;;;;-1:-1:-1;;;;;2866:72:0;-1:-1:-1;;;2866:72:0;;;2957:13;;-1:-1:-1;;;;2866:72:0;-1:-1:-1;;2634:357:0;;;;;;;:::o;3465:288::-;3537:7;3546;3555:12;3619:21;3667:18;;;;;;;;;;;;;-1:-1:-1;;;3667:18:0;;;3687:10;3643:55;;;;;;;;;;;;;-1:-1:-1;;3643:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3643:55:0;-1:-1:-1;;;;;;3643:55:0;;;;;;;;;3717:15;;-1:-1:-1;;;;3643:55:0;-1:-1:-1;;3465:288:0;;;;;:::o;4762:270::-;4814:7;4823;4832:12;4896:21;4944:18;;;;;;;;;;;;;-1:-1:-1;;;4944:18:0;;;1437:42;4920:57;;;;;;;;;;;;;-1:-1:-1;;4920:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4920:57:0;-1:-1:-1;;;;;;4920:57:0;;;;;;;;;4996:15;;-1:-1:-1;;;;4920:57:0;-1:-1:-1;;4762:270:0;;;:::o;1328:63::-;;;;;;;;;;;;;;-1:-1:-1;;;1328:63:0;;;;:::o;1151:97::-;;;;;;;;;;;;;;;;;;;:::o;1574:40::-;;;:::o;1677:38::-;;;:::o;301:722:-1:-;;429:3;422:4;414:6;410:17;406:27;396:2;;-1:-1;;437:12;396:2;477:6;471:13;499:80;514:64;571:6;514:64;;;499:80;;;607:21;;;490:89;-1:-1;651:4;664:14;;;;639:17;;;753;;;744:27;;;;741:36;-1:-1;738:2;;;790:1;;780:12;738:2;815:1;800:217;825:6;822:1;819:13;800:217;;;226:6;220:13;238:33;265:5;238:33;;;893:61;;968:14;;;;996;;;;847:1;840:9;800:217;;;804:14;;;;;389:634;;;;;1047:713;;1184:3;1177:4;1169:6;1165:17;1161:27;1151:2;;-1:-1;;1192:12;1151:2;1232:6;1226:13;1254:89;1269:73;1335:6;1269:73;;1254:89;1371:21;;;1245:98;-1:-1;1415:4;1428:14;;;;1403:17;;;1523:1;1508:246;1533:6;1530:1;1527:13;1508:246;;;1633:57;1686:3;1415:4;1609:3;1603:10;1407:6;1591:23;;1633:57;;;1621:70;;1705:14;;;;1733;;;;1555:1;1548:9;1508:246;;2527:722;;2655:3;2648:4;2640:6;2636:17;2632:27;2622:2;;-1:-1;;2663:12;2622:2;2703:6;2697:13;2725:80;2740:64;2797:6;2740:64;;2725:80;2833:21;;;2716:89;-1:-1;2877:4;2890:14;;;;2865:17;;;2979;;;2970:27;;;;2967:36;-1:-1;2964:2;;;3016:1;;3006:12;2964:2;3041:1;3026:217;3051:6;3048:1;3045:13;3026:217;;;4956:13;;3119:61;;3194:14;;;;3222;;;;3073:1;3066:9;3026:217;;3389:440;;3490:3;3483:4;3475:6;3471:17;3467:27;3457:2;;-1:-1;;3498:12;3457:2;3545:6;3532:20;3567:64;3582:48;3623:6;3582:48;;3567:64;3558:73;;3651:6;3644:5;3637:21;3755:3;3687:4;3746:6;3679;3737:16;;3734:25;3731:2;;;3772:1;;3762:12;3731:2;23485:6;3687:4;3679:6;3675:17;3687:4;3713:5;3709:16;23462:30;23541:1;23523:16;;;3687:4;23523:16;23516:27;3713:5;3450:379;-1:-1;;3450:379;3838:442;;3950:3;3943:4;3935:6;3931:17;3927:27;3917:2;;-1:-1;;3958:12;3917:2;3998:6;3992:13;4020:64;4035:48;4076:6;4035:48;;4020:64;4011:73;;4104:6;4097:5;4090:21;4208:3;4140:4;4199:6;4132;4190:16;;4187:25;4184:2;;;4225:1;;4215:12;4184:2;4235:39;4267:6;4140:4;4166:5;4162:16;4140:4;4132:6;4128:17;4235:39;;;;3910:370;;;;;5019:241;;5123:2;5111:9;5102:7;5098:23;5094:32;5091:2;;;-1:-1;;5129:12;5091:2;85:6;72:20;97:33;124:5;97:33;;;5181:63;5085:175;-1:-1;;;5085:175;5267:1462;;;;;;5579:3;5567:9;5558:7;5554:23;5550:33;5547:2;;;-1:-1;;5586:12;5547:2;5637:17;5631:24;5675:18;;5667:6;5664:30;5661:2;;;-1:-1;;5697:12;5661:2;5727:89;5808:7;5799:6;5788:9;5784:22;5727:89;;;5717:99;;5874:2;5863:9;5859:18;5853:25;5839:39;;5675:18;5890:6;5887:30;5884:2;;;-1:-1;;5920:12;5884:2;5950:89;6031:7;6022:6;6011:9;6007:22;5950:89;;;5940:99;;6097:2;6086:9;6082:18;6076:25;6062:39;;5675:18;6113:6;6110:30;6107:2;;;-1:-1;;6143:12;6107:2;6173:99;6264:7;6255:6;6244:9;6240:22;6173:99;;;6163:109;;6330:2;6319:9;6315:18;6309:25;6295:39;;5675:18;6346:6;6343:30;6340:2;;;-1:-1;;6376:12;6340:2;6406:98;6496:7;6487:6;6476:9;6472:22;6406:98;;;6396:108;;6562:3;6551:9;6547:19;6541:26;6527:40;;5675:18;6579:6;6576:30;6573:2;;;-1:-1;;6609:12;6573:2;;6639:74;6705:7;6696:6;6685:9;6681:22;6639:74;;;6629:84;;;5541:1188;;;;;;;;;6736:345;;6849:2;6837:9;6828:7;6824:23;6820:32;6817:2;;;-1:-1;;6855:12;6817:2;6913:17;6900:31;6951:18;6943:6;6940:30;6937:2;;;-1:-1;;6973:12;6937:2;7003:62;7057:7;7048:6;7037:9;7033:22;7003:62;;;6993:72;6811:270;-1:-1;;;;6811:270;7088:589;;;;7232:2;7220:9;7211:7;7207:23;7203:32;7200:2;;;-1:-1;;7238:12;7200:2;4821:6;4808:20;7290:63;;7390:2;7430:9;7426:22;3321:20;24144:5;23170:13;23163:21;24122:5;24119:32;24109:2;;-1:-1;;24155:12;24109:2;7398:60;-1:-1;7523:2;7508:18;;7495:32;7547:18;7536:30;;7533:2;;;-1:-1;;7569:12;7533:2;7599:62;7653:7;7644:6;7633:9;7629:22;7599:62;;;7589:72;;;7194:483;;;;;;7685:173;-1:-1;;;;;23258:54;8509:37;;7847:4;7838:14;;7765:93;8267:173;13963:37;;8429:4;8420:14;;8347:93;9434:920;;9583:77;9654:5;20191:12;21550:6;21545:3;21538:19;21587:4;;21582:3;21578:14;9666:102;;21587:4;;9825:6;9821:17;21582:3;9812:27;;21587:4;9919:5;19552:14;-1:-1;9958:357;9983:6;9980:1;9977:13;9958:357;;;10035:20;;21582:3;10039:4;10035:20;;10030:3;10023:33;7986:64;8046:3;10090:6;10084:13;7986:64;;;10294:14;;;;10104:90;-1:-1;21029:14;;;;10005:1;9998:9;9958:357;;;-1:-1;10338:10;;9576:778;-1:-1;;;;;;;9576:778;10391:928;;10614:5;20191:12;21550:6;21545:3;21538:19;21587:4;;21582:3;21578:14;10626:103;;;;21587:4;10786:6;10782:17;10777:3;10773:27;10761:39;;21587:4;10881:5;19552:14;-1:-1;10920:360;10945:6;10942:1;10939:13;10920:360;;;11007:9;11001:4;10997:20;10992:3;10985:33;8186:66;8248:3;11052:6;11046:13;8186:66;;;11259:14;;;;11066:92;-1:-1;21029:14;;;;10967:1;10960:9;10920:360;;;-1:-1;11303:10;;10535:784;-1:-1;;;;;;;10535:784;12167:323;;12299:5;20191:12;21550:6;21545:3;21538:19;12382:52;12427:6;21587:4;21582:3;21578:14;21587:4;12408:5;12404:16;12382:52;;;10035:20;23902:14;-1:-1;;23898:28;12446:39;;;;21587:4;12446:39;;12247:243;-1:-1;;12247:243;14132:275;;13698:5;20191:12;13810:52;13855:6;13850:3;13843:4;13836:5;13832:16;13810:52;;;13874:16;;;;;14268:139;-1:-1;;14268:139;14414:222;-1:-1;;;;;23258:54;;;;8509:37;;14541:2;14526:18;;14512:124;14643:528;;5675:18;;23269:42;;;23262:5;23258:54;8516:3;8509:37;13993:5;15008:2;14997:9;14993:18;13963:37;14844:2;15045;15034:9;15030:18;15023:48;15085:76;14844:2;14833:9;14829:18;15147:6;15085:76;;;15077:84;14815:356;-1:-1;;;;;14815:356;15178:1424;;15675:3;15664:9;15660:19;15675:3;15697:17;15690:47;15751:108;8902:5;20191:12;8921:86;9000:6;8995:3;8921:86;;;8914:93;;19561:4;;;;9078:5;19552:14;-1:-1;9117:260;9142:6;9139:1;9136:13;9117:260;;;9230:63;9289:3;9209:6;9203:13;9230:63;;;9223:70;-1:-1;21029:14;;;;9164:1;9157:9;9117:260;;;9121:14;;;15907:9;15901:4;15897:20;19561:4;15881:9;15877:18;15870:48;15932:108;11551:5;20191:12;11570:86;11649:6;11644:3;11570:86;;;11563:93;;19561:4;11727:5;19552:14;11739:21;;-1:-1;11766:260;11791:6;11788:1;11785:13;11766:260;;;11879:63;11938:3;11858:6;11852:13;11879:63;;;21029:14;;;;11872:70;-1:-1;9164:1;11806:9;11766:260;;;11770:14;;16088:9;16082:4;16078:20;16073:2;16062:9;16058:18;16051:48;16113:128;16236:4;16227:6;16113:128;;;16105:136;;;;16289:9;16283:4;16279:20;16274:2;16263:9;16259:18;16252:48;16314:126;16435:4;16426:6;16314:126;;;16489:9;16483:4;16479:20;16473:3;16462:9;16458:19;16451:49;16514:78;16587:4;16578:6;16514:78;;;16506:86;15646:956;-1:-1;;;;;;;;;15646:956;16609:310;;16756:2;16777:17;16770:47;16831:78;16756:2;16745:9;16741:18;16895:6;16831:78;;16926:321;13963:37;;;23170:13;23163:21;17233:2;17218:18;;12121:34;17075:2;17060:18;;17046:201;17254:256;17316:2;17310:9;17342:17;;;17417:18;17402:34;;17438:22;;;17399:62;17396:2;;;17474:1;;17464:12;17396:2;17316;17483:22;17294:216;;-1:-1;17294:216;17517:304;;17676:18;17668:6;17665:30;17662:2;;;-1:-1;;17698:12;17662:2;-1:-1;17743:4;17731:17;;;17796:15;;17599:222;18780:321;;18923:18;18915:6;18912:30;18909:2;;;-1:-1;;18945:12;18909:2;-1:-1;10035:20;18999:17;-1:-1;;18995:33;19086:4;19076:15;;18846:255;21420:178;21538:19;;;21587:4;21578:14;;21531:67;23558:268;23623:1;23630:101;23644:6;23641:1;23638:13;23630:101;;;23711:11;;;23705:18;23692:11;;;23685:39;23666:2;23659:10;23630:101;;;23746:6;23743:1;23740:13;23737:2;;;23623:1;23802:6;23797:3;23793:16;23786:27;23737:2;;23607:219;;;;23939:117;-1:-1;;;;;23258:54;;23998:35;;23988:2;;24047:1;;24037:12;23988:2;23982:74;"
            },
            "methodIdentifiers": {
              "DELEGATE_SIGNATURE()": "f3d414c8",
              "PROPOSE_SIGNATURE()": "f3f4b7ea",
              "ZERO_ADDRESS()": "538ba4f9",
              "getDelegateCalldata(address)": "d0ae50ae",
              "getProposeCalldata(bytes)": "5cb8b5e3",
              "getRegisterCalldata(address)": "d3da53a4",
              "getRevokeCalldata()": "d5abba99",
              "getVoteCalldata(uint256,bool,bytes)": "a4fed2ce",
              "governanceToken()": "f96dae0a",
              "governorAlpha()": "fd430085"
            }
          }
        }
      }
    },
    "sources": {
      "contracts/protocol/integration/governance/CompoundLikeGovernanceAdapter.sol": {
        "ast": {
          "absolutePath": "contracts/protocol/integration/governance/CompoundLikeGovernanceAdapter.sol",
          "exportedSymbols": {
            "CompoundLikeGovernanceAdapter": [
              207
            ]
          },
          "id": 208,
          "license": "Apache License",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "0.6",
                ".10"
              ],
              "nodeType": "PragmaDirective",
              "src": "655:23:0"
            },
            {
              "id": 2,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "679:35:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 3,
                "nodeType": "StructuredDocumentation",
                "src": "717:210:0",
                "text": " @title CompoundLikeGovernanceAdapter\n @author Set Protocol\n Governance adapter for Compound-like governance systems (e.g. Uniswap) that returns data for voting, delegating and making proposals"
              },
              "fullyImplemented": true,
              "id": 207,
              "linearizedBaseContracts": [
                207
              ],
              "name": "CompoundLikeGovernanceAdapter",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "functionSelector": "f3f4b7ea",
                  "id": 6,
                  "mutability": "constant",
                  "name": "PROPOSE_SIGNATURE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 207,
                  "src": "1151:97:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1151:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "70726f706f736528616464726573735b5d2c75696e743235365b5d2c737472696e675b5d2c62797465735b5d2c737472696e6729",
                    "id": 5,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1194:54:0",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_da95691a8ecd75fda62a6d7fa1f00f0435e15a380eb69f49bc44a2b26d485645",
                      "typeString": "literal_string \"propose(address[],uint256[],string[],bytes[],string)\""
                    },
                    "value": "propose(address[],uint256[],string[],bytes[],string)"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "f3d414c8",
                  "id": 9,
                  "mutability": "constant",
                  "name": "DELEGATE_SIGNATURE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 207,
                  "src": "1328:63:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1328:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "64656c6567617465286164647265737329",
                    "id": 8,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1372:19:0",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_5c19a95c96fe5699f69181241d04ecef12a0c89506c08c7360f0f7e9a556859f",
                      "typeString": "literal_string \"delegate(address)\""
                    },
                    "value": "delegate(address)"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "538ba4f9",
                  "id": 12,
                  "mutability": "constant",
                  "name": "ZERO_ADDRESS",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 207,
                  "src": "1398:81:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1398:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307830303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 11,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1437:42:0",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    },
                    "value": "0x0000000000000000000000000000000000000000"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "f96dae0a",
                  "id": 14,
                  "mutability": "immutable",
                  "name": "governanceToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 207,
                  "src": "1574:40:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1574:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "fd430085",
                  "id": 16,
                  "mutability": "immutable",
                  "name": "governorAlpha",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 207,
                  "src": "1677:38:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1677:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 32,
                    "nodeType": "Block",
                    "src": "2017:91:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 26,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 24,
                            "name": "governorAlpha",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16,
                            "src": "2027:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 25,
                            "name": "_governorAlpha",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19,
                            "src": "2043:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2027:30:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 27,
                        "nodeType": "ExpressionStatement",
                        "src": "2027:30:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 30,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 28,
                            "name": "governanceToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14,
                            "src": "2067:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 29,
                            "name": "_governanceToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21,
                            "src": "2085:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2067:34:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 31,
                        "nodeType": "ExpressionStatement",
                        "src": "2067:34:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 17,
                    "nodeType": "StructuredDocumentation",
                    "src": "1771:172:0",
                    "text": " Set state variables\n @param _governorAlpha    Address of Governor Alpha contract\n @param _governanceToken  Address of governance token"
                  },
                  "id": 33,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 22,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19,
                        "mutability": "mutable",
                        "name": "_governorAlpha",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 33,
                        "src": "1960:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1960:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21,
                        "mutability": "mutable",
                        "name": "_governanceToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 33,
                        "src": "1984:24:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1984:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1959:50:0"
                  },
                  "returnParameters": {
                    "id": 23,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2017:0:0"
                  },
                  "scope": 207,
                  "src": "1948:160:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 63,
                    "nodeType": "Block",
                    "src": "2776:215:0",
                    "statements": [
                      {
                        "assignments": [
                          50
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 50,
                            "mutability": "mutable",
                            "name": "callData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 63,
                            "src": "2842:21:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 49,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2842:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 57,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "63617374566f74652875696e743235362c626f6f6c29",
                              "id": 53,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2890:24:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_15373e3de2698d81e9776e559e3cc8915e0960e567f817c7530ef55374006046",
                                "typeString": "literal_string \"castVote(uint256,bool)\""
                              },
                              "value": "castVote(uint256,bool)"
                            },
                            {
                              "argumentTypes": null,
                              "id": 54,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 36,
                              "src": "2916:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 55,
                              "name": "_support",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38,
                              "src": "2929:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_15373e3de2698d81e9776e559e3cc8915e0960e567f817c7530ef55374006046",
                                "typeString": "literal_string \"castVote(uint256,bool)\""
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 51,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "2866:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 52,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSignature",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2866:23:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 56,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2866:72:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2842:96:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 58,
                              "name": "governorAlpha",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16,
                              "src": "2957:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 59,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2972:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 60,
                              "name": "callData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 50,
                              "src": "2975:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "id": 61,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2956:28:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_rational_0_by_1_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(address,int_const 0,bytes memory)"
                          }
                        },
                        "functionReturnParameters": 48,
                        "id": 62,
                        "nodeType": "Return",
                        "src": "2949:35:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 34,
                    "nodeType": "StructuredDocumentation",
                    "src": "2177:452:0",
                    "text": " Generates the calldata to vote on a proposal. Bytes data paramater is unused in Compound\n @param _proposalId           ID of the proposal to vote on\n @param _support              Boolean indicating whether to support proposal\n @return address              Target contract address\n @return uint256              Total quantity of ETH (Set to 0)\n @return bytes                Propose calldata"
                  },
                  "functionSelector": "a4fed2ce",
                  "id": 64,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getVoteCalldata",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 41,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 36,
                        "mutability": "mutable",
                        "name": "_proposalId",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 64,
                        "src": "2659:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 35,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2659:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 38,
                        "mutability": "mutable",
                        "name": "_support",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 64,
                        "src": "2680:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 37,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2680:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 40,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 64,
                        "src": "2695:12:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 39,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2695:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2658:62:0"
                  },
                  "returnParameters": {
                    "id": 48,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 64,
                        "src": "2744:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2744:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 45,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 64,
                        "src": "2753:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2753:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 47,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 64,
                        "src": "2762:12:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 46,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2762:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2743:32:0"
                  },
                  "scope": 207,
                  "src": "2634:357:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 89,
                    "nodeType": "Block",
                    "src": "3569:184:0",
                    "statements": [
                      {
                        "assignments": [
                          77
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 77,
                            "mutability": "mutable",
                            "name": "callData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 89,
                            "src": "3619:21:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 76,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3619:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 83,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 80,
                              "name": "DELEGATE_SIGNATURE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9,
                              "src": "3667:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 81,
                              "name": "_delegatee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 67,
                              "src": "3687:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 78,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "3643:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 79,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSignature",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3643:23:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 82,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3643:55:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3619:79:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 84,
                              "name": "governanceToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14,
                              "src": "3717:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 85,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3734:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 86,
                              "name": "callData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 77,
                              "src": "3737:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "id": 87,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3716:30:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_rational_0_by_1_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(address,int_const 0,bytes memory)"
                          }
                        },
                        "functionReturnParameters": 75,
                        "id": 88,
                        "nodeType": "Return",
                        "src": "3709:37:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 65,
                    "nodeType": "StructuredDocumentation",
                    "src": "2997:463:0",
                    "text": " Generates the calldata to delegate votes to another ETH address. Self and zero address allowed, which is equivalent to registering and revoking in Compound\n like governance systems.\n @param _delegatee            Address of the delegatee\n @return address              Target contract address\n @return uint256              Total quantity of ETH (Set to 0)\n @return bytes                Propose calldata"
                  },
                  "functionSelector": "d0ae50ae",
                  "id": 90,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getDelegateCalldata",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 68,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 67,
                        "mutability": "mutable",
                        "name": "_delegatee",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 90,
                        "src": "3494:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 66,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3494:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3493:20:0"
                  },
                  "returnParameters": {
                    "id": 75,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 70,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 90,
                        "src": "3537:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 69,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3537:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 72,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 90,
                        "src": "3546:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 71,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3546:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 74,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 90,
                        "src": "3555:12:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 73,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3555:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3536:32:0"
                  },
                  "scope": 207,
                  "src": "3465:288:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 115,
                    "nodeType": "Block",
                    "src": "4254:183:0",
                    "statements": [
                      {
                        "assignments": [
                          103
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 103,
                            "mutability": "mutable",
                            "name": "callData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 115,
                            "src": "4304:21:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 102,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "4304:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 109,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 106,
                              "name": "DELEGATE_SIGNATURE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9,
                              "src": "4352:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 107,
                              "name": "_setToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 93,
                              "src": "4372:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 104,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "4328:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 105,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSignature",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4328:23:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4328:54:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4304:78:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 110,
                              "name": "governanceToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14,
                              "src": "4401:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 111,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4418:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 112,
                              "name": "callData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 103,
                              "src": "4421:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "id": 113,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4400:30:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_rational_0_by_1_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(address,int_const 0,bytes memory)"
                          }
                        },
                        "functionReturnParameters": 101,
                        "id": 114,
                        "nodeType": "Return",
                        "src": "4393:37:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 91,
                    "nodeType": "StructuredDocumentation",
                    "src": "3759:387:0",
                    "text": " Generates the calldata to register for voting. This is equivalent to delegating to the SetToken address in Compound.\n @param _setToken             Address of SetToken\n @return address              Target contract address\n @return uint256              Total quantity of ETH (Set to 0)\n @return bytes                Propose calldata"
                  },
                  "functionSelector": "d3da53a4",
                  "id": 116,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRegisterCalldata",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 94,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 93,
                        "mutability": "mutable",
                        "name": "_setToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 116,
                        "src": "4180:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 92,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4180:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4179:19:0"
                  },
                  "returnParameters": {
                    "id": 101,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 96,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 116,
                        "src": "4222:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 95,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4222:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 98,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 116,
                        "src": "4231:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 97,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4231:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 100,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 116,
                        "src": "4240:12:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 99,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4240:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4221:32:0"
                  },
                  "scope": 207,
                  "src": "4151:286:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 139,
                    "nodeType": "Block",
                    "src": "4846:186:0",
                    "statements": [
                      {
                        "assignments": [
                          127
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 127,
                            "mutability": "mutable",
                            "name": "callData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 139,
                            "src": "4896:21:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 126,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "4896:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 133,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 130,
                              "name": "DELEGATE_SIGNATURE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9,
                              "src": "4944:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 131,
                              "name": "ZERO_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12,
                              "src": "4964:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 128,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "4920:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 129,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSignature",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4920:23:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4920:57:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4896:81:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 134,
                              "name": "governanceToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14,
                              "src": "4996:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 135,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5013:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 136,
                              "name": "callData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 127,
                              "src": "5016:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "id": 137,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4995:30:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_rational_0_by_1_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(address,int_const 0,bytes memory)"
                          }
                        },
                        "functionReturnParameters": 125,
                        "id": 138,
                        "nodeType": "Return",
                        "src": "4988:37:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 117,
                    "nodeType": "StructuredDocumentation",
                    "src": "4443:314:0",
                    "text": " Generates the calldata to revoke voting. This is equivalent to delegating to the zero address in Compound.\n @return address              Target contract address\n @return uint256              Total quantity of ETH (Set to 0)\n @return bytes                Propose calldata"
                  },
                  "functionSelector": "d5abba99",
                  "id": 140,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRevokeCalldata",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 118,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4788:2:0"
                  },
                  "returnParameters": {
                    "id": 125,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 120,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 140,
                        "src": "4814:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 119,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4814:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 122,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 140,
                        "src": "4823:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 121,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4823:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 124,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 140,
                        "src": "4832:12:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 123,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4832:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4813:32:0"
                  },
                  "scope": 207,
                  "src": "4762:270:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 205,
                    "nodeType": "Block",
                    "src": "5497:566:0",
                    "statements": [
                      {
                        "assignments": [
                          156,
                          159,
                          162,
                          165,
                          167
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 156,
                            "mutability": "mutable",
                            "name": "targets",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 205,
                            "src": "5553:24:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 154,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5553:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 155,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "5553:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 159,
                            "mutability": "mutable",
                            "name": "values",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 205,
                            "src": "5591:23:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 157,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "5591:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 158,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "5591:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 162,
                            "mutability": "mutable",
                            "name": "signatures",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 205,
                            "src": "5628:26:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                              "typeString": "string[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 160,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "5628:6:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage_ptr",
                                  "typeString": "string"
                                }
                              },
                              "id": 161,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "5628:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                                "typeString": "string[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 165,
                            "mutability": "mutable",
                            "name": "calldatas",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 205,
                            "src": "5668:24:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                              "typeString": "bytes[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 163,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "5668:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage_ptr",
                                  "typeString": "bytes"
                                }
                              },
                              "id": 164,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "5668:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                                "typeString": "bytes[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 167,
                            "mutability": "mutable",
                            "name": "description",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 205,
                            "src": "5706:25:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 166,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "5706:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 187,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 170,
                              "name": "_proposalData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 143,
                              "src": "5755:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 172,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5771:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 171,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5771:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 173,
                                  "indexExpression": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5771:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_address_$dyn_memory_ptr_$",
                                    "typeString": "type(address[] memory)"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 175,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5781:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 174,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5781:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 176,
                                  "indexExpression": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5781:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "type(uint256[] memory)"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 178,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5791:6:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                      "typeString": "type(string storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 177,
                                      "name": "string",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5791:6:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 179,
                                  "indexExpression": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5791:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$",
                                    "typeString": "type(string memory[] memory)"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 181,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5800:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 180,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5800:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 182,
                                  "indexExpression": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5800:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                                    "typeString": "type(bytes memory[] memory)"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 184,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5808:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                    "typeString": "type(string storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 183,
                                    "name": "string",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5808:6:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                }
                              ],
                              "id": 185,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5770:45:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_$_t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_$_t_type$_t_string_storage_ptr_$_$",
                                "typeString": "tuple(type(address[] memory),type(uint256[] memory),type(string memory[] memory),type(bytes memory[] memory),type(string storage pointer))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_$_t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_$_t_type$_t_string_storage_ptr_$_$",
                                "typeString": "tuple(type(address[] memory),type(uint256[] memory),type(string memory[] memory),type(bytes memory[] memory),type(string storage pointer))"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 168,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "5744:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 169,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5744:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5744:72:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_string_memory_ptr_$",
                            "typeString": "tuple(address[] memory,uint256[] memory,string memory[] memory,bytes memory[] memory,string memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5539:277:0"
                      },
                      {
                        "assignments": [
                          189
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 189,
                            "mutability": "mutable",
                            "name": "callData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 205,
                            "src": "5891:21:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 188,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "5891:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 199,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 192,
                              "name": "PROPOSE_SIGNATURE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6,
                              "src": "5939:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 193,
                              "name": "targets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 156,
                              "src": "5958:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 194,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 159,
                              "src": "5967:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 195,
                              "name": "signatures",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 162,
                              "src": "5975:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                                "typeString": "string memory[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 196,
                              "name": "calldatas",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 165,
                              "src": "5987:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                "typeString": "bytes memory[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 197,
                              "name": "description",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 167,
                              "src": "5998:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                                "typeString": "string memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                "typeString": "bytes memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 190,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "5915:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 191,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSignature",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5915:23:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 198,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5915:95:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5891:119:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 200,
                              "name": "governorAlpha",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16,
                              "src": "6029:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 201,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6044:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 202,
                              "name": "callData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 189,
                              "src": "6047:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "id": 203,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6028:28:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_rational_0_by_1_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(address,int_const 0,bytes memory)"
                          }
                        },
                        "functionReturnParameters": 151,
                        "id": 204,
                        "nodeType": "Return",
                        "src": "6021:35:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 141,
                    "nodeType": "StructuredDocumentation",
                    "src": "5038:343:0",
                    "text": " Generates the calldata to create a new proposal\n @param _proposalData         Byte data containing data about the proposal\n @return address              Target contract address\n @return uint256              Total quantity of ETH (Set to 0)\n @return bytes                Propose calldata"
                  },
                  "functionSelector": "5cb8b5e3",
                  "id": 206,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getProposeCalldata",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 144,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 143,
                        "mutability": "mutable",
                        "name": "_proposalData",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 206,
                        "src": "5414:26:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 142,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5414:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5413:28:0"
                  },
                  "returnParameters": {
                    "id": 151,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 146,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 206,
                        "src": "5465:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 145,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5465:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 148,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 206,
                        "src": "5474:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 147,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5474:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 150,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 206,
                        "src": "5483:12:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 149,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5483:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5464:32:0"
                  },
                  "scope": 207,
                  "src": "5386:677:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 208,
              "src": "928:5137:0"
            }
          ],
          "src": "655:5411:0"
        },
        "id": 0
      }
    }
  }
}
