{
  "contractName": "Vault",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "hasInitialized",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "TRANSFER_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_script",
          "type": "bytes"
        }
      ],
      "name": "getEVMScriptExecutor",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRecoveryVault",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isDepositable",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "appId",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitializationBlock",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "transferToVault",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_sender",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        },
        {
          "name": "_params",
          "type": "uint256[]"
        }
      ],
      "name": "canPerform",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getEVMScriptRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "kernel",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isPetrified",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "payable": true,
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "VaultTransfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "VaultDeposit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "executor",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "script",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "input",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "returnData",
          "type": "bytes"
        }
      ],
      "name": "ScriptResult",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "vault",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "RecoverToVault",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_token",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "deposit",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_token",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "balance",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "allowRecoverability",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6080604052620000176401000000006200001d810204565b6200023b565b6200003064010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156200010c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000d0578181015183820152602001620000b6565b50505050905090810190601f168015620000fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200012360001964010000000062000154810204565b565b60006200014f60008051602062001ef08339815191526401000000006200180f6200023382021704565b905090565b6200016764010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562000206576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620000d0578181015183820152602001620000b6565b506200023060008051602062001ef08339815191528264010000000062001b7d6200023782021704565b50565b5490565b9055565b611ca5806200024b6000396000f3006080604052600436106100f05763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac0811461027c578063206b60f9146102a55780632914b9bd146102cc57806332f0a3b51461034e57806347e7ef241461036357806348a0c8dd146103875780637e7db6e11461039c57806380afdea8146103ca5780638129fc1c146103df5780638b3dd749146103f45780639d4941d814610409578063a1658fad14610437578063a479e508146104ab578063beabacc8146104c0578063d4aae0c4146104f7578063de4796ed1461050c578063e3d670d714610521575b6100f861054f565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a454400000000000000000000000060208201529015156101d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561019657818101518382015260200161017e565b50505050905090810190601f1680156101c35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060408051808201909152601381527f5641554c545f444154415f4e4f4e5f5a45524f000000000000000000000000006020820152361561026e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b5061027a600034610578565b005b34801561028857600080fd5b5061029161054f565b604080519115158252519081900360200190f35b3480156102b157600080fd5b506102ba610914565b60408051918252519081900360200190f35b3480156102d857600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103259436949293602493928401919081908401838280828437509497506109499650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561035a57600080fd5b50610325610a57565b61027a73ffffffffffffffffffffffffffffffffffffffff60043516602435610af5565b34801561039357600080fd5b50610291610ba9565b3480156103a857600080fd5b5061029173ffffffffffffffffffffffffffffffffffffffff60043516610bd9565b3480156103d657600080fd5b506102ba610bdf565b3480156103eb57600080fd5b5061027a610c0a565b34801561040057600080fd5b506102ba610cc3565b34801561041557600080fd5b5061027a73ffffffffffffffffffffffffffffffffffffffff60043516610cee565b34801561044357600080fd5b50604080516020600460443581810135838102808601850190965280855261029195833573ffffffffffffffffffffffffffffffffffffffff169560248035963696956064959394920192918291850190849080828437509497506110109650505050505050565b3480156104b757600080fd5b506103256111a0565b3480156104cc57600080fd5b5061027a73ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435611294565b34801561050357600080fd5b506103256116e7565b34801561051857600080fd5b50610291611712565b34801561052d57600080fd5b506102ba73ffffffffffffffffffffffffffffffffffffffff60043516611743565b60008061055a610cc3565b9050801580159061057257508061056f61180b565b10155b91505090565b610580610ba9565b60408051808201909152601581527f5641554c545f4e4f545f4445504f53495441424c450000000000000000000000602082015290151561061d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b5060408051808201909152601881527f5641554c545f4445504f5349545f56414c55455f5a45524f00000000000000006020820152600082116106bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b5073ffffffffffffffffffffffffffffffffffffffff8216151561077d5760408051808201909152601481527f5641554c545f56414c55455f4d49534d415443480000000000000000000000006020820152348214610777576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b506108c3565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052905173ffffffffffffffffffffffffffffffffffffffff8416916323b872dd9160648083019260209291908290030181600087803b1580156107f857600080fd5b505af115801561080c573d6000803e3d6000fd5b505050506040513d602081101561082257600080fd5b50516040805180820190915260208082527f5641554c545f544f4b454e5f5452414e534645525f46524f4d5f524556455254908201529015156108c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b505b604080518281529051339173ffffffffffffffffffffffffffffffffffffffff8516917f2790b90165fd3973ad7edde4eca71b4f8808dd4857a2a3a3e8ae5642a5cb196e9181900360200190a35050565b604080517f5452414e534645525f524f4c45000000000000000000000000000000000000008152905190819003600d01902081565b60006109536111a0565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156109d75781810151838201526020016109bf565b50505050905090810190601f168015610a045780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015610a2357600080fd5b505af1158015610a37573d6000803e3d6000fd5b505050506040513d6020811015610a4d57600080fd5b505190505b919050565b6000610a616116e7565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610ac457600080fd5b505af1158015610ad8573d6000803e3d6000fd5b505050506040513d6020811015610aee57600080fd5b5051905090565b610afd61054f565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a45440000000000000000000000006020820152901515610b9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b50610ba58282610578565b5050565b6000610bd47f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea61180f565b905090565b50600090565b6000610bd47fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b61180f565b610c12610cc3565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015610cae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b50610cb7611813565b610cc160016118f0565b565b6000610bd47febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e61180f565b6000806000610cfc84610bd9565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515610d99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b50610da2610a57565b9250610dad83611927565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000006020820152901515610e4a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b5073ffffffffffffffffffffffffffffffffffffffff84161515610eb5576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f19350505050158015610eaf573d6000803e3d6000fd5b50610fa5565b5082610edd73ffffffffffffffffffffffffffffffffffffffff82163063ffffffff61196116565b9150610f0673ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff611a9a16565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c45440000006020820152901515610fa3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b60008061101b61054f565b151561102a5760009150611198565b6110326116e7565b905073ffffffffffffffffffffffffffffffffffffffff8116151561105a5760009150611198565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef910686308761108288611b32565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b8381101561111a578181015183820152602001611102565b50505050905090810190601f1680156111475780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561116957600080fd5b505af115801561117d573d6000803e3d6000fd5b505050506040513d602081101561119357600080fd5b505191505b509392505050565b6000806111ab6116e7565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b15801561126257600080fd5b505af1158015611276573d6000803e3d6000fd5b505050506040513d602081101561128c57600080fd5b505192915050565b604080517f5452414e534645525f524f4c45000000000000000000000000000000000000008152905190819003600d0190206112d1848484611b3c565b6112dc338383611010565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611379576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b5060408051808201909152601981527f5641554c545f5452414e534645525f56414c55455f5a45524f00000000000000602082015260008411611418576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b5073ffffffffffffffffffffffffffffffffffffffff8516151561150d5760405173ffffffffffffffffffffffffffffffffffffffff85169084156108fc029085906000818181858888f193505050506040805190810160405280601381526020017f5641554c545f53454e445f524556455254454400000000000000000000000000815250901515611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b5061167b565b8473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156115b057600080fd5b505af11580156115c4573d6000803e3d6000fd5b505050506040513d60208110156115da57600080fd5b505160408051808201909152601d81527f5641554c545f544f4b454e5f5452414e534645525f52455645525445440000006020820152901515611679576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f239e7f6cdac8fb35a788a46b431b54da87de90b82448a2c294be5e92a6e579af856040518082815260200191505060405180910390a35050505050565b6000610bd47f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b61180f565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61173d610cc3565b14905090565b600073ffffffffffffffffffffffffffffffffffffffff8216151561176a57503031610a52565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a082319160248083019260209291908290030181600087803b1580156117d857600080fd5b505af11580156117ec573d6000803e3d6000fd5b505050506040513d602081101561180257600080fd5b50519050610a52565b4390565b5490565b61181b610cc3565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156118b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b50610cc16118c361180b565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff611b7d16565b6119207f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea8263ffffffff611b7d16565b50565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff83161515611950576000915061195b565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905260009081806119ee8684611b81565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f52455645525445440000000060208201529193509150821515611a90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052600090611b298582611bb2565b95945050505050565b8051602002815290565b6060611b758473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1684611c00565b949350505050565b9055565b6000806000806040516020818751602089018a5afa92506000831115611ba657805191505b50909590945092505050565b6000806040516020818551602087016000895af16000811115611bf6573d8015611be35760208114611bec57611bf4565b60019350611bf4565b600183511493505b505b5090949350505050565b6040805160038082526080820190925260609160208201838038833901905050905083816000815181101515611c3257fe5b602090810290910101528051839082906001908110611c4d57fe5b602090810290910101528051829082906002908110611c6857fe5b6020908102909101015293925050505600a165627a7a72305820e8e1db6f4b5d733e2ddec3a6905c989526a1e6663ab8c23a32ac265b2fdd590e0029ebb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e",
  "deployedBytecode": "0x6080604052600436106100f05763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac0811461027c578063206b60f9146102a55780632914b9bd146102cc57806332f0a3b51461034e57806347e7ef241461036357806348a0c8dd146103875780637e7db6e11461039c57806380afdea8146103ca5780638129fc1c146103df5780638b3dd749146103f45780639d4941d814610409578063a1658fad14610437578063a479e508146104ab578063beabacc8146104c0578063d4aae0c4146104f7578063de4796ed1461050c578063e3d670d714610521575b6100f861054f565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a454400000000000000000000000060208201529015156101d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561019657818101518382015260200161017e565b50505050905090810190601f1680156101c35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060408051808201909152601381527f5641554c545f444154415f4e4f4e5f5a45524f000000000000000000000000006020820152361561026e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b5061027a600034610578565b005b34801561028857600080fd5b5061029161054f565b604080519115158252519081900360200190f35b3480156102b157600080fd5b506102ba610914565b60408051918252519081900360200190f35b3480156102d857600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103259436949293602493928401919081908401838280828437509497506109499650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561035a57600080fd5b50610325610a57565b61027a73ffffffffffffffffffffffffffffffffffffffff60043516602435610af5565b34801561039357600080fd5b50610291610ba9565b3480156103a857600080fd5b5061029173ffffffffffffffffffffffffffffffffffffffff60043516610bd9565b3480156103d657600080fd5b506102ba610bdf565b3480156103eb57600080fd5b5061027a610c0a565b34801561040057600080fd5b506102ba610cc3565b34801561041557600080fd5b5061027a73ffffffffffffffffffffffffffffffffffffffff60043516610cee565b34801561044357600080fd5b50604080516020600460443581810135838102808601850190965280855261029195833573ffffffffffffffffffffffffffffffffffffffff169560248035963696956064959394920192918291850190849080828437509497506110109650505050505050565b3480156104b757600080fd5b506103256111a0565b3480156104cc57600080fd5b5061027a73ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435611294565b34801561050357600080fd5b506103256116e7565b34801561051857600080fd5b50610291611712565b34801561052d57600080fd5b506102ba73ffffffffffffffffffffffffffffffffffffffff60043516611743565b60008061055a610cc3565b9050801580159061057257508061056f61180b565b10155b91505090565b610580610ba9565b60408051808201909152601581527f5641554c545f4e4f545f4445504f53495441424c450000000000000000000000602082015290151561061d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b5060408051808201909152601881527f5641554c545f4445504f5349545f56414c55455f5a45524f00000000000000006020820152600082116106bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b5073ffffffffffffffffffffffffffffffffffffffff8216151561077d5760408051808201909152601481527f5641554c545f56414c55455f4d49534d415443480000000000000000000000006020820152348214610777576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b506108c3565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052905173ffffffffffffffffffffffffffffffffffffffff8416916323b872dd9160648083019260209291908290030181600087803b1580156107f857600080fd5b505af115801561080c573d6000803e3d6000fd5b505050506040513d602081101561082257600080fd5b50516040805180820190915260208082527f5641554c545f544f4b454e5f5452414e534645525f46524f4d5f524556455254908201529015156108c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b505b604080518281529051339173ffffffffffffffffffffffffffffffffffffffff8516917f2790b90165fd3973ad7edde4eca71b4f8808dd4857a2a3a3e8ae5642a5cb196e9181900360200190a35050565b604080517f5452414e534645525f524f4c45000000000000000000000000000000000000008152905190819003600d01902081565b60006109536111a0565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156109d75781810151838201526020016109bf565b50505050905090810190601f168015610a045780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015610a2357600080fd5b505af1158015610a37573d6000803e3d6000fd5b505050506040513d6020811015610a4d57600080fd5b505190505b919050565b6000610a616116e7565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610ac457600080fd5b505af1158015610ad8573d6000803e3d6000fd5b505050506040513d6020811015610aee57600080fd5b5051905090565b610afd61054f565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a45440000000000000000000000006020820152901515610b9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b50610ba58282610578565b5050565b6000610bd47f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea61180f565b905090565b50600090565b6000610bd47fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b61180f565b610c12610cc3565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015610cae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b50610cb7611813565b610cc160016118f0565b565b6000610bd47febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e61180f565b6000806000610cfc84610bd9565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515610d99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b50610da2610a57565b9250610dad83611927565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000006020820152901515610e4a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b5073ffffffffffffffffffffffffffffffffffffffff84161515610eb5576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f19350505050158015610eaf573d6000803e3d6000fd5b50610fa5565b5082610edd73ffffffffffffffffffffffffffffffffffffffff82163063ffffffff61196116565b9150610f0673ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff611a9a16565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c45440000006020820152901515610fa3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b60008061101b61054f565b151561102a5760009150611198565b6110326116e7565b905073ffffffffffffffffffffffffffffffffffffffff8116151561105a5760009150611198565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef910686308761108288611b32565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b8381101561111a578181015183820152602001611102565b50505050905090810190601f1680156111475780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561116957600080fd5b505af115801561117d573d6000803e3d6000fd5b505050506040513d602081101561119357600080fd5b505191505b509392505050565b6000806111ab6116e7565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b15801561126257600080fd5b505af1158015611276573d6000803e3d6000fd5b505050506040513d602081101561128c57600080fd5b505192915050565b604080517f5452414e534645525f524f4c45000000000000000000000000000000000000008152905190819003600d0190206112d1848484611b3c565b6112dc338383611010565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611379576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b5060408051808201909152601981527f5641554c545f5452414e534645525f56414c55455f5a45524f00000000000000602082015260008411611418576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b5073ffffffffffffffffffffffffffffffffffffffff8516151561150d5760405173ffffffffffffffffffffffffffffffffffffffff85169084156108fc029085906000818181858888f193505050506040805190810160405280601381526020017f5641554c545f53454e445f524556455254454400000000000000000000000000815250901515611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b5061167b565b8473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156115b057600080fd5b505af11580156115c4573d6000803e3d6000fd5b505050506040513d60208110156115da57600080fd5b505160408051808201909152601d81527f5641554c545f544f4b454e5f5452414e534645525f52455645525445440000006020820152901515611679576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f239e7f6cdac8fb35a788a46b431b54da87de90b82448a2c294be5e92a6e579af856040518082815260200191505060405180910390a35050505050565b6000610bd47f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b61180f565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61173d610cc3565b14905090565b600073ffffffffffffffffffffffffffffffffffffffff8216151561176a57503031610a52565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a082319160248083019260209291908290030181600087803b1580156117d857600080fd5b505af11580156117ec573d6000803e3d6000fd5b505050506040513d602081101561180257600080fd5b50519050610a52565b4390565b5490565b61181b610cc3565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156118b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b50610cc16118c361180b565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff611b7d16565b6119207f665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea8263ffffffff611b7d16565b50565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff83161515611950576000915061195b565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905260009081806119ee8684611b81565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f52455645525445440000000060208201529193509150821515611a90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360008381101561019657818101518382015260200161017e565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052600090611b298582611bb2565b95945050505050565b8051602002815290565b6060611b758473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1684611c00565b949350505050565b9055565b6000806000806040516020818751602089018a5afa92506000831115611ba657805191505b50909590945092505050565b6000806040516020818551602087016000895af16000811115611bf6573d8015611be35760208114611bec57611bf4565b60019350611bf4565b600183511493505b505b5090949350505050565b6040805160038082526080820190925260609160208201838038833901905050905083816000815181101515611c3257fe5b602090810290910101528051839082906001908110611c4d57fe5b602090810290910101528051829082906002908110611c6857fe5b6020908102909101015293925050505600a165627a7a72305820e8e1db6f4b5d733e2ddec3a6905c989526a1e6663ab8c23a32ac265b2fdd590e0029",
  "sourceMap": "250:3595:12:-;;;344:9:24;:7;;;;:9;:::i;:::-;250:3595:12;;590:84:34;615:24:32;:22;;;;:24;:::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;607:65:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;637:30:34;-1:-1:-1;;637:13:34;;;;:30;:::i;:::-;590:84::o;881:137:32:-;936:7;962:49;-1:-1:-1;;;;;;;;;;;962:47:32;;;;;;:49;:::i;:::-;955:56;;881:137;:::o;1751:141::-;615:24;:22;;;;:24;:::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:32;-1:-1:-1;1824:61:32;-1:-1:-1;;;;;;;;;;;1872:12:32;1824:47;;;;;;:61;:::i;:::-;1751:141;:::o;519:134:39:-;630:15;;620:27::o;1028:119::-;1117:22;;1115:26::o;250:3595:12:-;;;;;;;",
  "deployedSourceMap": "250:3595:12:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;737:16:32;:14;:16::i;:::-;755:21;;;;;;;;;;;;;;;;;;729:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;729:48:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1473:19:12;;;;;;;;;;;;;;;;;1451:8;:20;1443:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1443:50:12;;1503:24;269:1:29;1517:9:12;1503:8;:24::i;:::-;250:3595;1128:208:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1128:208:32;;;;;;;;;;;;;;;;;;;;;;324:66:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;324:66:12;;;;;;;;;;;;;;;;;;;;795:179:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;795:179:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;795:179:42;;-1:-1:-1;795:179:42;;-1:-1:-1;;;;;;;795:179:42;;;;;;;;;;;;;;;;;;;;2253:229:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2253:229:23;;;;1980:121:12;;;;;;;;;;323:113:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;323:113:28;;;;3229:94:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3229:94:12;;;;;;;796:106:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;796:106:22;;;;1692:100:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1692:100:12;;;;881:137:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;881:137:32;;;;836:623:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;836:623:40;;;;;;;1641:496:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1641:496:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1641:496:23;;-1:-1:-1;1641:496:23;;-1:-1:-1;;;;;;;1641:496:23;980:231:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;980:231:42;;;;2403:458:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2403:458:12;;;;;;;;;;;;;;674:116:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;674:116:22;;;;287:117:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:117:34;;;;2867:218:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2867:218:12;;;;;;;1128:208:32;1175:4;1191:27;1221:24;:22;:24::i;:::-;1191:54;-1:-1:-1;1262:24:32;;;;;:67;;;1310:19;1290:16;:14;:16::i;:::-;:39;;1262:67;1255:74;;1128:208;;:::o;3329:514:12:-;3406:15;:13;:15::i;:::-;3423:21;;;;;;;;;;;;;;;;;;3398:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3398:47:12;-1:-1:-1;3475:24:12;;;;;;;;;;;;;;;;;3472:1;3463:10;;3455:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3455:45:12;-1:-1:-1;3515:13:12;;;;3511:270;;;3621:20;;;;;;;;;;;;;;;;;3600:9;:19;;3592:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3592:50:12;;3511:270;;;3681:52;;;;;;3708:10;3681:52;;;;3720:4;3681:52;;;;;;;;;;;;:26;;;;;;:52;;;;;;;;;;;;;;-1:-1:-1;3681:26:12;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;3681:52:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3681:52:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3681:52:12;3735:34;;;;;;;;;3681:52;3735:34;;;;;;;;;3673:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3673:97:12;;3511:270;3796:40;;;;;;;;3817:10;;3796:40;;;;;;;;;;;;;3329:514;;:::o;324:66::-;364:26;;;;;;;;;;;;;;;;324:66;:::o;795:179:42:-;861:18;917:22;:20;:22::i;:::-;:40;;;958:7;917:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;917:49:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;917:49:42;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;917:49:42;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;917:49:42;;-1:-1:-1;795:179:42;;;;:::o;2253:229:23:-;2302:7;2408:8;:6;:8::i;:::-;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2408:27:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2408:27:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2408:27:23;;-1:-1:-1;2253:229:23;:::o;1980:121:12:-;737:16:32;:14;:16::i;:::-;755:21;;;;;;;;;;;;;;;;;;729:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;729:48:32;;2070:24:12;2079:6;2087;2070:8;:24::i;:::-;1980:121;;:::o;323:113:28:-;369:4;392:37;250:66;392:35;:37::i;:::-;385:44;;323:113;:::o;3229:94:12:-;-1:-1:-1;3288:4:12;;3229:94::o;796:106:22:-;834:7;860:35;601:66;860:33;:35::i;1692:100:12:-;615:24:32;:22;:24::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:32;;1742:13:12;:11;:13::i;:::-;1765:20;1780:4;1765:14;:20::i;:::-;1692:100::o;881:137:32:-;936:7;962:49;345:66;962:47;:49::i;836:623:40:-;960:13;1067:15;1224:11;904:27;924:6;904:19;:27::i;:::-;933:16;;;;;;;;;;;;;;;;;;896:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;896:54:40;;976:18;:16;:18::i;:::-;960:34;;1012:17;1023:5;1012:10;:17::i;:::-;1031:24;;;;;;;;;;;;;;;;;;1004:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1004:52:40;-1:-1:-1;1096:13:40;;;;1092:307;;;1170:23;;1143:4;1135:21;;-1:-1:-1;1135:21:40;1170:14;;;:23;;;;;1135:21;;1170:23;;;;1135:21;1170:14;:23;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1170:23:40;1092:307;;;-1:-1:-1;1244:6:40;1275:27;:21;;;1297:4;1275:27;:21;:27;:::i;:::-;1265:37;-1:-1:-1;1324:34:40;:18;;;1343:5;1265:37;1324:34;:18;:34;:::i;:::-;1360:27;;;;;;;;;;;;;;;;;;1316:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1316:72:40;;1092:307;1436:6;1414:38;;1429:5;1414:38;;;1444:7;1414:38;;;;;;;;;;;;;;;;;;836:623;;;;:::o;1641:496:23:-;1733:4;1819:20;1754:16;:14;:16::i;:::-;1753:17;1749:60;;;1793:5;1786:12;;;;1749:60;1842:8;:6;:8::i;:::-;1819:31;-1:-1:-1;1864:35:23;;;;1860:78;;;1922:5;1915:12;;;;1860:78;1955:12;:26;;;1995:7;2024:4;2043:5;2062:58;2112:7;2062:49;:58::i;:::-;1955:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1955:175:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1955:175:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1955:175:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1955:175:23;;-1:-1:-1;1641:496:23;;;;;;;:::o;980:231:42:-;1033:18;1063:20;1086:8;:6;:8::i;:::-;:69;;;;;;1368:66:53;1086:69:42;;;;330:66:44;1086:69:42;;;;;;:15;;;;;;;;:69;;;;;;;;;;;;;;;;:15;:69;;;5:2:-1;;;;30:1;27;20:12;5:2;1086:69:42;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1086:69:42;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1086:69:42;;980:231;-1:-1:-1;;980:231:42:o;2403:458:12:-;364:26;;;;;;;;;;;;;;;;2512:24;2516:6;2524:3;2529:6;2512:3;:24::i;:::-;1148:38:23;1159:10;1171:5;1178:7;1148:10;:38::i;:::-;1188:17;;;;;;;;;;;;;;;;;;1140:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1140:66:23;-1:-1:-1;2572:25:12;;;;;;;;;;;;;;;;;2569:1;2560:10;;2552:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2552:46:12;-1:-1:-1;2613:13:12;;;;2609:196;;;2650:16;;:8;;;;:16;;;;;2659:6;;2650:16;;;;2659:6;2650:8;:16;;;;;;;2668:19;;;;;;;;;;;;;;;;;;2642:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2642:46:12;;2609:196;;;2733:6;2727:22;;;2750:3;2755:6;2727:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2727:35:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2727:35:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2727:35:12;2764:29;;;;;;;;;;;;;2727:35;2764:29;;;;2719:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2719:75:12;;2609:196;2842:3;2820:34;;2834:6;2820:34;;;2847:6;2820:34;;;;;;;;;;;;;;;;;;2403:458;;;;;:::o;674:116:22:-;713:7;747:35;485:66;747:33;:35::i;287:117:34:-;331:4;277:2;354:24;:22;:24::i;:::-;:43;347:50;;287:117;:::o;2867:218:12:-;2921:7;2944:13;;;;2940:139;;;-1:-1:-1;2988:4:12;2980:21;2973:28;;2940:139;3039:29;;;;;;3063:4;3039:29;;;;;;:23;;;;;;:29;;;;;;;;;;;;;;-1:-1:-1;3039:23:12;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;3039:29:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3039:29:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3039:29:12;;-1:-1:-1;3032:36:12;;347:94:37;422:12;347:94;:::o;105:128:39:-;210:15;;200:27::o;1447:123:32:-;615:24;:22;:24::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:32;;1498;1546:16;:14;:16::i;:::-;345:66;;1498:65;:47;:65;:::i;442:118:28:-;504:49;250:66;540:12;504:49;:35;:49;:::i;:::-;442:118;:::o;519:134:39:-;630:15;;620:27::o;426:244:33:-;486:4;;506:21;;;;502:64;;;550:5;543:12;;;;502:64;629:7;617:20;609:28;;662:1;655:4;:8;648:15;;426:244;;;;;:::o;4578:403:36:-;4708:91;;;4744:16;4708:91;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4708:91:36;;;;;;;;25:18:-1;;61:17;;4708:91:36;182:15:-1;4744:25:36;179:29:-1;160:49;;4656:7:36;;;;4849:39;4744:6;4708:91;4849:12;:39::i;:::-;4915:28;;;;;;;;;;;;;;;;;4810:78;;-1:-1:-1;4810:78:36;-1:-1:-1;4898:46:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4898:46:36;-1:-1:-1;4962:12:36;4578:403;-1:-1:-1;;;;;4578:403:36:o;3100:304::-;3232:101;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3232:101:36;;;;;;;;25:18:-1;;61:17;;3232:101:36;182:15:-1;3268:17:36;179:29:-1;160:49;;3184:4:36;;3350:47;3372:6;3232:101;3350:21;:47::i;:::-;3343:54;3100:304;-1:-1:-1;;;;;3100:304:36:o;142:539:25:-;559:13;;575:2;559:18;639:26;;559:6;596:79::o;1437:151:14:-;1509:11;1539:42;1551:2;1543:11;;1564:2;1556:11;;1577:2;1539:3;:42::i;:::-;1532:49;1437:151;-1:-1:-1;;;;1437:151:14:o;1028:119:39:-;1117:22;;1115:26::o;2148:774:36:-;2255:4;2261:7;2284:12;2306:11;2367:4;2361:11;2741:4;2670:3;2619:9;2613:16;2572:4;2561:9;2557:20;2508:5;2451:3;2423:371;2412:382;;2823:1;2814:7;2811:14;2808:2;;;2857:3;2851:10;2844:17;;2808:2;-1:-1:-1;2902:7:36;;2911:3;;-1:-1:-1;2148:774:36;-1:-1:-1;;;2148:774:36:o;800:1342::-;903:4;923:8;981:4;975:11;1403:4;1332:3;1281:9;1275:16;1234:4;1223:9;1219:20;1169:1;1120:5;1063:3;1041:415;1485:1;1476:7;1473:14;1470:2;;;1587:14;1672:55;;;;1806:4;1801:193;;;;1580:512;;1672:55;1708:1;1701:8;;1672:55;;1801:193;1974:1;1968:3;1962:10;1959:17;1952:24;;1580:512;;1470:2;-1:-1:-1;2132:3:36;;800:1342;-1:-1:-1;;;;800:1342:36:o;1871:179:14:-;1970:16;;;1984:1;1970:16;;;;;;;;;1943:11;;1970:16;;;1943:11;;105:10:-1;1970:16:14;88:34:-1;136:17;;-1:-1;1970:16:14;1966:20;;2003:2;1996:1;1998;1996:4;;;;;;;;;;;;;;;;;;:9;2015:4;;2022:2;;2015:1;;2017;;2015:4;;;;;;;;;;;;;;:9;2034:4;;2041:2;;2034:1;;2036;;2034:4;;;;;;;;;;;;;;:9;1871:179;;-1:-1:-1;;;1871:179:14:o",
  "source": "pragma solidity 0.4.24;\n\nimport \"@aragon/os/contracts/apps/AragonApp.sol\";\nimport \"@aragon/os/contracts/common/DepositableStorage.sol\";\nimport \"@aragon/os/contracts/common/EtherTokenConstant.sol\";\nimport \"@aragon/os/contracts/lib/token/ERC20.sol\";\n\n\ncontract Vault is EtherTokenConstant, AragonApp, DepositableStorage {\n    bytes32 public constant TRANSFER_ROLE = keccak256(\"TRANSFER_ROLE\");\n\n    string private constant ERROR_DATA_NON_ZERO = \"VAULT_DATA_NON_ZERO\";\n    string private constant ERROR_NOT_DEPOSITABLE = \"VAULT_NOT_DEPOSITABLE\";\n    string private constant ERROR_DEPOSIT_VALUE_ZERO = \"VAULT_DEPOSIT_VALUE_ZERO\";\n    string private constant ERROR_TRANSFER_VALUE_ZERO = \"VAULT_TRANSFER_VALUE_ZERO\";\n    string private constant ERROR_SEND_REVERTED = \"VAULT_SEND_REVERTED\";\n    string private constant ERROR_VALUE_MISMATCH = \"VAULT_VALUE_MISMATCH\";\n    string private constant ERROR_TOKEN_TRANSFER_FROM_REVERTED = \"VAULT_TOKEN_TRANSFER_FROM_REVERT\";\n    string private constant ERROR_TOKEN_TRANSFER_REVERTED = \"VAULT_TOKEN_TRANSFER_REVERTED\";\n\n    event VaultTransfer(address indexed token, address indexed to, uint256 amount);\n    event VaultDeposit(address indexed token, address indexed sender, uint256 amount);\n\n    /**\n    * @dev On a normal send() or transfer() this fallback is never executed as it will be\n    *      intercepted by the Proxy (see aragonOS#281)\n    */\n    function () external payable isInitialized {\n        require(msg.data.length == 0, ERROR_DATA_NON_ZERO);\n        _deposit(ETH, msg.value);\n    }\n\n    /**\n    * @notice Initialize Vault app\n    * @dev As an AragonApp it needs to be initialized in order for roles (`auth` and `authP`) to work\n    */\n    function initialize() external onlyInit {\n        initialized();\n        setDepositable(true);\n    }\n\n    /**\n    * @notice Deposit `_value` `_token` to the vault\n    * @param _token Address of the token being transferred\n    * @param _value Amount of tokens being transferred\n    */\n    function deposit(address _token, uint256 _value) external payable isInitialized {\n        _deposit(_token, _value);\n    }\n\n    /**\n    * @notice Transfer `_value` `_token` from the Vault to `_to`\n    * @param _token Address of the token being transferred\n    * @param _to Address of the recipient of tokens\n    * @param _value Amount of tokens being transferred\n    */\n    /* solium-disable-next-line function-order */\n    function transfer(address _token, address _to, uint256 _value)\n        external\n        authP(TRANSFER_ROLE, arr(_token, _to, _value))\n    {\n        require(_value > 0, ERROR_TRANSFER_VALUE_ZERO);\n\n        if (_token == ETH) {\n            require(_to.send(_value), ERROR_SEND_REVERTED);\n        } else {\n            require(ERC20(_token).transfer(_to, _value), ERROR_TOKEN_TRANSFER_REVERTED);\n        }\n\n        emit VaultTransfer(_token, _to, _value);\n    }\n\n    function balance(address _token) public view returns (uint256) {\n        if (_token == ETH) {\n            return address(this).balance;\n        } else {\n            return ERC20(_token).balanceOf(this);\n        }\n    }\n\n    /**\n    * @dev Disable recovery escape hatch, as it could be used\n    *      maliciously to transfer funds away from the vault\n    */\n    function allowRecoverability(address) public view returns (bool) {\n        return false;\n    }\n\n    function _deposit(address _token, uint256 _value) internal {\n        require(isDepositable(), ERROR_NOT_DEPOSITABLE);\n        require(_value > 0, ERROR_DEPOSIT_VALUE_ZERO);\n\n        if (_token == ETH) {\n            // Deposit is implicit in this case\n            require(msg.value == _value, ERROR_VALUE_MISMATCH);\n        } else {\n            require(ERC20(_token).transferFrom(msg.sender, this, _value), ERROR_TOKEN_TRANSFER_FROM_REVERTED);\n        }\n\n        emit VaultDeposit(_token, msg.sender, _value);\n    }\n}\n",
  "sourcePath": "@aragon/apps-vault/contracts/Vault.sol",
  "ast": {
    "absolutePath": "@aragon/apps-vault/contracts/Vault.sol",
    "exportedSymbols": {
      "Vault": [
        7857
      ]
    },
    "id": 7858,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 7605,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:12"
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
        "file": "@aragon/os/contracts/apps/AragonApp.sol",
        "id": 7606,
        "nodeType": "ImportDirective",
        "scope": 7858,
        "sourceUnit": 10490,
        "src": "25:49:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/DepositableStorage.sol",
        "file": "@aragon/os/contracts/common/DepositableStorage.sol",
        "id": 7607,
        "nodeType": "ImportDirective",
        "scope": 7858,
        "sourceUnit": 10655,
        "src": "75:60:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/EtherTokenConstant.sol",
        "file": "@aragon/os/contracts/common/EtherTokenConstant.sol",
        "id": 7608,
        "nodeType": "ImportDirective",
        "scope": 7858,
        "sourceUnit": 10663,
        "src": "136:60:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/token/ERC20.sol",
        "file": "@aragon/os/contracts/lib/token/ERC20.sol",
        "id": 7609,
        "nodeType": "ImportDirective",
        "scope": 7858,
        "sourceUnit": 14295,
        "src": "197:50:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7610,
              "name": "EtherTokenConstant",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10662,
              "src": "268:18:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EtherTokenConstant_$10662",
                "typeString": "contract EtherTokenConstant"
              }
            },
            "id": 7611,
            "nodeType": "InheritanceSpecifier",
            "src": "268:18:12"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7612,
              "name": "AragonApp",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10489,
              "src": "288:9:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AragonApp_$10489",
                "typeString": "contract AragonApp"
              }
            },
            "id": 7613,
            "nodeType": "InheritanceSpecifier",
            "src": "288:9:12"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7614,
              "name": "DepositableStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10654,
              "src": "299:18:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DepositableStorage_$10654",
                "typeString": "contract DepositableStorage"
              }
            },
            "id": 7615,
            "nodeType": "InheritanceSpecifier",
            "src": "299:18:12"
          }
        ],
        "contractDependencies": [
          9577,
          10365,
          10489,
          10502,
          10654,
          10662,
          10712,
          10810,
          10838,
          10871,
          10908,
          11200,
          11422,
          11823,
          11850,
          13114
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 7857,
        "linearizedBaseContracts": [
          7857,
          10654,
          10489,
          9577,
          11823,
          13114,
          11850,
          10908,
          11422,
          10838,
          10662,
          10712,
          10502,
          10871,
          10810,
          11200,
          10365
        ],
        "name": "Vault",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 7620,
            "name": "TRANSFER_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 7857,
            "src": "324:66:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 7616,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "324:7:12",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "5452414e534645525f524f4c45",
                  "id": 7618,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "374:15:12",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c",
                    "typeString": "literal_string \"TRANSFER_ROLE\""
                  },
                  "value": "TRANSFER_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c",
                    "typeString": "literal_string \"TRANSFER_ROLE\""
                  }
                ],
                "id": 7617,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 15147,
                "src": "364:9:12",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 7619,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "364:26:12",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 7623,
            "name": "ERROR_DATA_NON_ZERO",
            "nodeType": "VariableDeclaration",
            "scope": 7857,
            "src": "397:67:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7621,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "397:6:12",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5641554c545f444154415f4e4f4e5f5a45524f",
              "id": 7622,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "443:21:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_0829386c2694bdafbc0f9911e06f1a82161dfa07f00e5f4ffc445f7ffa36e297",
                "typeString": "literal_string \"VAULT_DATA_NON_ZERO\""
              },
              "value": "VAULT_DATA_NON_ZERO"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7626,
            "name": "ERROR_NOT_DEPOSITABLE",
            "nodeType": "VariableDeclaration",
            "scope": 7857,
            "src": "470:71:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7624,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "470:6:12",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5641554c545f4e4f545f4445504f53495441424c45",
              "id": 7625,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "518:23:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_9409f425c42754390c734673a9e3b0d583c18311f62345ab50786af4bb8b8452",
                "typeString": "literal_string \"VAULT_NOT_DEPOSITABLE\""
              },
              "value": "VAULT_NOT_DEPOSITABLE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7629,
            "name": "ERROR_DEPOSIT_VALUE_ZERO",
            "nodeType": "VariableDeclaration",
            "scope": 7857,
            "src": "547:77:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7627,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "547:6:12",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5641554c545f4445504f5349545f56414c55455f5a45524f",
              "id": 7628,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "598:26:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_8c5ebb74edc6e384ac3afcd3b0135b9d7255f2b98ccac9da5f2853a3fe2606ad",
                "typeString": "literal_string \"VAULT_DEPOSIT_VALUE_ZERO\""
              },
              "value": "VAULT_DEPOSIT_VALUE_ZERO"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7632,
            "name": "ERROR_TRANSFER_VALUE_ZERO",
            "nodeType": "VariableDeclaration",
            "scope": 7857,
            "src": "630:79:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7630,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "630:6:12",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5641554c545f5452414e534645525f56414c55455f5a45524f",
              "id": 7631,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "682:27:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_decc76396ec53bc6011e3d66d985ed0887f7e92d400db2ee0ccef257d87be30e",
                "typeString": "literal_string \"VAULT_TRANSFER_VALUE_ZERO\""
              },
              "value": "VAULT_TRANSFER_VALUE_ZERO"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7635,
            "name": "ERROR_SEND_REVERTED",
            "nodeType": "VariableDeclaration",
            "scope": 7857,
            "src": "715:67:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7633,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "715:6:12",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5641554c545f53454e445f5245564552544544",
              "id": 7634,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "761:21:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_08b8a3f19622a534b7d452966291145b76c01528da2625cbd77a2566ec4a33e3",
                "typeString": "literal_string \"VAULT_SEND_REVERTED\""
              },
              "value": "VAULT_SEND_REVERTED"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7638,
            "name": "ERROR_VALUE_MISMATCH",
            "nodeType": "VariableDeclaration",
            "scope": 7857,
            "src": "788:69:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7636,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "788:6:12",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5641554c545f56414c55455f4d49534d41544348",
              "id": 7637,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "835:22:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_3cb638818660075c33e198a5cd1c0aa78c5314dcb74b7de31f7a31cae2c0c6d5",
                "typeString": "literal_string \"VAULT_VALUE_MISMATCH\""
              },
              "value": "VAULT_VALUE_MISMATCH"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7641,
            "name": "ERROR_TOKEN_TRANSFER_FROM_REVERTED",
            "nodeType": "VariableDeclaration",
            "scope": 7857,
            "src": "863:95:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7639,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "863:6:12",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5641554c545f544f4b454e5f5452414e534645525f46524f4d5f524556455254",
              "id": 7640,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "924:34:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_9c92a890e9db91a5068bac2a44bb5e2dbc0c358bea307f440284ba46c9762b46",
                "typeString": "literal_string \"VAULT_TOKEN_TRANSFER_FROM_REVERT\""
              },
              "value": "VAULT_TOKEN_TRANSFER_FROM_REVERT"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7644,
            "name": "ERROR_TOKEN_TRANSFER_REVERTED",
            "nodeType": "VariableDeclaration",
            "scope": 7857,
            "src": "964:87:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7642,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "964:6:12",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5641554c545f544f4b454e5f5452414e534645525f5245564552544544",
              "id": 7643,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1020:31:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_82fb9fc43cf1d51e6d7370d61e175091f36d6426a592459724662e4e87ab02ef",
                "typeString": "literal_string \"VAULT_TOKEN_TRANSFER_REVERTED\""
              },
              "value": "VAULT_TOKEN_TRANSFER_REVERTED"
            },
            "visibility": "private"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 7652,
            "name": "VaultTransfer",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 7651,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7646,
                  "indexed": true,
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 7652,
                  "src": "1078:21:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7645,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1078:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7648,
                  "indexed": true,
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "scope": 7652,
                  "src": "1101:18:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7647,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1101:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7650,
                  "indexed": false,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 7652,
                  "src": "1121:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7649,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1121:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1077:59:12"
            },
            "src": "1058:79:12"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 7660,
            "name": "VaultDeposit",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 7659,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7654,
                  "indexed": true,
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 7660,
                  "src": "1161:21:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7653,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1161:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7656,
                  "indexed": true,
                  "name": "sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 7660,
                  "src": "1184:22:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7655,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1184:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7658,
                  "indexed": false,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 7660,
                  "src": "1208:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7657,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1208:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1160:63:12"
            },
            "src": "1142:82:12"
          },
          {
            "body": {
              "id": 7680,
              "nodeType": "Block",
              "src": "1433:101:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7670,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7666,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15153,
                              "src": "1451:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 7667,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1451:8:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          "id": 7668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1451:15:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7669,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1470:1:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1451:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7671,
                        "name": "ERROR_DATA_NON_ZERO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7623,
                        "src": "1473:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7665,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "1443:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7672,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1443:50:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7673,
                  "nodeType": "ExpressionStatement",
                  "src": "1443:50:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7675,
                        "name": "ETH",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10661,
                        "src": "1512:3:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7676,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15153,
                          "src": "1517:3:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 7677,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1517:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7674,
                      "name": "_deposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7856,
                      "src": "1503:8:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 7678,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1503:24:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7679,
                  "nodeType": "ExpressionStatement",
                  "src": "1503:24:12"
                }
              ]
            },
            "documentation": "@dev On a normal send() or transfer() this fallback is never executed as it will be\n     intercepted by the Proxy (see aragonOS#281)",
            "id": 7681,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 7663,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7662,
                  "name": "isInitialized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10752,
                  "src": "1419:13:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1419:13:12"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7661,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1399:2:12"
            },
            "payable": true,
            "returnParameters": {
              "id": 7664,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1433:0:12"
            },
            "scope": 7857,
            "src": "1390:144:12",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7693,
              "nodeType": "Block",
              "src": "1732:60:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 7686,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10795,
                      "src": "1742:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 7687,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1742:13:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7688,
                  "nodeType": "ExpressionStatement",
                  "src": "1742:13:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 7690,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1780:4:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 7689,
                      "name": "setDepositable",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10653,
                      "src": "1765:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool)"
                      }
                    },
                    "id": 7691,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1765:20:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7692,
                  "nodeType": "ExpressionStatement",
                  "src": "1765:20:12"
                }
              ]
            },
            "documentation": "@notice Initialize Vault app\n@dev As an AragonApp it needs to be initialized in order for roles (`auth` and `authP`) to work",
            "id": 7694,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 7684,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7683,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10742,
                  "src": "1723:8:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1723:8:12"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7682,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1711:2:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 7685,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1732:0:12"
            },
            "scope": 7857,
            "src": "1692:100:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7708,
              "nodeType": "Block",
              "src": "2060:41:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7704,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7696,
                        "src": "2079:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7705,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7698,
                        "src": "2087:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7703,
                      "name": "_deposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7856,
                      "src": "2070:8:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 7706,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2070:24:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7707,
                  "nodeType": "ExpressionStatement",
                  "src": "2070:24:12"
                }
              ]
            },
            "documentation": "@notice Deposit `_value` `_token` to the vault\n@param _token Address of the token being transferred\n@param _value Amount of tokens being transferred",
            "id": 7709,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 7701,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7700,
                  "name": "isInitialized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10752,
                  "src": "2046:13:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2046:13:12"
              }
            ],
            "name": "deposit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7699,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7696,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 7709,
                  "src": "1997:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7695,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1997:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7698,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 7709,
                  "src": "2013:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7697,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2013:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1996:32:12"
            },
            "payable": true,
            "returnParameters": {
              "id": 7702,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2060:0:12"
            },
            "scope": 7857,
            "src": "1980:121:12",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7764,
              "nodeType": "Block",
              "src": "2542:319:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7729,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7727,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7715,
                          "src": "2560:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2569:1:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2560:10:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7730,
                        "name": "ERROR_TRANSFER_VALUE_ZERO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7632,
                        "src": "2572:25:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7726,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "2552:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7731,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2552:46:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7732,
                  "nodeType": "ExpressionStatement",
                  "src": "2552:46:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 7735,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7733,
                      "name": "_token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7711,
                      "src": "2613:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 7734,
                      "name": "ETH",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10661,
                      "src": "2623:3:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2613:13:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 7756,
                    "nodeType": "Block",
                    "src": "2705:100:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7750,
                                  "name": "_to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7713,
                                  "src": "2750:3:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 7751,
                                  "name": "_value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7715,
                                  "src": "2755:6:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 7747,
                                      "name": "_token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7711,
                                      "src": "2733:6:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 7746,
                                    "name": "ERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14294,
                                    "src": "2727:5:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ERC20_$14294_$",
                                      "typeString": "type(contract ERC20)"
                                    }
                                  },
                                  "id": 7748,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2727:13:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ERC20_$14294",
                                    "typeString": "contract ERC20"
                                  }
                                },
                                "id": 7749,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14257,
                                "src": "2727:22:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 7752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2727:35:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7753,
                              "name": "ERROR_TOKEN_TRANSFER_REVERTED",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7644,
                              "src": "2764:29:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 7745,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              15156,
                              15157
                            ],
                            "referencedDeclaration": 15157,
                            "src": "2719:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2719:75:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7755,
                        "nodeType": "ExpressionStatement",
                        "src": "2719:75:12"
                      }
                    ]
                  },
                  "id": 7757,
                  "nodeType": "IfStatement",
                  "src": "2609:196:12",
                  "trueBody": {
                    "id": 7744,
                    "nodeType": "Block",
                    "src": "2628:71:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7739,
                                  "name": "_value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7715,
                                  "src": "2659:6:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7737,
                                  "name": "_to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7713,
                                  "src": "2650:3:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 7738,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "send",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2650:8:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_send_nonpayable$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (uint256) returns (bool)"
                                }
                              },
                              "id": 7740,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2650:16:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7741,
                              "name": "ERROR_SEND_REVERTED",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7635,
                              "src": "2668:19:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 7736,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              15156,
                              15157
                            ],
                            "referencedDeclaration": 15157,
                            "src": "2642:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2642:46:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7743,
                        "nodeType": "ExpressionStatement",
                        "src": "2642:46:12"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7759,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7711,
                        "src": "2834:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7760,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7713,
                        "src": "2842:3:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7761,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7715,
                        "src": "2847:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7758,
                      "name": "VaultTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7652,
                      "src": "2820:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 7762,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2820:34:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7763,
                  "nodeType": "EmitStatement",
                  "src": "2815:39:12"
                }
              ]
            },
            "documentation": "@notice Transfer `_value` `_token` from the Vault to `_to`\n@param _token Address of the token being transferred\n@param _to Address of the recipient of tokens\n@param _value Amount of tokens being transferred",
            "id": 7765,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7718,
                    "name": "TRANSFER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7620,
                    "src": "2497:13:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7720,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7711,
                        "src": "2516:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7721,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7713,
                        "src": "2524:3:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7722,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7715,
                        "src": "2529:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7719,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9381,
                      "src": "2512:3:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (address,address,uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 7723,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2512:24:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 7724,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7717,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10428,
                  "src": "2491:5:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2491:46:12"
              }
            ],
            "name": "transfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7716,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7711,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 7765,
                  "src": "2421:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7710,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2421:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7713,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 7765,
                  "src": "2437:11:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7712,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2437:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7715,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 7765,
                  "src": "2450:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7714,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2450:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2420:45:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 7725,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2542:0:12"
            },
            "scope": 7857,
            "src": "2403:458:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7790,
              "nodeType": "Block",
              "src": "2930:155:12",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 7774,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7772,
                      "name": "_token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7767,
                      "src": "2944:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 7773,
                      "name": "ETH",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10661,
                      "src": "2954:3:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2944:13:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 7788,
                    "nodeType": "Block",
                    "src": "3018:61:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7785,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15230,
                              "src": "3063:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Vault_$7857",
                                "typeString": "contract Vault"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Vault_$7857",
                                "typeString": "contract Vault"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7782,
                                  "name": "_token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7767,
                                  "src": "3045:6:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 7781,
                                "name": "ERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14294,
                                "src": "3039:5:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC20_$14294_$",
                                  "typeString": "type(contract ERC20)"
                                }
                              },
                              "id": 7783,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3039:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERC20_$14294",
                                "typeString": "contract ERC20"
                              }
                            },
                            "id": 7784,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14239,
                            "src": "3039:23:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 7786,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3039:29:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 7771,
                        "id": 7787,
                        "nodeType": "Return",
                        "src": "3032:36:12"
                      }
                    ]
                  },
                  "id": 7789,
                  "nodeType": "IfStatement",
                  "src": "2940:139:12",
                  "trueBody": {
                    "id": 7780,
                    "nodeType": "Block",
                    "src": "2959:53:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7776,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15230,
                                "src": "2988:4:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Vault_$7857",
                                  "typeString": "contract Vault"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Vault_$7857",
                                  "typeString": "contract Vault"
                                }
                              ],
                              "id": 7775,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2980:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 7777,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2980:13:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 7778,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2980:21:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 7771,
                        "id": 7779,
                        "nodeType": "Return",
                        "src": "2973:28:12"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 7791,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "balance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7768,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7767,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 7791,
                  "src": "2884:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7766,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2884:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2883:16:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 7771,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7770,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7791,
                  "src": "2921:7:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7769,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2921:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2920:9:12"
            },
            "scope": 7857,
            "src": "2867:218:12",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7800,
              "nodeType": "Block",
              "src": "3294:29:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 7798,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3311:5:12",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 7797,
                  "id": 7799,
                  "nodeType": "Return",
                  "src": "3304:12:12"
                }
              ]
            },
            "documentation": "@dev Disable recovery escape hatch, as it could be used\n     maliciously to transfer funds away from the vault",
            "id": 7801,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "allowRecoverability",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7794,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7793,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7801,
                  "src": "3258:7:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7792,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3258:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3257:9:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 7797,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7796,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7801,
                  "src": "3288:4:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7795,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3288:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3287:6:12"
            },
            "scope": 7857,
            "src": "3229:94:12",
            "stateMutability": "view",
            "superFunction": 11416,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7855,
              "nodeType": "Block",
              "src": "3388:455:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 7809,
                          "name": "isDepositable",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10641,
                          "src": "3406:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                            "typeString": "function () view returns (bool)"
                          }
                        },
                        "id": 7810,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3406:15:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7811,
                        "name": "ERROR_NOT_DEPOSITABLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7626,
                        "src": "3423:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7808,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "3398:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7812,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3398:47:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7813,
                  "nodeType": "ExpressionStatement",
                  "src": "3398:47:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7817,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7815,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7805,
                          "src": "3463:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7816,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3472:1:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3463:10:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7818,
                        "name": "ERROR_DEPOSIT_VALUE_ZERO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7629,
                        "src": "3475:24:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7814,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "3455:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3455:45:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7820,
                  "nodeType": "ExpressionStatement",
                  "src": "3455:45:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 7823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7821,
                      "name": "_token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7803,
                      "src": "3515:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 7822,
                      "name": "ETH",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10661,
                      "src": "3525:3:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "3515:13:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 7846,
                    "nodeType": "Block",
                    "src": "3659:122:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7838,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15153,
                                    "src": "3708:3:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 7839,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "3708:10:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 7840,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15230,
                                  "src": "3720:4:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Vault_$7857",
                                    "typeString": "contract Vault"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 7841,
                                  "name": "_value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7805,
                                  "src": "3726:6:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_contract$_Vault_$7857",
                                    "typeString": "contract Vault"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 7835,
                                      "name": "_token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7803,
                                      "src": "3687:6:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 7834,
                                    "name": "ERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14294,
                                    "src": "3681:5:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ERC20_$14294_$",
                                      "typeString": "type(contract ERC20)"
                                    }
                                  },
                                  "id": 7836,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3681:13:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ERC20_$14294",
                                    "typeString": "contract ERC20"
                                  }
                                },
                                "id": 7837,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transferFrom",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14277,
                                "src": "3681:26:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,address,uint256) external returns (bool)"
                                }
                              },
                              "id": 7842,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3681:52:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7843,
                              "name": "ERROR_TOKEN_TRANSFER_FROM_REVERTED",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7641,
                              "src": "3735:34:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 7833,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              15156,
                              15157
                            ],
                            "referencedDeclaration": 15157,
                            "src": "3673:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7844,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3673:97:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7845,
                        "nodeType": "ExpressionStatement",
                        "src": "3673:97:12"
                      }
                    ]
                  },
                  "id": 7847,
                  "nodeType": "IfStatement",
                  "src": "3511:270:12",
                  "trueBody": {
                    "id": 7832,
                    "nodeType": "Block",
                    "src": "3530:123:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7828,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7825,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15153,
                                  "src": "3600:3:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 7826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3600:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 7827,
                                "name": "_value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7805,
                                "src": "3613:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3600:19:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7829,
                              "name": "ERROR_VALUE_MISMATCH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7638,
                              "src": "3621:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 7824,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              15156,
                              15157
                            ],
                            "referencedDeclaration": 15157,
                            "src": "3592:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7830,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3592:50:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7831,
                        "nodeType": "ExpressionStatement",
                        "src": "3592:50:12"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7849,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7803,
                        "src": "3809:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7850,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15153,
                          "src": "3817:3:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 7851,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3817:10:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7852,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7805,
                        "src": "3829:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7848,
                      "name": "VaultDeposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7660,
                      "src": "3796:12:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 7853,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3796:40:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7854,
                  "nodeType": "EmitStatement",
                  "src": "3791:45:12"
                }
              ]
            },
            "documentation": null,
            "id": 7856,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_deposit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7806,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7803,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 7856,
                  "src": "3347:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7802,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3347:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7805,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 7856,
                  "src": "3363:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7804,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3363:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3346:32:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 7807,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3388:0:12"
            },
            "scope": 7857,
            "src": "3329:514:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 7858,
        "src": "250:3595:12"
      }
    ],
    "src": "0:3846:12"
  },
  "legacyAST": {
    "absolutePath": "@aragon/apps-vault/contracts/Vault.sol",
    "exportedSymbols": {
      "Vault": [
        7857
      ]
    },
    "id": 7858,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 7605,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:12"
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
        "file": "@aragon/os/contracts/apps/AragonApp.sol",
        "id": 7606,
        "nodeType": "ImportDirective",
        "scope": 7858,
        "sourceUnit": 10490,
        "src": "25:49:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/DepositableStorage.sol",
        "file": "@aragon/os/contracts/common/DepositableStorage.sol",
        "id": 7607,
        "nodeType": "ImportDirective",
        "scope": 7858,
        "sourceUnit": 10655,
        "src": "75:60:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/EtherTokenConstant.sol",
        "file": "@aragon/os/contracts/common/EtherTokenConstant.sol",
        "id": 7608,
        "nodeType": "ImportDirective",
        "scope": 7858,
        "sourceUnit": 10663,
        "src": "136:60:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/token/ERC20.sol",
        "file": "@aragon/os/contracts/lib/token/ERC20.sol",
        "id": 7609,
        "nodeType": "ImportDirective",
        "scope": 7858,
        "sourceUnit": 14295,
        "src": "197:50:12",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7610,
              "name": "EtherTokenConstant",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10662,
              "src": "268:18:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EtherTokenConstant_$10662",
                "typeString": "contract EtherTokenConstant"
              }
            },
            "id": 7611,
            "nodeType": "InheritanceSpecifier",
            "src": "268:18:12"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7612,
              "name": "AragonApp",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10489,
              "src": "288:9:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AragonApp_$10489",
                "typeString": "contract AragonApp"
              }
            },
            "id": 7613,
            "nodeType": "InheritanceSpecifier",
            "src": "288:9:12"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7614,
              "name": "DepositableStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10654,
              "src": "299:18:12",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DepositableStorage_$10654",
                "typeString": "contract DepositableStorage"
              }
            },
            "id": 7615,
            "nodeType": "InheritanceSpecifier",
            "src": "299:18:12"
          }
        ],
        "contractDependencies": [
          9577,
          10365,
          10489,
          10502,
          10654,
          10662,
          10712,
          10810,
          10838,
          10871,
          10908,
          11200,
          11422,
          11823,
          11850,
          13114
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 7857,
        "linearizedBaseContracts": [
          7857,
          10654,
          10489,
          9577,
          11823,
          13114,
          11850,
          10908,
          11422,
          10838,
          10662,
          10712,
          10502,
          10871,
          10810,
          11200,
          10365
        ],
        "name": "Vault",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 7620,
            "name": "TRANSFER_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 7857,
            "src": "324:66:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 7616,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "324:7:12",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "5452414e534645525f524f4c45",
                  "id": 7618,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "374:15:12",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c",
                    "typeString": "literal_string \"TRANSFER_ROLE\""
                  },
                  "value": "TRANSFER_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c",
                    "typeString": "literal_string \"TRANSFER_ROLE\""
                  }
                ],
                "id": 7617,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 15147,
                "src": "364:9:12",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                  "typeString": "function () pure returns (bytes32)"
                }
              },
              "id": 7619,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "364:26:12",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 7623,
            "name": "ERROR_DATA_NON_ZERO",
            "nodeType": "VariableDeclaration",
            "scope": 7857,
            "src": "397:67:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7621,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "397:6:12",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5641554c545f444154415f4e4f4e5f5a45524f",
              "id": 7622,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "443:21:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_0829386c2694bdafbc0f9911e06f1a82161dfa07f00e5f4ffc445f7ffa36e297",
                "typeString": "literal_string \"VAULT_DATA_NON_ZERO\""
              },
              "value": "VAULT_DATA_NON_ZERO"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7626,
            "name": "ERROR_NOT_DEPOSITABLE",
            "nodeType": "VariableDeclaration",
            "scope": 7857,
            "src": "470:71:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7624,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "470:6:12",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5641554c545f4e4f545f4445504f53495441424c45",
              "id": 7625,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "518:23:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_9409f425c42754390c734673a9e3b0d583c18311f62345ab50786af4bb8b8452",
                "typeString": "literal_string \"VAULT_NOT_DEPOSITABLE\""
              },
              "value": "VAULT_NOT_DEPOSITABLE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7629,
            "name": "ERROR_DEPOSIT_VALUE_ZERO",
            "nodeType": "VariableDeclaration",
            "scope": 7857,
            "src": "547:77:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7627,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "547:6:12",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5641554c545f4445504f5349545f56414c55455f5a45524f",
              "id": 7628,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "598:26:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_8c5ebb74edc6e384ac3afcd3b0135b9d7255f2b98ccac9da5f2853a3fe2606ad",
                "typeString": "literal_string \"VAULT_DEPOSIT_VALUE_ZERO\""
              },
              "value": "VAULT_DEPOSIT_VALUE_ZERO"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7632,
            "name": "ERROR_TRANSFER_VALUE_ZERO",
            "nodeType": "VariableDeclaration",
            "scope": 7857,
            "src": "630:79:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7630,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "630:6:12",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5641554c545f5452414e534645525f56414c55455f5a45524f",
              "id": 7631,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "682:27:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_decc76396ec53bc6011e3d66d985ed0887f7e92d400db2ee0ccef257d87be30e",
                "typeString": "literal_string \"VAULT_TRANSFER_VALUE_ZERO\""
              },
              "value": "VAULT_TRANSFER_VALUE_ZERO"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7635,
            "name": "ERROR_SEND_REVERTED",
            "nodeType": "VariableDeclaration",
            "scope": 7857,
            "src": "715:67:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7633,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "715:6:12",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5641554c545f53454e445f5245564552544544",
              "id": 7634,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "761:21:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_08b8a3f19622a534b7d452966291145b76c01528da2625cbd77a2566ec4a33e3",
                "typeString": "literal_string \"VAULT_SEND_REVERTED\""
              },
              "value": "VAULT_SEND_REVERTED"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7638,
            "name": "ERROR_VALUE_MISMATCH",
            "nodeType": "VariableDeclaration",
            "scope": 7857,
            "src": "788:69:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7636,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "788:6:12",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5641554c545f56414c55455f4d49534d41544348",
              "id": 7637,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "835:22:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_3cb638818660075c33e198a5cd1c0aa78c5314dcb74b7de31f7a31cae2c0c6d5",
                "typeString": "literal_string \"VAULT_VALUE_MISMATCH\""
              },
              "value": "VAULT_VALUE_MISMATCH"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7641,
            "name": "ERROR_TOKEN_TRANSFER_FROM_REVERTED",
            "nodeType": "VariableDeclaration",
            "scope": 7857,
            "src": "863:95:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7639,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "863:6:12",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5641554c545f544f4b454e5f5452414e534645525f46524f4d5f524556455254",
              "id": 7640,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "924:34:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_9c92a890e9db91a5068bac2a44bb5e2dbc0c358bea307f440284ba46c9762b46",
                "typeString": "literal_string \"VAULT_TOKEN_TRANSFER_FROM_REVERT\""
              },
              "value": "VAULT_TOKEN_TRANSFER_FROM_REVERT"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7644,
            "name": "ERROR_TOKEN_TRANSFER_REVERTED",
            "nodeType": "VariableDeclaration",
            "scope": 7857,
            "src": "964:87:12",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7642,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "964:6:12",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5641554c545f544f4b454e5f5452414e534645525f5245564552544544",
              "id": 7643,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1020:31:12",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_82fb9fc43cf1d51e6d7370d61e175091f36d6426a592459724662e4e87ab02ef",
                "typeString": "literal_string \"VAULT_TOKEN_TRANSFER_REVERTED\""
              },
              "value": "VAULT_TOKEN_TRANSFER_REVERTED"
            },
            "visibility": "private"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 7652,
            "name": "VaultTransfer",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 7651,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7646,
                  "indexed": true,
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 7652,
                  "src": "1078:21:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7645,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1078:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7648,
                  "indexed": true,
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "scope": 7652,
                  "src": "1101:18:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7647,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1101:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7650,
                  "indexed": false,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 7652,
                  "src": "1121:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7649,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1121:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1077:59:12"
            },
            "src": "1058:79:12"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 7660,
            "name": "VaultDeposit",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 7659,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7654,
                  "indexed": true,
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 7660,
                  "src": "1161:21:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7653,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1161:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7656,
                  "indexed": true,
                  "name": "sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 7660,
                  "src": "1184:22:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7655,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1184:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7658,
                  "indexed": false,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 7660,
                  "src": "1208:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7657,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1208:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1160:63:12"
            },
            "src": "1142:82:12"
          },
          {
            "body": {
              "id": 7680,
              "nodeType": "Block",
              "src": "1433:101:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7670,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7666,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15153,
                              "src": "1451:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 7667,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1451:8:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          "id": 7668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1451:15:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7669,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1470:1:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1451:20:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7671,
                        "name": "ERROR_DATA_NON_ZERO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7623,
                        "src": "1473:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7665,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "1443:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7672,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1443:50:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7673,
                  "nodeType": "ExpressionStatement",
                  "src": "1443:50:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7675,
                        "name": "ETH",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10661,
                        "src": "1512:3:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7676,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15153,
                          "src": "1517:3:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 7677,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1517:9:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7674,
                      "name": "_deposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7856,
                      "src": "1503:8:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 7678,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1503:24:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7679,
                  "nodeType": "ExpressionStatement",
                  "src": "1503:24:12"
                }
              ]
            },
            "documentation": "@dev On a normal send() or transfer() this fallback is never executed as it will be\n     intercepted by the Proxy (see aragonOS#281)",
            "id": 7681,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 7663,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7662,
                  "name": "isInitialized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10752,
                  "src": "1419:13:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1419:13:12"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7661,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1399:2:12"
            },
            "payable": true,
            "returnParameters": {
              "id": 7664,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1433:0:12"
            },
            "scope": 7857,
            "src": "1390:144:12",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7693,
              "nodeType": "Block",
              "src": "1732:60:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 7686,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10795,
                      "src": "1742:11:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 7687,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1742:13:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7688,
                  "nodeType": "ExpressionStatement",
                  "src": "1742:13:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 7690,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1780:4:12",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 7689,
                      "name": "setDepositable",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10653,
                      "src": "1765:14:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool)"
                      }
                    },
                    "id": 7691,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1765:20:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7692,
                  "nodeType": "ExpressionStatement",
                  "src": "1765:20:12"
                }
              ]
            },
            "documentation": "@notice Initialize Vault app\n@dev As an AragonApp it needs to be initialized in order for roles (`auth` and `authP`) to work",
            "id": 7694,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 7684,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7683,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10742,
                  "src": "1723:8:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1723:8:12"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7682,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1711:2:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 7685,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1732:0:12"
            },
            "scope": 7857,
            "src": "1692:100:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7708,
              "nodeType": "Block",
              "src": "2060:41:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7704,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7696,
                        "src": "2079:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7705,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7698,
                        "src": "2087:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7703,
                      "name": "_deposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7856,
                      "src": "2070:8:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 7706,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2070:24:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7707,
                  "nodeType": "ExpressionStatement",
                  "src": "2070:24:12"
                }
              ]
            },
            "documentation": "@notice Deposit `_value` `_token` to the vault\n@param _token Address of the token being transferred\n@param _value Amount of tokens being transferred",
            "id": 7709,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 7701,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7700,
                  "name": "isInitialized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10752,
                  "src": "2046:13:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2046:13:12"
              }
            ],
            "name": "deposit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7699,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7696,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 7709,
                  "src": "1997:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7695,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1997:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7698,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 7709,
                  "src": "2013:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7697,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2013:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1996:32:12"
            },
            "payable": true,
            "returnParameters": {
              "id": 7702,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2060:0:12"
            },
            "scope": 7857,
            "src": "1980:121:12",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7764,
              "nodeType": "Block",
              "src": "2542:319:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7729,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7727,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7715,
                          "src": "2560:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2569:1:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2560:10:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7730,
                        "name": "ERROR_TRANSFER_VALUE_ZERO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7632,
                        "src": "2572:25:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7726,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "2552:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7731,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2552:46:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7732,
                  "nodeType": "ExpressionStatement",
                  "src": "2552:46:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 7735,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7733,
                      "name": "_token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7711,
                      "src": "2613:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 7734,
                      "name": "ETH",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10661,
                      "src": "2623:3:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2613:13:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 7756,
                    "nodeType": "Block",
                    "src": "2705:100:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7750,
                                  "name": "_to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7713,
                                  "src": "2750:3:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 7751,
                                  "name": "_value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7715,
                                  "src": "2755:6:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 7747,
                                      "name": "_token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7711,
                                      "src": "2733:6:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 7746,
                                    "name": "ERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14294,
                                    "src": "2727:5:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ERC20_$14294_$",
                                      "typeString": "type(contract ERC20)"
                                    }
                                  },
                                  "id": 7748,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2727:13:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ERC20_$14294",
                                    "typeString": "contract ERC20"
                                  }
                                },
                                "id": 7749,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14257,
                                "src": "2727:22:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 7752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2727:35:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7753,
                              "name": "ERROR_TOKEN_TRANSFER_REVERTED",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7644,
                              "src": "2764:29:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 7745,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              15156,
                              15157
                            ],
                            "referencedDeclaration": 15157,
                            "src": "2719:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2719:75:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7755,
                        "nodeType": "ExpressionStatement",
                        "src": "2719:75:12"
                      }
                    ]
                  },
                  "id": 7757,
                  "nodeType": "IfStatement",
                  "src": "2609:196:12",
                  "trueBody": {
                    "id": 7744,
                    "nodeType": "Block",
                    "src": "2628:71:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7739,
                                  "name": "_value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7715,
                                  "src": "2659:6:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7737,
                                  "name": "_to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7713,
                                  "src": "2650:3:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 7738,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "send",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2650:8:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_send_nonpayable$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (uint256) returns (bool)"
                                }
                              },
                              "id": 7740,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2650:16:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7741,
                              "name": "ERROR_SEND_REVERTED",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7635,
                              "src": "2668:19:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 7736,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              15156,
                              15157
                            ],
                            "referencedDeclaration": 15157,
                            "src": "2642:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2642:46:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7743,
                        "nodeType": "ExpressionStatement",
                        "src": "2642:46:12"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7759,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7711,
                        "src": "2834:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7760,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7713,
                        "src": "2842:3:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7761,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7715,
                        "src": "2847:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7758,
                      "name": "VaultTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7652,
                      "src": "2820:13:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 7762,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2820:34:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7763,
                  "nodeType": "EmitStatement",
                  "src": "2815:39:12"
                }
              ]
            },
            "documentation": "@notice Transfer `_value` `_token` from the Vault to `_to`\n@param _token Address of the token being transferred\n@param _to Address of the recipient of tokens\n@param _value Amount of tokens being transferred",
            "id": 7765,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7718,
                    "name": "TRANSFER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7620,
                    "src": "2497:13:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7720,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7711,
                        "src": "2516:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7721,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7713,
                        "src": "2524:3:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7722,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7715,
                        "src": "2529:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7719,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9167,
                        9182,
                        9202,
                        9217,
                        9237,
                        9258,
                        9282,
                        9302,
                        9331,
                        9356,
                        9381,
                        9404,
                        9435,
                        9474,
                        9521,
                        9576
                      ],
                      "referencedDeclaration": 9381,
                      "src": "2512:3:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (address,address,uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 7723,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2512:24:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 7724,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7717,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10428,
                  "src": "2491:5:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2491:46:12"
              }
            ],
            "name": "transfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7716,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7711,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 7765,
                  "src": "2421:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7710,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2421:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7713,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 7765,
                  "src": "2437:11:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7712,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2437:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7715,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 7765,
                  "src": "2450:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7714,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2450:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2420:45:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 7725,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2542:0:12"
            },
            "scope": 7857,
            "src": "2403:458:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7790,
              "nodeType": "Block",
              "src": "2930:155:12",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 7774,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7772,
                      "name": "_token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7767,
                      "src": "2944:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 7773,
                      "name": "ETH",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10661,
                      "src": "2954:3:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2944:13:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 7788,
                    "nodeType": "Block",
                    "src": "3018:61:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7785,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15230,
                              "src": "3063:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Vault_$7857",
                                "typeString": "contract Vault"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Vault_$7857",
                                "typeString": "contract Vault"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7782,
                                  "name": "_token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7767,
                                  "src": "3045:6:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 7781,
                                "name": "ERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14294,
                                "src": "3039:5:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ERC20_$14294_$",
                                  "typeString": "type(contract ERC20)"
                                }
                              },
                              "id": 7783,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3039:13:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ERC20_$14294",
                                "typeString": "contract ERC20"
                              }
                            },
                            "id": 7784,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 14239,
                            "src": "3039:23:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 7786,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3039:29:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 7771,
                        "id": 7787,
                        "nodeType": "Return",
                        "src": "3032:36:12"
                      }
                    ]
                  },
                  "id": 7789,
                  "nodeType": "IfStatement",
                  "src": "2940:139:12",
                  "trueBody": {
                    "id": 7780,
                    "nodeType": "Block",
                    "src": "2959:53:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7776,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15230,
                                "src": "2988:4:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Vault_$7857",
                                  "typeString": "contract Vault"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Vault_$7857",
                                  "typeString": "contract Vault"
                                }
                              ],
                              "id": 7775,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2980:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 7777,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2980:13:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 7778,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2980:21:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 7771,
                        "id": 7779,
                        "nodeType": "Return",
                        "src": "2973:28:12"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 7791,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "balance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7768,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7767,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 7791,
                  "src": "2884:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7766,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2884:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2883:16:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 7771,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7770,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7791,
                  "src": "2921:7:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7769,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2921:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2920:9:12"
            },
            "scope": 7857,
            "src": "2867:218:12",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7800,
              "nodeType": "Block",
              "src": "3294:29:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 7798,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3311:5:12",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 7797,
                  "id": 7799,
                  "nodeType": "Return",
                  "src": "3304:12:12"
                }
              ]
            },
            "documentation": "@dev Disable recovery escape hatch, as it could be used\n     maliciously to transfer funds away from the vault",
            "id": 7801,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "allowRecoverability",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7794,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7793,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7801,
                  "src": "3258:7:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7792,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3258:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3257:9:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 7797,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7796,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7801,
                  "src": "3288:4:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7795,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3288:4:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3287:6:12"
            },
            "scope": 7857,
            "src": "3229:94:12",
            "stateMutability": "view",
            "superFunction": 11416,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7855,
              "nodeType": "Block",
              "src": "3388:455:12",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 7809,
                          "name": "isDepositable",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10641,
                          "src": "3406:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                            "typeString": "function () view returns (bool)"
                          }
                        },
                        "id": 7810,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3406:15:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7811,
                        "name": "ERROR_NOT_DEPOSITABLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7626,
                        "src": "3423:21:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7808,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "3398:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7812,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3398:47:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7813,
                  "nodeType": "ExpressionStatement",
                  "src": "3398:47:12"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7817,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7815,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7805,
                          "src": "3463:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7816,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3472:1:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3463:10:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7818,
                        "name": "ERROR_DEPOSIT_VALUE_ZERO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7629,
                        "src": "3475:24:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7814,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "3455:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3455:45:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7820,
                  "nodeType": "ExpressionStatement",
                  "src": "3455:45:12"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 7823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7821,
                      "name": "_token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7803,
                      "src": "3515:6:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 7822,
                      "name": "ETH",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10661,
                      "src": "3525:3:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "3515:13:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 7846,
                    "nodeType": "Block",
                    "src": "3659:122:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7838,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15153,
                                    "src": "3708:3:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 7839,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "3708:10:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 7840,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15230,
                                  "src": "3720:4:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Vault_$7857",
                                    "typeString": "contract Vault"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 7841,
                                  "name": "_value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7805,
                                  "src": "3726:6:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_contract$_Vault_$7857",
                                    "typeString": "contract Vault"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 7835,
                                      "name": "_token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7803,
                                      "src": "3687:6:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 7834,
                                    "name": "ERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14294,
                                    "src": "3681:5:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ERC20_$14294_$",
                                      "typeString": "type(contract ERC20)"
                                    }
                                  },
                                  "id": 7836,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3681:13:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ERC20_$14294",
                                    "typeString": "contract ERC20"
                                  }
                                },
                                "id": 7837,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transferFrom",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 14277,
                                "src": "3681:26:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,address,uint256) external returns (bool)"
                                }
                              },
                              "id": 7842,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3681:52:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7843,
                              "name": "ERROR_TOKEN_TRANSFER_FROM_REVERTED",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7641,
                              "src": "3735:34:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 7833,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              15156,
                              15157
                            ],
                            "referencedDeclaration": 15157,
                            "src": "3673:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7844,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3673:97:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7845,
                        "nodeType": "ExpressionStatement",
                        "src": "3673:97:12"
                      }
                    ]
                  },
                  "id": 7847,
                  "nodeType": "IfStatement",
                  "src": "3511:270:12",
                  "trueBody": {
                    "id": 7832,
                    "nodeType": "Block",
                    "src": "3530:123:12",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7828,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7825,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15153,
                                  "src": "3600:3:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 7826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3600:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 7827,
                                "name": "_value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7805,
                                "src": "3613:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3600:19:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7829,
                              "name": "ERROR_VALUE_MISMATCH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7638,
                              "src": "3621:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 7824,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              15156,
                              15157
                            ],
                            "referencedDeclaration": 15157,
                            "src": "3592:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7830,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3592:50:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7831,
                        "nodeType": "ExpressionStatement",
                        "src": "3592:50:12"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7849,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7803,
                        "src": "3809:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7850,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15153,
                          "src": "3817:3:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 7851,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3817:10:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7852,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7805,
                        "src": "3829:6:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7848,
                      "name": "VaultDeposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7660,
                      "src": "3796:12:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 7853,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3796:40:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7854,
                  "nodeType": "EmitStatement",
                  "src": "3791:45:12"
                }
              ]
            },
            "documentation": null,
            "id": 7856,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_deposit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7806,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7803,
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 7856,
                  "src": "3347:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7802,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3347:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7805,
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 7856,
                  "src": "3363:14:12",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7804,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3363:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3346:32:12"
            },
            "payable": false,
            "returnParameters": {
              "id": 7807,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3388:0:12"
            },
            "scope": 7857,
            "src": "3329:514:12",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 7858,
        "src": "250:3595:12"
      }
    ],
    "src": "0:3846:12"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2019-09-04T11:02:55.628Z"
}