{
  "contractName": "TokenManager",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "_holder",
          "type": "address"
        }
      ],
      "name": "tokenGrantsCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_holder",
          "type": "address"
        }
      ],
      "name": "spendableBalanceOf",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_receiver",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        },
        {
          "name": "_start",
          "type": "uint64"
        },
        {
          "name": "_cliff",
          "type": "uint64"
        },
        {
          "name": "_vesting",
          "type": "uint64"
        },
        {
          "name": "_revokable",
          "type": "bool"
        }
      ],
      "name": "assignVested",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "holders",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_receiver",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "onTransfer",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "EVMSCRIPT_REGISTRY_APP_ID",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_holder",
          "type": "address"
        },
        {
          "name": "_time",
          "type": "uint256"
        }
      ],
      "name": "transferableBalance",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "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": "ISSUE_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitializationBlock",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "transferable",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "EVMSCRIPT_REGISTRY_APP",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_holder",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "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": "ASSIGN_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "BURN_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_receiver",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "assign",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_sender",
          "type": "address"
        },
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "canForward",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "allHolders",
      "outputs": [
        {
          "name": "",
          "type": "address[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "issue",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "kernel",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_evmScript",
          "type": "bytes"
        }
      ],
      "name": "forward",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        },
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "onApprove",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_token",
          "type": "address"
        },
        {
          "name": "_transferable",
          "type": "bool"
        },
        {
          "name": "_maxAccountTokens",
          "type": "uint256"
        },
        {
          "name": "_logHolders",
          "type": "bool"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "MINT_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "maxAccountTokens",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "REVOKE_VESTINGS_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "proxyPayment",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_script",
          "type": "bytes"
        }
      ],
      "name": "getExecutor",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_holder",
          "type": "address"
        },
        {
          "name": "_vestingId",
          "type": "uint256"
        }
      ],
      "name": "revokeVesting",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "token",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "logHolders",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isForwarder",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "vestingId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "NewVesting",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "vestingId",
          "type": "uint256"
        }
      ],
      "name": "RevokeVesting",
      "type": "event"
    }
  ],
  "bytecode": "0x6060604052341561000f57600080fd5b612fde8061001e6000396000f3006060604052600436106101ac576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806302a72a4c146101b15780630f8f8b83146101fe57806321cb18cd1461024b5780632a11ced0146102e557806340c10f19146103485780634a3931491461038a57806360b1e0571461040357806372f8393c1461043457806380afdea81461048a578063856222f1146104bb5780638b3dd749146104ec57806392ff0d31146105155780639b3fdf4c146105425780639dc29fac14610573578063a1658fad146105b5578063a51d9a8e14610653578063b930908f14610684578063be760488146106b5578063c0774df3146106f7578063c80a3aa61461078b578063cc872b66146107f5578063d4aae0c414610818578063d948d4681461086d578063da682aeb146108ca578063e918c62f14610943578063e9a9c8501461099b578063ecfda432146109cc578063edc168f1146109f5578063f48c305414610a26578063f92a79ff14610a6c578063fa6799f214610b09578063fc0c546a14610b4b578063fd2c0d6814610ba0578063fd64eccb14610bcd575b600080fd5b34156101bc57600080fd5b6101e8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610bfa565b6040518082815260200191505060405180910390f35b341561020957600080fd5b610235600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c46565b6040518082815260200191505060405180910390f35b341561025657600080fd5b6102cf600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803567ffffffffffffffff1690602001909190803567ffffffffffffffff1690602001909190803567ffffffffffffffff169060200190919080351515906020019091905050610c59565b6040518082815260200191505060405180910390f35b34156102f057600080fd5b6103066004808035906020019091905050610ef5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561035357600080fd5b610388600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610f34565b005b341561039557600080fd5b6103e9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610faf565b604051808215151515815260200191505060405180910390f35b341561040e57600080fd5b610416611083565b60405180826000191660001916815260200191505060405180910390f35b341561043f57600080fd5b610474600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506110bc565b6040518082815260200191505060405180910390f35b341561049557600080fd5b61049d6112ef565b60405180826000191660001916815260200191505060405180910390f35b34156104c657600080fd5b6104ce6112f5565b60405180826000191660001916815260200191505060405180910390f35b34156104f757600080fd5b6104ff61132e565b6040518082815260200191505060405180910390f35b341561052057600080fd5b610528611338565b604051808215151515815260200191505060405180910390f35b341561054d57600080fd5b61055561134b565b60405180826000191660001916815260200191505060405180910390f35b341561057e57600080fd5b6105b3600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506113e6565b005b34156105c057600080fd5b610639600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035600019169060200190919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505061152b565b604051808215151515815260200191505060405180910390f35b341561065e57600080fd5b61066661172b565b60405180826000191660001916815260200191505060405180910390f35b341561068f57600080fd5b610697611764565b60405180826000191660001916815260200191505060405180910390f35b34156106c057600080fd5b6106f5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061179d565b005b341561070257600080fd5b610771600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611803565b604051808215151515815260200191505060405180910390f35b341561079657600080fd5b61079e6118ef565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156107e15780820151818401526020810190506107c6565b505050509050019250505060405180910390f35b341561080057600080fd5b6108166004808035906020019091905050611983565b005b341561082357600080fd5b61082b6119e7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561087857600080fd5b6108c8600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611a0c565b005b34156108d557600080fd5b610929600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611af8565b604051808215151515815260200191505060405180910390f35b341561094e57600080fd5b610999600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803515159060200190919080359060200190919080351515906020019091905050611b05565b005b34156109a657600080fd5b6109ae611c8f565b60405180826000191660001916815260200191505060405180910390f35b34156109d757600080fd5b6109df611cc8565b6040518082815260200191505060405180910390f35b3415610a0057600080fd5b610a08611cce565b60405180826000191660001916815260200191505060405180910390f35b610a52600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d07565b604051808215151515815260200191505060405180910390f35b3415610a7757600080fd5b610ac7600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611d6e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610b1457600080fd5b610b49600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611e75565b005b3415610b5657600080fd5b610b5e612210565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610bab57600080fd5b610bb3612236565b604051808215151515815260200191505060405180910390f35b3415610bd857600080fd5b610be0612249565b604051808215151515815260200191505060405180910390f35b6000606760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6000610c5282426110bc565b9050919050565b6000610c63612e17565b600060405180807f41535349474e5f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020610ca58a8a612252565b610cb033838361152b565b1515610cbb57600080fd5b6032610cc68c610bfa565b101515610cd257600080fd5b8767ffffffffffffffff168967ffffffffffffffff1611158015610d0a57508667ffffffffffffffff168867ffffffffffffffff1611155b1515610d1557600080fd5b60a0604051908101604052808b81526020018a67ffffffffffffffff1681526020018967ffffffffffffffff1681526020018867ffffffffffffffff16815260200187151581525093506001606760008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806001018281610db29190612e67565b916000526020600020906002020160008790919091506000820151816000015560208201518160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160010160186101000a81548160ff0219169083151502179055505050039250610e8e8b8b612282565b8a73ffffffffffffffffffffffffffffffffffffffff167f627ad26dcfe82ec79b33fda0ddd062f6fab9f4914acac8345f79090dfd86fb54848c604051808381526020018281526020019250505060405180910390a2829450505050509695505050505050565b606981815481101515610f0457fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60405180807f4d494e545f524f4c45000000000000000000000000000000000000000000000081525060090190506040518091039020610f748383612252565b610f7f33838361152b565b1515610f8a57600080fd5b610f94848461238e565b1515610f9f57600080fd5b610fa9848461247f565b50505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148061101957503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b915081151561106c5761102c858561238e565b9050606460149054906101000a900460ff1680156110475750805b801561105c57508361105987426110bc565b10155b151561106b576000925061107a565b5b61107585612575565b600192505b50509392505050565b60405180807f65766d7265672e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902081565b6000806000806000806110ce88610bfa565b945060009350600092505b848310156111f057606760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561112d57fe5b906000526020600020906002020191506111be82600001548867ffffffffffffffff168460010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff168560010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff168660010160109054906101000a900467ffffffffffffffff1667ffffffffffffffff166126a3565b90506111d381856126ff90919063ffffffff16565b93506111e96001846126ff90919063ffffffff16565b92506110d9565b6112e284606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318b6000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156112b957600080fd5b6102c65a03f115156112ca57600080fd5b5050506040518051905061272090919063ffffffff16565b9550505050505092915050565b60015481565b60405180807f49535355455f524f4c4500000000000000000000000000000000000000000000815250600a019050604051809103902081565b6000600354905090565b606460149054906101000a900460ff1681565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f65766d7265672e617261676f6e706d2e6574680000000000000000000000000081525060130190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b60405180807f4255524e5f524f4c450000000000000000000000000000000000000000000000815250600901905060405180910390206114268383612252565b61143133838361152b565b151561143c57600080fd5b606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d3ce77fe85856000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561150957600080fd5b6102c65a03f1151561151a57600080fd5b505050604051805190505050505050565b6000611535612e99565b6000808451111561154e57602084510290508391508082525b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061172057506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fdef9106873088866000604051602001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b838110156116b657808201518184015260208101905061169b565b50505050905090810190601f1680156116e35780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b151561170457600080fd5b6102c65a03f1151561171557600080fd5b505050604051805190505b925050509392505050565b60405180807f41535349474e5f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b60405180807f4255524e5f524f4c4500000000000000000000000000000000000000000000008152506009019050604051809103902081565b60405180807f41535349474e5f524f4c45000000000000000000000000000000000000000000815250600b01905060405180910390206117dd8383612252565b6117e833838361152b565b15156117f357600080fd5b6117fd8484612282565b50505050565b600080606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156118cb57600080fd5b6102c65a03f115156118dc57600080fd5b5050506040518051905011905092915050565b6118f7612ead565b606980548060200260200160405190810160405280929190818152602001828054801561197957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161192f575b5050505050905090565b60405180807f49535355455f524f4c4500000000000000000000000000000000000000000000815250600a01905060405180910390206119c28261273c565b6119cd33838361152b565b15156119d857600080fd5b6119e2308461247f565b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a14612e99565b611a1c612ead565b611a263384611803565b1515611a3157600080fd5b6000604051805910611a405750595b9080825280601f01601f191660200182016040525091506001604051805910611a665750595b90808252806020026020018201604052509050606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816000815181101515611aab57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611af2838383612789565b50505050565b6000600190509392505050565b6000600354141515611b1657600080fd5b611b1e6129d1565b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1663f77c47916000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611ba157600080fd5b6102c65a03f11515611bb257600080fd5b5050506040518051905073ffffffffffffffffffffffffffffffffffffffff16141515611bde57600080fd5b83606460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082606460146101000a81548160ff02191690831515021790555060008214611c475781611c69565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b60658190555080606660006101000a81548160ff02191690831515021790555050505050565b60405180807f4d494e545f524f4c4500000000000000000000000000000000000000000000008152506009019050604051809103902081565b60655481565b60405180807f5245564f4b455f56455354494e47535f524f4c450000000000000000000000008152506014019050604051809103902081565b6000606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d6557600080fd5b60009050919050565b6000611d786129f2565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e08578082015181840152602081019050611ded565b50505050905090810190601f168015611e355780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1515611e5357600080fd5b6102c65a03f11515611e6457600080fd5b505050604051805190509050919050565b60008060405180807f5245564f4b455f56455354494e47535f524f4c4500000000000000000000000081525060140190506040518091039020611eb785612b50565b611ec233838361152b565b1515611ecd57600080fd5b606760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002085815481101515611f1957fe5b906000526020600020906002020193508360010160189054906101000a900460ff161515611f4657600080fd5b611fc784600001544267ffffffffffffffff168660010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff168760010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff168860010160109054906101000a900467ffffffffffffffff1667ffffffffffffffff166126a3565b9250606760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208581548110151561201557fe5b90600052602060002090600202016000808201600090556001820160006101000a81549067ffffffffffffffff02191690556001820160086101000a81549067ffffffffffffffff02191690556001820160106101000a81549067ffffffffffffffff02191690556001820160186101000a81549060ff02191690555050606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8730866000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b151561219457600080fd5b6102c65a03f115156121a557600080fd5b5050506040518051905015156121ba57600080fd5b8573ffffffffffffffffffffffffffffffffffffffff167fd84a4ab319cd8ac27a1baf06f5020baf3eb7692cca480d7a7fb68596befe5ca9866040518082815260200191505060405180910390a2505050505050565b606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606660009054906101000a900460ff1681565b60006001905090565b61225a612ec1565b61227a8373ffffffffffffffffffffffffffffffffffffffff1683612b7e565b905092915050565b61228c828261238e565b151561229757600080fd5b606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561236457600080fd5b6102c65a03f1151561237557600080fd5b50505060405180519050151561238a57600080fd5b5050565b600060655482606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561245957600080fd5b6102c65a03f1151561246a57600080fd5b50505060405180519050011115905092915050565b606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663827f32c083836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561254c57600080fd5b6102c65a03f1151561255d57600080fd5b505050604051805190505061257182612575565b5050565b606660009054906101000a900460ff1615806125da5750606860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125e4576126a0565b6001606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550606980548060010182816126509190612ed5565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b50565b60008082861015156126b857600091506126f5565b838610156126c8578691506126f5565b6126ed6126de886126d98989612720565b612bea565b6126e88588612720565b612c20565b905080870391505b5095945050505050565b600080828401905083811015151561271657600080fd5b8091505092915050565b600082821115151561273157600080fd5b818303905092915050565b612744612ec1565b60016040518059106127535750595b908082528060200260200182016040525090508181600081518110151561277657fe5b9060200190602002018181525050919050565b612791612e99565b600061279b612e99565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915060015490506127d289611d6e565b9450600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415151561281057600080fd5b61282588888b612c3b9092919063ffffffff16565b9350600073ffffffffffffffffffffffffffffffffffffffff1663279cea3590507c01000000000000000000000000000000000000000000000000000000000292508473ffffffffffffffffffffffffffffffffffffffff16837c01000000000000000000000000000000000000000000000000000000009004856040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828051906020019080838360005b838110156128f85780820151818401526020810190506128dd565b50505050905090810190601f1680156129255780820380516001836020036101000a031916815260200191505b509150506000604051808303818661646e5a03f492505050151561294857600080fd5b612950612d01565b95508173ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156129ad57600080fd5b8060001916600154600019161415156129c557600080fd5b50505050509392505050565b60006003541415156129e257600080fd5b6129ea612d37565b600381905550565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f65766d7265672e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902060405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1515612b2c57600080fd5b6102c65a03f11515612b3d57600080fd5b5050506040518051905090508091505090565b612b58612ec1565b612b778273ffffffffffffffffffffffffffffffffffffffff1661273c565b9050919050565b612b86612ec1565b6002604051805910612b955750595b9080825280602002602001820160405250905082816000815181101515612bb857fe5b906020019060200201818152505081816001815181101515612bd657fe5b906020019060200201818152505092915050565b60008082840290506000841480612c0b5750828482811515612c0857fe5b04145b1515612c1657600080fd5b8091505092915050565b6000808284811515612c2e57fe5b0490508091505092915050565b612c43612e99565b60008060008060609350612c5688612d3f565b60200284019250612c6687612d3f565b60200283019150612c7686612d7b565b6020028201905080604051805910612c8b5750595b9080825280601f01601f19166020018201604052509450836020860152826040860152816060860152612cc985612cc18a612d89565b868b51612d93565b612cde85612cd689612d89565b858a51612d93565b612cf685612ceb88612db2565b8460208a5102612d93565b505050509392505050565b612d09612e99565b3d8060008114612d2e576040519250602082018301604052602082036020843e612d2f565b5b505080905090565b600043905090565b60008060208351811515612d4f57fe5b0611612d5c576000612d5f565b60015b60ff1660208351811515612d6f57fe5b04600101019050919050565b600081516001019050919050565b6000819050919050565b60008260208601019050612dab818560208501612dbc565b5050505050565b6000819050919050565b6000806000808593508692508491505b602082101515612df15783518352602083019250602084019350602082039150612dcc565b6001826020036101000a0390508019845116818451168181178552505050505050505050565b60a06040519081016040528060008152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b815481835581811511612e9457600202816002028360005260206000209182019101612e939190612f01565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b815481835581811511612efc57818360005260206000209182019101612efb9190612f8d565b5b505050565b612f8a91905b80821115612f86576000808201600090556001820160006101000a81549067ffffffffffffffff02191690556001820160086101000a81549067ffffffffffffffff02191690556001820160106101000a81549067ffffffffffffffff02191690556001820160186101000a81549060ff021916905550600201612f07565b5090565b90565b612faf91905b80821115612fab576000816000905550600101612f93565b5090565b905600a165627a7a72305820eb6475e62f2d03e11df227914e70744d97b55ec3bc688d342fb6203d3e75a5f60029",
  "deployedBytecode": "0x6060604052600436106101ac576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806302a72a4c146101b15780630f8f8b83146101fe57806321cb18cd1461024b5780632a11ced0146102e557806340c10f19146103485780634a3931491461038a57806360b1e0571461040357806372f8393c1461043457806380afdea81461048a578063856222f1146104bb5780638b3dd749146104ec57806392ff0d31146105155780639b3fdf4c146105425780639dc29fac14610573578063a1658fad146105b5578063a51d9a8e14610653578063b930908f14610684578063be760488146106b5578063c0774df3146106f7578063c80a3aa61461078b578063cc872b66146107f5578063d4aae0c414610818578063d948d4681461086d578063da682aeb146108ca578063e918c62f14610943578063e9a9c8501461099b578063ecfda432146109cc578063edc168f1146109f5578063f48c305414610a26578063f92a79ff14610a6c578063fa6799f214610b09578063fc0c546a14610b4b578063fd2c0d6814610ba0578063fd64eccb14610bcd575b600080fd5b34156101bc57600080fd5b6101e8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610bfa565b6040518082815260200191505060405180910390f35b341561020957600080fd5b610235600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c46565b6040518082815260200191505060405180910390f35b341561025657600080fd5b6102cf600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803567ffffffffffffffff1690602001909190803567ffffffffffffffff1690602001909190803567ffffffffffffffff169060200190919080351515906020019091905050610c59565b6040518082815260200191505060405180910390f35b34156102f057600080fd5b6103066004808035906020019091905050610ef5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561035357600080fd5b610388600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610f34565b005b341561039557600080fd5b6103e9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610faf565b604051808215151515815260200191505060405180910390f35b341561040e57600080fd5b610416611083565b60405180826000191660001916815260200191505060405180910390f35b341561043f57600080fd5b610474600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506110bc565b6040518082815260200191505060405180910390f35b341561049557600080fd5b61049d6112ef565b60405180826000191660001916815260200191505060405180910390f35b34156104c657600080fd5b6104ce6112f5565b60405180826000191660001916815260200191505060405180910390f35b34156104f757600080fd5b6104ff61132e565b6040518082815260200191505060405180910390f35b341561052057600080fd5b610528611338565b604051808215151515815260200191505060405180910390f35b341561054d57600080fd5b61055561134b565b60405180826000191660001916815260200191505060405180910390f35b341561057e57600080fd5b6105b3600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506113e6565b005b34156105c057600080fd5b610639600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035600019169060200190919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505061152b565b604051808215151515815260200191505060405180910390f35b341561065e57600080fd5b61066661172b565b60405180826000191660001916815260200191505060405180910390f35b341561068f57600080fd5b610697611764565b60405180826000191660001916815260200191505060405180910390f35b34156106c057600080fd5b6106f5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061179d565b005b341561070257600080fd5b610771600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611803565b604051808215151515815260200191505060405180910390f35b341561079657600080fd5b61079e6118ef565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156107e15780820151818401526020810190506107c6565b505050509050019250505060405180910390f35b341561080057600080fd5b6108166004808035906020019091905050611983565b005b341561082357600080fd5b61082b6119e7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561087857600080fd5b6108c8600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611a0c565b005b34156108d557600080fd5b610929600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611af8565b604051808215151515815260200191505060405180910390f35b341561094e57600080fd5b610999600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803515159060200190919080359060200190919080351515906020019091905050611b05565b005b34156109a657600080fd5b6109ae611c8f565b60405180826000191660001916815260200191505060405180910390f35b34156109d757600080fd5b6109df611cc8565b6040518082815260200191505060405180910390f35b3415610a0057600080fd5b610a08611cce565b60405180826000191660001916815260200191505060405180910390f35b610a52600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d07565b604051808215151515815260200191505060405180910390f35b3415610a7757600080fd5b610ac7600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611d6e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610b1457600080fd5b610b49600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611e75565b005b3415610b5657600080fd5b610b5e612210565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610bab57600080fd5b610bb3612236565b604051808215151515815260200191505060405180910390f35b3415610bd857600080fd5b610be0612249565b604051808215151515815260200191505060405180910390f35b6000606760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6000610c5282426110bc565b9050919050565b6000610c63612e17565b600060405180807f41535349474e5f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020610ca58a8a612252565b610cb033838361152b565b1515610cbb57600080fd5b6032610cc68c610bfa565b101515610cd257600080fd5b8767ffffffffffffffff168967ffffffffffffffff1611158015610d0a57508667ffffffffffffffff168867ffffffffffffffff1611155b1515610d1557600080fd5b60a0604051908101604052808b81526020018a67ffffffffffffffff1681526020018967ffffffffffffffff1681526020018867ffffffffffffffff16815260200187151581525093506001606760008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806001018281610db29190612e67565b916000526020600020906002020160008790919091506000820151816000015560208201518160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160010160186101000a81548160ff0219169083151502179055505050039250610e8e8b8b612282565b8a73ffffffffffffffffffffffffffffffffffffffff167f627ad26dcfe82ec79b33fda0ddd062f6fab9f4914acac8345f79090dfd86fb54848c604051808381526020018281526020019250505060405180910390a2829450505050509695505050505050565b606981815481101515610f0457fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60405180807f4d494e545f524f4c45000000000000000000000000000000000000000000000081525060090190506040518091039020610f748383612252565b610f7f33838361152b565b1515610f8a57600080fd5b610f94848461238e565b1515610f9f57600080fd5b610fa9848461247f565b50505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148061101957503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b915081151561106c5761102c858561238e565b9050606460149054906101000a900460ff1680156110475750805b801561105c57508361105987426110bc565b10155b151561106b576000925061107a565b5b61107585612575565b600192505b50509392505050565b60405180807f65766d7265672e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902081565b6000806000806000806110ce88610bfa565b945060009350600092505b848310156111f057606760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561112d57fe5b906000526020600020906002020191506111be82600001548867ffffffffffffffff168460010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff168560010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff168660010160109054906101000a900467ffffffffffffffff1667ffffffffffffffff166126a3565b90506111d381856126ff90919063ffffffff16565b93506111e96001846126ff90919063ffffffff16565b92506110d9565b6112e284606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318b6000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156112b957600080fd5b6102c65a03f115156112ca57600080fd5b5050506040518051905061272090919063ffffffff16565b9550505050505092915050565b60015481565b60405180807f49535355455f524f4c4500000000000000000000000000000000000000000000815250600a019050604051809103902081565b6000600354905090565b606460149054906101000a900460ff1681565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f65766d7265672e617261676f6e706d2e6574680000000000000000000000000081525060130190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b60405180807f4255524e5f524f4c450000000000000000000000000000000000000000000000815250600901905060405180910390206114268383612252565b61143133838361152b565b151561143c57600080fd5b606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d3ce77fe85856000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561150957600080fd5b6102c65a03f1151561151a57600080fd5b505050604051805190505050505050565b6000611535612e99565b6000808451111561154e57602084510290508391508082525b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061172057506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fdef9106873088866000604051602001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b838110156116b657808201518184015260208101905061169b565b50505050905090810190601f1680156116e35780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b151561170457600080fd5b6102c65a03f1151561171557600080fd5b505050604051805190505b925050509392505050565b60405180807f41535349474e5f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b60405180807f4255524e5f524f4c4500000000000000000000000000000000000000000000008152506009019050604051809103902081565b60405180807f41535349474e5f524f4c45000000000000000000000000000000000000000000815250600b01905060405180910390206117dd8383612252565b6117e833838361152b565b15156117f357600080fd5b6117fd8484612282565b50505050565b600080606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156118cb57600080fd5b6102c65a03f115156118dc57600080fd5b5050506040518051905011905092915050565b6118f7612ead565b606980548060200260200160405190810160405280929190818152602001828054801561197957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161192f575b5050505050905090565b60405180807f49535355455f524f4c4500000000000000000000000000000000000000000000815250600a01905060405180910390206119c28261273c565b6119cd33838361152b565b15156119d857600080fd5b6119e2308461247f565b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a14612e99565b611a1c612ead565b611a263384611803565b1515611a3157600080fd5b6000604051805910611a405750595b9080825280601f01601f191660200182016040525091506001604051805910611a665750595b90808252806020026020018201604052509050606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816000815181101515611aab57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611af2838383612789565b50505050565b6000600190509392505050565b6000600354141515611b1657600080fd5b611b1e6129d1565b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1663f77c47916000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611ba157600080fd5b6102c65a03f11515611bb257600080fd5b5050506040518051905073ffffffffffffffffffffffffffffffffffffffff16141515611bde57600080fd5b83606460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082606460146101000a81548160ff02191690831515021790555060008214611c475781611c69565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b60658190555080606660006101000a81548160ff02191690831515021790555050505050565b60405180807f4d494e545f524f4c4500000000000000000000000000000000000000000000008152506009019050604051809103902081565b60655481565b60405180807f5245564f4b455f56455354494e47535f524f4c450000000000000000000000008152506014019050604051809103902081565b6000606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d6557600080fd5b60009050919050565b6000611d786129f2565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e08578082015181840152602081019050611ded565b50505050905090810190601f168015611e355780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1515611e5357600080fd5b6102c65a03f11515611e6457600080fd5b505050604051805190509050919050565b60008060405180807f5245564f4b455f56455354494e47535f524f4c4500000000000000000000000081525060140190506040518091039020611eb785612b50565b611ec233838361152b565b1515611ecd57600080fd5b606760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002085815481101515611f1957fe5b906000526020600020906002020193508360010160189054906101000a900460ff161515611f4657600080fd5b611fc784600001544267ffffffffffffffff168660010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff168760010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff168860010160109054906101000a900467ffffffffffffffff1667ffffffffffffffff166126a3565b9250606760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208581548110151561201557fe5b90600052602060002090600202016000808201600090556001820160006101000a81549067ffffffffffffffff02191690556001820160086101000a81549067ffffffffffffffff02191690556001820160106101000a81549067ffffffffffffffff02191690556001820160186101000a81549060ff02191690555050606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8730866000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b151561219457600080fd5b6102c65a03f115156121a557600080fd5b5050506040518051905015156121ba57600080fd5b8573ffffffffffffffffffffffffffffffffffffffff167fd84a4ab319cd8ac27a1baf06f5020baf3eb7692cca480d7a7fb68596befe5ca9866040518082815260200191505060405180910390a2505050505050565b606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606660009054906101000a900460ff1681565b60006001905090565b61225a612ec1565b61227a8373ffffffffffffffffffffffffffffffffffffffff1683612b7e565b905092915050565b61228c828261238e565b151561229757600080fd5b606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561236457600080fd5b6102c65a03f1151561237557600080fd5b50505060405180519050151561238a57600080fd5b5050565b600060655482606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561245957600080fd5b6102c65a03f1151561246a57600080fd5b50505060405180519050011115905092915050565b606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663827f32c083836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561254c57600080fd5b6102c65a03f1151561255d57600080fd5b505050604051805190505061257182612575565b5050565b606660009054906101000a900460ff1615806125da5750606860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125e4576126a0565b6001606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550606980548060010182816126509190612ed5565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b50565b60008082861015156126b857600091506126f5565b838610156126c8578691506126f5565b6126ed6126de886126d98989612720565b612bea565b6126e88588612720565b612c20565b905080870391505b5095945050505050565b600080828401905083811015151561271657600080fd5b8091505092915050565b600082821115151561273157600080fd5b818303905092915050565b612744612ec1565b60016040518059106127535750595b908082528060200260200182016040525090508181600081518110151561277657fe5b9060200190602002018181525050919050565b612791612e99565b600061279b612e99565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915060015490506127d289611d6e565b9450600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415151561281057600080fd5b61282588888b612c3b9092919063ffffffff16565b9350600073ffffffffffffffffffffffffffffffffffffffff1663279cea3590507c01000000000000000000000000000000000000000000000000000000000292508473ffffffffffffffffffffffffffffffffffffffff16837c01000000000000000000000000000000000000000000000000000000009004856040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828051906020019080838360005b838110156128f85780820151818401526020810190506128dd565b50505050905090810190601f1680156129255780820380516001836020036101000a031916815260200191505b509150506000604051808303818661646e5a03f492505050151561294857600080fd5b612950612d01565b95508173ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156129ad57600080fd5b8060001916600154600019161415156129c557600080fd5b50505050509392505050565b60006003541415156129e257600080fd5b6129ea612d37565b600381905550565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f65766d7265672e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902060405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1515612b2c57600080fd5b6102c65a03f11515612b3d57600080fd5b5050506040518051905090508091505090565b612b58612ec1565b612b778273ffffffffffffffffffffffffffffffffffffffff1661273c565b9050919050565b612b86612ec1565b6002604051805910612b955750595b9080825280602002602001820160405250905082816000815181101515612bb857fe5b906020019060200201818152505081816001815181101515612bd657fe5b906020019060200201818152505092915050565b60008082840290506000841480612c0b5750828482811515612c0857fe5b04145b1515612c1657600080fd5b8091505092915050565b6000808284811515612c2e57fe5b0490508091505092915050565b612c43612e99565b60008060008060609350612c5688612d3f565b60200284019250612c6687612d3f565b60200283019150612c7686612d7b565b6020028201905080604051805910612c8b5750595b9080825280601f01601f19166020018201604052509450836020860152826040860152816060860152612cc985612cc18a612d89565b868b51612d93565b612cde85612cd689612d89565b858a51612d93565b612cf685612ceb88612db2565b8460208a5102612d93565b505050509392505050565b612d09612e99565b3d8060008114612d2e576040519250602082018301604052602082036020843e612d2f565b5b505080905090565b600043905090565b60008060208351811515612d4f57fe5b0611612d5c576000612d5f565b60015b60ff1660208351811515612d6f57fe5b04600101019050919050565b600081516001019050919050565b6000819050919050565b60008260208601019050612dab818560208501612dbc565b5050505050565b6000819050919050565b6000806000808593508692508491505b602082101515612df15783518352602083019250602084019350602082039150612dcc565b6001826020036101000a0390508019845116818451168181178552505050505050505050565b60a06040519081016040528060008152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b815481835581811511612e9457600202816002028360005260206000209182019101612e939190612f01565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b815481835581811511612efc57818360005260206000209182019101612efb9190612f8d565b5b505050565b612f8a91905b80821115612f86576000808201600090556001820160006101000a81549067ffffffffffffffff02191690556001820160086101000a81549067ffffffffffffffff02191690556001820160106101000a81549067ffffffffffffffff02191690556001820160186101000a81549060ff021916905550600201612f07565b5090565b90565b612faf91905b80821115612fab576000816000905550600101612f93565b5090565b905600a165627a7a72305820eb6475e62f2d03e11df227914e70744d97b55ec3bc688d342fb6203d3e75a5f60029",
  "sourceMap": "431:12498:6:-;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "431:12498:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8274:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8401:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4720:753;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1475:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2840:206;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7598:494;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;68:84:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8539:665:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;113:20:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:60:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;269:107:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;631:24:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;158:103:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3826:230:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;506:494:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;857:62:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1011:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3505:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7020:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7149:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;3173:119:6;;;;;;;;;;;;;;;;;;;;;;;;;;86:21:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6609:321:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12759:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2217:446;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;727:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;661:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;925:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12090:306;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;824:169:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5697:766:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;601:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;698:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6936:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8274:121;8338:7;8364:8;:17;8373:7;8364:17;;;;;;;;;;;;;;;:24;;;;8357:31;;8274:121;;;:::o;8401:132::-;8467:7;8493:33;8513:7;8522:3;8493:19;:33::i;:::-;8486:40;;8401:132;;;:::o;4720:753::-;4958:7;5113:32;;:::i;:::-;5287:17;895:24;;;;;;;;;;;;;;;;;;;4915:23;4919:9;4930:7;4915:3;:23::i;:::-;444:37:20;455:10;467:5;474:6;444:10;:37::i;:::-;436:46;;;;;;;;1120:2:6;4989:27;5006:9;4989:16;:27::i;:::-;:54;4981:63;;;;;;;;5073:6;5063:16;;:6;:16;;;;:38;;;;;5093:8;5083:18;;:6;:18;;;;5063:38;5055:47;;;;;;;;5148:129;;;;;;;;;5174:7;5148:129;;;;5195:6;5148:129;;;;;;5215:6;5148:129;;;;;;5235:8;5148:129;;;;;;5257:10;5148:129;;;;;5113:164;;5348:1;5307:8;:19;5316:9;5307:19;;;;;;;;;;;;;;;:38;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;5332:12;5307:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:42;5287:62;;5360:27;5368:9;5379:7;5360;:27::i;:::-;5409:9;5398:41;;;5420:9;5431:7;5398:41;;;;;;;;;;;;;;;;;;;;;;;;5457:9;5450:16;;4720:753;;;;;;;;;;;;:::o;1475:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2840:206::-;763:22;;;;;;;;;;;;;;;;;;;2907:23;2911:9;2922:7;2907:3;:23::i;:::-;444:37:20;455:10;467:5;474:6;444:10;:37::i;:::-;436:46;;;;;;;;2959:44:6;2984:9;2995:7;2959:24;:44::i;:::-;2951:53;;;;;;;;3014:25;3020:9;3031:7;3014:5;:25::i;:::-;2840:206;;;;:::o;7598:494::-;7676:4;7692:25;7818:17;7737:4;7720:22;;:5;:22;;;:46;;;;7761:4;7746:20;;:3;:20;;;7720:46;7692:74;;7782:20;7781:21;7777:253;;;7838:38;7863:3;7868:7;7838:24;:38::i;:::-;7818:58;;7896:12;;;;;;;;;;;:28;;;;;7912:12;7896:28;:76;;;;;7964:7;7929:31;7949:5;7956:3;7929:19;:31::i;:::-;:42;;7896:76;7894:79;7890:130;;;8000:5;7993:12;;;;7890:130;7777:253;8040:23;8059:3;8040:18;:23::i;:::-;8081:4;8074:11;;7598:494;;;;;;;;:::o;68:84:31:-;120:32;;;;;;;;;;;;;;;;;;;68:84;:::o;8539:665:6:-;8621:7;8640:10;8688:28;8736:9;8787:22;8846:20;8653:25;8670:7;8653:16;:25::i;:::-;8640:38;;8719:1;8688:32;;8748:1;8736:13;;8731:399;8755:2;8751:1;:6;8731:399;;;8812:8;:17;8821:7;8812:17;;;;;;;;;;;;;;;8830:1;8812:20;;;;;;;;;;;;;;;;;;;;8787:45;;8869:172;8911:1;:8;;;8944:5;8869:172;;8968:1;:7;;;;;;;;;;;;8869:172;;8993:1;:7;;;;;;;;;;;;8869:172;;9018:1;:9;;;;;;;;;;;;8869:172;;:24;:172::i;:::-;8846:195;;9078:41;9103:15;9078:20;:24;;:41;;;;:::i;:::-;9055:64;;8763:8;8769:1;8763;:5;;:8;;;;:::i;:::-;8759:12;;8731:399;;;9147:50;9176:20;9147:5;;;;;;;;;;;:15;;;9163:7;9147:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:28;;:50;;;;:::i;:::-;9140:57;;8539:665;;;;;;;;;:::o;113:20:19:-;;;;:::o;791:60:6:-;828:23;;;;;;;;;;;;;;;;;;;791:60;:::o;269:107:25:-;324:7;350:19;;343:26;;269:107;:::o;631:24:6:-;;;;;;;;;;;;;:::o;158:103:31:-;217:16;;;;;;;;;;;;;;;;;;;120:32;;;;;;;;;;;;;;;;;;;207:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;158:103;:::o;3826:230:6:-;1047:22;;;;;;;;;;;;;;;;;;;3891:21;3895:7;3904;3891:3;:21::i;:::-;444:37:20;455:10;467:5;474:6;444:10;:37::i;:::-;436:46;;;;;;;;4012:5:6;;;;;;;;;;;:19;;;4032:7;4041;4012:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3826:230;;;;:::o;506:494:20:-;597:4;613:16;;:::i;:::-;722:18;705:1;689:6;:13;:17;685:212;;;759:2;743:6;:13;:18;722:39;;809:6;802:13;;862:10;857:3;850:6;784:103;932:1;921:6;;;;;;;;;;;913:20;;;:80;;;;937:6;;;;;;;;;;;:20;;;958:7;975:4;982:5;989:3;937:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;913:80:20;906:87;;506:494;;;;;;;:::o;857:62:6:-;895:24;;;;;;;;;;;;;;;;;;;857:62;:::o;1011:58::-;1047:22;;;;;;;;;;;;;;;;;;;1011:58;:::o;3505:149::-;895:24;;;;;;;;;;;;;;;;;;;3576:23;3580:9;3591:7;3576:3;:23::i;:::-;444:37:20;455:10;467:5;474:6;444:10;:37::i;:::-;436:46;;;;;;;;3620:27:6;3628:9;3639:7;3620;:27::i;:::-;3505:149;;;;:::o;7020:123::-;7085:4;7135:1;7108:5;;;;;;;;;;;:15;;;7124:7;7108:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:28;7101:35;;7020:123;;;;:::o;7149:73::-;7192:9;;:::i;:::-;7212:7;7205:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7149:73;:::o;3173:119::-;828:23;;;;;;;;;;;;;;;;;;;3223:12;3227:7;3223:3;:12::i;:::-;444:37:20;455:10;467:5;474:6;444:10;:37::i;:::-;436:46;;;;;;;;3256:29:6;3270:4;3277:7;3256:5;:29::i;:::-;3173:119;;;:::o;86:21:19:-;;;;;;;;;;;;;:::o;6609:321:6:-;6714:18;;:::i;:::-;6790:26;;:::i;:::-;6669:34;6680:10;6692;6669;:34::i;:::-;6661:43;;;;;;;;6745:1;6735:12;;;;;;;;;;;;;;;;;;;;;;;;;;;6714:33;;6833:1;6819:16;;;;;;;;;;;;;;;;;;;;;;;;6790:45;;6868:5;;;;;;;;;;;6845:9;6855:1;6845:12;;;;;;;;;;;;;;;;;:29;;;;;;;;;;;6884:39;6894:10;6906:5;6913:9;6884;:39::i;:::-;;6609:321;;;:::o;12759:168::-;12842:4;12916;12909:11;;12759:168;;;;;:::o;2217:446::-;163:1:25;140:19;;:24;132:33;;;;;;;;2405:13:6;:11;:13::i;:::-;2468:4;2437:36;;:6;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;2429:45;;;;;;;;2493:6;2485:5;;:14;;;;;;;;;;;;;;;;;;2524:13;2509:12;;:28;;;;;;;;;;;;;;;;;;2587:1;2566:17;:22;:56;;2605:17;2566:56;;;2599:2;2566:56;2547:16;:75;;;;2645:11;2632:10;;:24;;;;;;;;;;;;;;;;;;2217:446;;;;:::o;727:58::-;763:22;;;;;;;;;;;;;;;;;;;727:58;:::o;661:31::-;;;;:::o;925:80::-;972:33;;;;;;;;;;;;;;;;;;;925:80;:::o;12090:306::-;12152:4;12344:5;;;;;;;;;;;12322:28;;:10;:28;;;12314:37;;;;;;;;12384:5;12377:12;;12090:306;;;:::o;824:169:29:-;881:18;937:21;:19;:21::i;:::-;:39;;;977:7;937:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;911:75:29;;824:169;;;:::o;5697:766:6:-;5818:22;5913:14;972:33;;;;;;;;;;;;;;;;;;;5785:12;5789:7;5785:3;:12::i;:::-;444:37:20;455:10;467:5;474:6;444:10;:37::i;:::-;436:46;;;;;;;;5843:8:6;:17;5852:7;5843:17;;;;;;;;;;;;;;;5861:10;5843:29;;;;;;;;;;;;;;;;;;;;5818:54;;5890:1;:11;;;;;;;;;;;;5882:20;;;;;;;;5930:146;5968:1;:8;;;5997:3;5930:146;;6015:1;:7;;;;;;;;;;;;5930:146;;6036:1;:7;;;;;;;;;;;;5930:146;;6057:1;:9;;;;;;;;;;;;5930:146;;:24;:146::i;:::-;5913:163;;6182:8;:17;6191:7;6182:17;;;;;;;;;;;;;;;6200:10;6182:29;;;;;;;;;;;;;;;;;;;;;6175:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6357:5;;;;;;;;;;;:18;;;6376:7;6393:4;6400:9;6357:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6349:62;;;;;;;;6436:7;6422:34;;;6445:10;6422:34;;;;;;;;;;;;;;;;;;5697:766;;;;;;:::o;601:24::-;;;;;;;;;;;;;:::o;698:22::-;;;;;;;;;;;;;:::o;6936:78::-;6980:4;7003;6996:11;;6936:78;:::o;732:126:12:-;792:11;;:::i;:::-;822:29;834:2;826:11;;847:2;822:3;:29::i;:::-;815:36;;732:126;;;;:::o;11143:185:6:-;11223:44;11248:9;11259:7;11223:24;:44::i;:::-;11215:53;;;;;;;;11286:5;;;;;;;;;;;:14;;;11301:9;11312:7;11286:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11278:43;;;;;;;;11143:185;;:::o;8098:170::-;8185:4;8245:16;;8237:4;8208:5;;;;;;;;;;;:15;;;8224:9;8208:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;:53;;8201:60;;8098:170;;;;:::o;11334:203::-;11404:5;;;;;;;;;;;:20;;;11425:9;11436:7;11404:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11501:29;11520:9;11501:18;:29::i;:::-;11334:203;;:::o;11543:314::-;11712:10;;;;;;;;;;;11711:11;:35;;;;11726:8;:20;11735:10;11726:20;;;;;;;;;;;;;;;;;;;;;;;;;11711:35;11707:72;;;11762:7;;11707:72;11812:4;11789:8;:20;11798:10;11789:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;11826:7;:24;;;;;;;;;;;:::i;:::-;;;;;;;;;;11839:10;11826:24;;;;;;;;;;;;;;;;;;;;;;;11543:314;;:::o;10146:991::-;10320:7;10793:20;10418:7;10410:4;:15;;10406:54;;;10448:1;10441:8;;;;10406:54;10480:5;10473:4;:12;10469:56;;;10508:6;10501:13;;;;10469:56;10816:275;10842:151;10872:6;10896:83;10930:4;10956:5;10896:12;:83::i;:::-;10842:12;:151::i;:::-;11007:74;11037:7;11062:5;11007:12;:74::i;:::-;10816:12;:275::i;:::-;10793:298;;11118:12;11109:6;:21;11102:28;;10146:991;;;;;;;;;:::o;670:130:53:-;728:7;743:9;759:1;755;:5;743:17;;779:1;774;:6;;766:15;;;;;;;;794:1;787:8;;670:130;;;;;:::o;555:111::-;613:7;641:1;636;:6;;628:15;;;;;;;;660:1;656;:5;649:12;;555:111;;;;:::o;1358:117:12:-;1406:11;;:::i;:::-;1447:1;1433:16;;;;;;;;;;;;;;;;;;;;;;;;1429:20;;1466:2;1459:1;1461;1459:4;;;;;;;;;;;;;;;;;:9;;;;;1358:117;;;:::o;271:547:29:-;372:12;;:::i;:::-;483:20;582:25;;:::i;:::-;654:10;1806:17;1842:16;1826:6;;;;;;;;;;;1806:26;;1861:5;;1842:24;;506:20;518:7;506:11;:20::i;:::-;483:43;;568:1;544:26;;:12;:26;;;;536:35;;;;;;;;610:34;625:6;633:10;610:7;:14;;:34;;;;;:::i;:::-;582:62;;686:1;667:32;;;:41;;;;654:54;;727:12;:25;;753:3;727:44;;;758:12;727:44;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;719:53:29;;;;;;;;790:21;:19;:21::i;:::-;783:28;;1913:9;1903:19;;:6;;;;;;;;;;;:19;;;1895:28;;;;;;;;1950:8;1941:17;;;:5;;:17;;;;1933:26;;;;;;;;271:547;;;;;;;;;;:::o;487:96:25:-;163:1;140:19;;:24;132:33;;;;;;;;560:16;:14;:16::i;:::-;538:19;:38;;;;487:96::o;1021:200:29:-;1075:18;1105:20;1128:6;;;;;;;;;;;:13;;;217:16:31;;;;;;;;;;;;;;;;;;;120:32;;;;;;;;;;;;;;;;;;;207:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1128:37:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1105:60;;1201:12;1175:39;;1021:200;;:::o;354:101:12:-;402:11;;:::i;:::-;432:16;444:2;436:11;;432:3;:16::i;:::-;425:23;;354:101;;;:::o;1481:148::-;1541:11;;:::i;:::-;1582:1;1568:16;;;;;;;;;;;;;;;;;;;;;;;;1564:20;;1601:2;1594:1;1596;1594:4;;;;;;;;;;;;;;;;;:9;;;;;1620:2;1613:1;1615;1613:4;;;;;;;;;;;;;;;;;:9;;;;;1481:148;;;;:::o;138:144:53:-;196:7;211:9;227:1;223;:5;211:17;;247:1;242;:6;:20;;;;261:1;256;252;:5;;;;;;;;:10;242:20;234:29;;;;;;;;276:1;269:8;;138:144;;;;;:::o;286:265::-;344:7;433:9;449:1;445;:5;;;;;;;;433:17;;545:1;538:8;;286:265;;;;;:::o;728:830:32:-;822:14;;:::i;:::-;902:17;936;996;1056:14;922:4;902:24;;973:13;983:2;973:9;:13::i;:::-;968:2;:18;956:9;:30;936:50;;1033:13;1043:2;1033:9;:13::i;:::-;1028:2;:18;1016:9;:30;996:50;;1090:13;1100:2;1090:9;:13::i;:::-;1085:2;:18;1073:9;:30;1056:47;;1128:6;1118:17;;;;;;;;;;;;;;;;;;;;;;;;;;;1114:21;;1220:9;1213:4;1210:1;1206:3;1199:6;1264:9;1257:4;1254:1;1250:3;1243:6;1308:9;1301:4;1298:1;1294:3;1287:6;1381:41;1386:1;1389:10;1396:2;1389:6;:10::i;:::-;1401:9;1412:2;:9;1381:4;:41::i;:::-;1432;1437:1;1440:10;1447:2;1440:6;:10::i;:::-;1452:9;1463:2;:9;1432:4;:41::i;:::-;1483:46;1488:1;1491:10;1498:2;1491:6;:10::i;:::-;1503:9;1526:2;1514;:9;:14;1483:4;:46::i;:::-;728:830;;;;;;;;;:::o;1316:452:29:-;1370:9;;:::i;:::-;1426:14;1460:4;1482:1;1477:9;;;;1538:4;1532:5;1525:18;;1612:4;1606;1602:3;1597;1593;1587:4;1580:6;1692:4;1686;1682:3;1676:4;1671:3;1656:14;1453:279;;1477:9;1453:279;;1400:342;1758:3;1751:10;;1316:452;:::o;767:94:25:-;816:7;842:12;835:19;;767:94;:::o;1564:236:32:-;1623:7;1783:1;1778:2;1766;:9;:14;;;;;;;;:18;:26;;1791:1;1766:26;;;1787:1;1766:26;1742:51;;1759:2;1747;:9;:14;;;;;;;;1742:1;:20;:51;1735:58;;1564:236;;;:::o;1806:139::-;1862:7;1929:2;:9;1925:1;:13;1918:20;;1806:139;;;:::o;2182:127::-;2238:11;2291:2;2284:9;;2270:33;;;:::o;1951:225::-;2044:9;2113:4;2106;2102:2;2098:3;2094;2086:32;;2137;2144:4;2150;2166:2;2156:7;:12;2137:6;:32::i;:::-;1951:225;;;;;:::o;2315:131::-;2375:11;2428:2;2421:9;;2407:33;;;:::o;3940:638::-;4012:11;4040:12;4070:11;4356:9;4026:4;4012:18;;4055:5;4040:20;;4084:4;4070:18;;4149:165;4163:2;4156:3;:9;;4149:165;;;4238:3;4232:5;4226:4;4219:6;4278:2;4270:10;;;;4301:2;4294:9;;;;4174:2;4167:9;;;;4149:165;;;4388:1;4381:3;4376:2;:8;4368:3;:17;:21;4356:33;;4457:4;4453:3;4447;4441:5;4437:3;4509:4;4502;4496:5;4492:3;4553:7;4543:8;4540:2;4534:4;4527:6;4408:164;;;;;;;;;:::o;431:12498:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity 0.4.18;\n\nimport \"@aragon/os/contracts/apps/AragonApp.sol\";\n\nimport \"@aragon/os/contracts/lib/minime/ITokenController.sol\";\nimport \"@aragon/os/contracts/lib/minime/MiniMeToken.sol\";\nimport \"@aragon/os/contracts/common/IForwarder.sol\";\n\nimport \"@aragon/os/contracts/lib/zeppelin/token/ERC20.sol\";\nimport \"@aragon/os/contracts/lib/zeppelin/math/SafeMath.sol\";\n\nimport \"@aragon/os/contracts/lib/misc/Migrations.sol\";\n\n\ncontract TokenManager is ITokenController, AragonApp { // ,IForwarder makes coverage crash (removes pure and interface doesnt match)\n    using SafeMath for uint256;\n\n    MiniMeToken public token;\n    bool public transferable;\n    uint256 public maxAccountTokens;\n    bool public logHolders;\n\n    bytes32 constant public MINT_ROLE = keccak256(\"MINT_ROLE\");\n    bytes32 constant public ISSUE_ROLE = keccak256(\"ISSUE_ROLE\");\n    bytes32 constant public ASSIGN_ROLE = keccak256(\"ASSIGN_ROLE\");\n    bytes32 constant public REVOKE_VESTINGS_ROLE = keccak256(\"REVOKE_VESTINGS_ROLE\");\n    bytes32 constant public BURN_ROLE = keccak256(\"BURN_ROLE\");\n\n    uint256 constant MAX_VESTINGS_PER_ADDRESS = 50;\n    struct TokenVesting {\n        uint256 amount;\n        uint64 start;\n        uint64 cliff;\n        uint64 vesting;\n        bool revokable;\n    }\n\n    mapping (address => TokenVesting[]) vestings;\n    mapping (address => bool) everHeld;\n\n    // Returns all holders the token had (since managing it).\n    // Some of them can have a balance of 0.\n    address[] public holders;\n\n\n    // Other token specific events can be watched on the token address directly (avoid duplication)\n    event NewVesting(address indexed receiver, uint256 vestingId, uint256 amount);\n    event RevokeVesting(address indexed receiver, uint256 vestingId);\n\n    /**\n    * @notice Initializes TokenManager\n    * @param _token MiniMeToken address for the managed token (token manager must be the token controller)\n    * @param _transferable whether the token can be transferred by holders\n    * @param _maxAccountTokens maximum amount of tokens an account can have (0 for infinite tokens)\n    * @param _logHolders Whether the token manager will store all token holders (makes token transfers more expensive!)\n    */\n    function initialize(\n        MiniMeToken _token,\n        bool _transferable,\n        uint256 _maxAccountTokens,\n        bool _logHolders\n        )\n        onlyInit external\n    {\n\n        initialized();\n\n        require(_token.controller() == address(this));\n\n        token = _token;\n        transferable = _transferable;\n        maxAccountTokens = _maxAccountTokens == 0 ? uint256(-1) : _maxAccountTokens;\n        logHolders = _logHolders;\n    }\n\n    /**\n    * @notice Mint `_amount` of tokens for `_receiver`\n    * @param _receiver The address receiving the tokens\n    * @param _amount Number of tokens minted\n    */\n    function mint(address _receiver, uint256 _amount) authP(MINT_ROLE, arr(_receiver, _amount)) external {\n        require(isBalanceIncreaseAllowed(_receiver, _amount));\n        _mint(_receiver, _amount);\n    }\n\n    /**\n    * @notice Mint `_amount` of tokens for the token manager\n    * @param _amount Number of tokens minted\n    */\n    function issue(uint256 _amount) authP(ISSUE_ROLE, arr(_amount)) external {\n        _mint(address(this), _amount);\n    }\n\n    /**\n    * @notice Assign `_amount` of tokens for `_receiver` from Token Manager's holdings\n    * @param _receiver The address receiving the tokens\n    * @param _amount Number of tokens transfered\n    */\n    function assign(address _receiver, uint256 _amount) authP(ASSIGN_ROLE, arr(_receiver, _amount)) external {\n        _assign(_receiver, _amount);\n    }\n\n    /**\n    * @notice Burn `_amount` tokens from `_holder`\n    * @param _holder Holder being removed tokens\n    * @param _amount Number of tokens being burned\n    */\n    function burn(address _holder, uint256 _amount) authP(BURN_ROLE, arr(_holder, _amount)) external {\n        // minime.destroyTokens() never returns false, only reverts on failure\n        token.destroyTokens(_holder, _amount);\n    }\n\n    /**\n    * @notice Assign `_amount` of tokens for `_receiver` from Token Manager's holdings with a `_revokable` revokable vesting starting `_start`, cliff on `_cliff` (first portion of tokens transferable) and vesting on `_vesting` (all tokens transferable)\n    * @param _receiver The address receiving the tokens\n    * @param _amount Number of tokens transfered\n    * @param _start Date the vesting calculations start\n    * @param _cliff Date when the initial proportional amount of tokens are transferable\n    * @param _vesting Date when all tokens are transferable\n    * @param _revokable Whether the vesting can be revoked by the token manager\n    */\n    function assignVested(\n        address _receiver,\n        uint256 _amount,\n        uint64 _start,\n        uint64 _cliff,\n        uint64 _vesting,\n        bool _revokable\n    ) authP(ASSIGN_ROLE, arr(_receiver, _amount)) external returns (uint256)\n    {\n        require(tokenGrantsCount(_receiver) < MAX_VESTINGS_PER_ADDRESS);\n\n        require(_start <= _cliff && _cliff <= _vesting);\n\n        TokenVesting memory tokenVesting = TokenVesting(\n            _amount,\n            _start,\n            _cliff,\n            _vesting,\n            _revokable\n        );\n        uint256 vestingId = vestings[_receiver].push(tokenVesting) - 1;\n\n        _assign(_receiver, _amount);\n\n        NewVesting(_receiver, vestingId, _amount);\n\n        return vestingId;\n    }\n\n    /**\n    * @notice Revoke vesting `_vestingId` from `_holder` returning unvested tokens to Token Manager\n    * @param _holder Address getting vesting revoked\n    * @param _vestingId Numeric id of the vesting\n    */\n    function revokeVesting(address _holder, uint256 _vestingId) authP(REVOKE_VESTINGS_ROLE, arr(_holder)) external {\n        TokenVesting storage v = vestings[_holder][_vestingId];\n        require(v.revokable);\n\n        uint nonVested = calculateNonVestedTokens(\n            v.amount,\n            uint64(now),\n            v.start,\n            v.cliff,\n            v.vesting\n        );\n\n        // To make vestingIds immutable over time, we just zero out the revoked vesting\n        delete vestings[_holder][_vestingId];\n\n        // transferFrom always works as controller\n        // onTransfer hook always allows if transfering to token controller\n        require(token.transferFrom(_holder, address(this), nonVested));\n\n        RevokeVesting(_holder, _vestingId);\n    }\n\n    /**\n    * @dev IForwarder interface conformance. Forwards any token holder action.\n    * @param _evmScript script being executed\n    */\n    function forward(bytes _evmScript) public {\n        require(canForward(msg.sender, _evmScript));\n        bytes memory input = new bytes(0); // TODO: Consider input for this\n        address[] memory blacklist = new address[](1);\n        blacklist[0] = address(token);\n        runScript(_evmScript, input, blacklist);\n    }\n\n    function isForwarder() public pure returns (bool) {\n        return true;\n    }\n\n    function canForward(address _sender, bytes) public view returns (bool) {\n        return token.balanceOf(_sender) > 0;\n    }\n\n    function allHolders() public view returns (address[]) { return holders; }\n\n    /*\n    * @dev Notifies the controller about a token transfer allowing the\n    *      controller to decide whether to allow it or react if desired\n    * @param _from The origin of the transfer\n    * @param _to The destination of the transfer\n    * @param _amount The amount of the transfer\n    * @return False if the controller does not authorize the transfer\n    */\n    function onTransfer(address _from, address _to, uint _amount) public returns (bool) {\n        bool includesTokenManager = _from == address(this) || _to == address(this);\n\n        if (!includesTokenManager) {\n            bool toCanReceive = isBalanceIncreaseAllowed(_to, _amount);\n            if (!(transferable && toCanReceive && (transferableBalance(_from, now) >= _amount))) {\n                return false;\n            }\n        }\n\n        _logHolderIfNeeded(_to);\n\n        return true;\n    }\n\n    function isBalanceIncreaseAllowed(address _receiver, uint _inc) internal view returns (bool) {\n        return token.balanceOf(_receiver) + _inc <= maxAccountTokens;\n    }\n\n    function tokenGrantsCount(address _holder) public view returns (uint256) {\n        return vestings[_holder].length;\n    }\n\n    function spendableBalanceOf(address _holder) public view returns (uint256) {\n        return transferableBalance(_holder, now);\n    }\n\n    function transferableBalance(address _holder, uint256 _time) public view returns (uint256) {\n        uint256 vs = tokenGrantsCount(_holder);\n        uint256 totalNonTransferable = 0;\n\n        for (uint256 i = 0; i < vs; i = i.add(1)) {\n            TokenVesting storage v = vestings[_holder][i];\n            uint nonTransferable = calculateNonVestedTokens(\n                v.amount,\n                uint64(_time),\n                v.start,\n                v.cliff,\n                v.vesting\n            );\n            totalNonTransferable = totalNonTransferable.add(nonTransferable);\n        }\n\n        return token.balanceOf(_holder).sub(totalNonTransferable);\n    }\n\n    /**\n    * @dev Calculate amount of non-vested tokens at a specifc time.\n    * @param tokens uint256 The amount of tokens grantted.\n    * @param time uint64 The time to be checked\n    * @param start uint64 A time representing the begining of the grant\n    * @param cliff uint64 The cliff period.\n    * @param vesting uint64 The vesting period.\n    * @return An uint256 representing the amount of non-vested tokensof a specif grant.\n    *  transferableTokens\n    *   |                         _/--------   vestedTokens rect\n    *   |                       _/\n    *   |                     _/\n    *   |                   _/\n    *   |                 _/\n    *   |                /\n    *   |              .|\n    *   |            .  |\n    *   |          .    |\n    *   |        .      |\n    *   |      .        |\n    *   |    .          |\n    *   +===+===========+---------+----------> time\n    *      Start       Clift    Vesting\n    */\n    function calculateNonVestedTokens(\n        uint256 tokens,\n        uint256 time,\n        uint256 start,\n        uint256 cliff,\n        uint256 vesting) private pure returns (uint256)\n    {\n        // Shortcuts for before cliff and after vesting cases.\n        if (time >= vesting) {\n            return 0;\n        }\n        if (time < cliff) {\n            return tokens;\n        }\n\n        // Interpolate all vested tokens.\n        // As before cliff the shortcut returns 0, we can use just calculate a value\n        // in the vesting rect (as shown in above's figure)\n\n        // vestedTokens = tokens * (time - start) / (vesting - start)\n        uint256 vestedTokens = SafeMath.div(\n            SafeMath.mul(\n                tokens,\n                SafeMath.sub(\n                    time,\n                    start\n                )\n            ),\n            SafeMath.sub(\n                vesting,\n                start\n            )\n        );\n\n        return tokens - vestedTokens;\n    }\n\n    function _assign(address _receiver, uint256 _amount) internal {\n        require(isBalanceIncreaseAllowed(_receiver, _amount));\n        require(token.transfer(_receiver, _amount));\n    }\n\n    function _mint(address _receiver, uint256 _amount) internal {\n        token.generateTokens(_receiver, _amount); // minime.generateTokens() never returns false\n        _logHolderIfNeeded(_receiver);\n    }\n\n    function _logHolderIfNeeded(address _newHolder) internal {\n        // costs 3 sstores (2 full (20k gas) and 1 increase (5k gas)), but makes frontend easier\n        if (!logHolders || everHeld[_newHolder]) {\n            return;\n        }\n\n        everHeld[_newHolder] = true;\n        holders.push(_newHolder);\n    }\n\n    /**\n    * @notice Called when `_owner` sends ether to the MiniMe Token contract\n    * @param _owner The address that sent the ether to create tokens\n    * @return True if the ether is accepted, false for it to throw\n    */\n    function proxyPayment(address _owner) payable public returns (bool) {\n        // Even though it is tested, solidity-coverage doesnt get it because\n        // MiniMeToken is not instrumented and entire tx is reverted\n        require(msg.sender == address(token));\n        _owner;\n        return false;\n    }\n\n    /**\n    * @dev Notifies the controller about an approval allowing the\n    * controller to react if desired\n    * @param _owner The address that calls `approve()`\n    * @param _spender The spender in the `approve()` call\n    * @param _amount The amount in the `approve()` call\n    * @return False if the controller does not authorize the approval\n    */\n    function onApprove(address _owner, address _spender, uint _amount) public returns (bool) {\n        _owner;\n        _spender;\n        _amount;\n        return true;\n    }\n}\n",
  "sourcePath": "@aragon/apps-token-manager/contracts/TokenManager.sol",
  "ast": {
    "attributes": {
      "absolutePath": "@aragon/apps-token-manager/contracts/TokenManager.sol",
      "exportedSymbols": {
        "TokenManager": [
          3350
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.4",
            ".18"
          ]
        },
        "id": 2557,
        "name": "PragmaDirective",
        "src": "0:23:6"
      },
      {
        "attributes": {
          "SourceUnit": 6969,
          "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
          "file": "@aragon/os/contracts/apps/AragonApp.sol",
          "scope": 3351,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2558,
        "name": "ImportDirective",
        "src": "25:49:6"
      },
      {
        "attributes": {
          "SourceUnit": 10801,
          "absolutePath": "@aragon/os/contracts/lib/minime/ITokenController.sol",
          "file": "@aragon/os/contracts/lib/minime/ITokenController.sol",
          "scope": 3351,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2559,
        "name": "ImportDirective",
        "src": "76:62:6"
      },
      {
        "attributes": {
          "SourceUnit": 11915,
          "absolutePath": "@aragon/os/contracts/lib/minime/MiniMeToken.sol",
          "file": "@aragon/os/contracts/lib/minime/MiniMeToken.sol",
          "scope": 3351,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2560,
        "name": "ImportDirective",
        "src": "139:57:6"
      },
      {
        "attributes": {
          "SourceUnit": 7218,
          "absolutePath": "@aragon/os/contracts/common/IForwarder.sol",
          "file": "@aragon/os/contracts/common/IForwarder.sol",
          "scope": 3351,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2561,
        "name": "ImportDirective",
        "src": "197:52:6"
      },
      {
        "attributes": {
          "SourceUnit": 12301,
          "absolutePath": "@aragon/os/contracts/lib/zeppelin/token/ERC20.sol",
          "file": "@aragon/os/contracts/lib/zeppelin/token/ERC20.sol",
          "scope": 3351,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2562,
        "name": "ImportDirective",
        "src": "251:59:6"
      },
      {
        "attributes": {
          "SourceUnit": 12067,
          "absolutePath": "@aragon/os/contracts/lib/zeppelin/math/SafeMath.sol",
          "file": "@aragon/os/contracts/lib/zeppelin/math/SafeMath.sol",
          "scope": 3351,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2563,
        "name": "ImportDirective",
        "src": "311:61:6"
      },
      {
        "attributes": {
          "SourceUnit": 11972,
          "absolutePath": "@aragon/os/contracts/lib/misc/Migrations.sol",
          "file": "@aragon/os/contracts/lib/misc/Migrations.sol",
          "scope": 3351,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2564,
        "name": "ImportDirective",
        "src": "374:54:6"
      },
      {
        "attributes": {
          "contractDependencies": [
            5905,
            6870,
            6968,
            7261,
            7846,
            7877,
            10800
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            3350,
            6968,
            7846,
            7877,
            5905,
            7261,
            6870,
            10800
          ],
          "name": "TokenManager",
          "scope": 3351
        },
        "children": [
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "ITokenController",
                  "referencedDeclaration": 10800,
                  "type": "contract ITokenController"
                },
                "id": 2565,
                "name": "UserDefinedTypeName",
                "src": "456:16:6"
              }
            ],
            "id": 2566,
            "name": "InheritanceSpecifier",
            "src": "456:16:6"
          },
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "AragonApp",
                  "referencedDeclaration": 6968,
                  "type": "contract AragonApp"
                },
                "id": 2567,
                "name": "UserDefinedTypeName",
                "src": "474:9:6"
              }
            ],
            "id": 2568,
            "name": "InheritanceSpecifier",
            "src": "474:9:6"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "SafeMath",
                  "referencedDeclaration": 12066,
                  "type": "library SafeMath"
                },
                "id": 2569,
                "name": "UserDefinedTypeName",
                "src": "574:8:6"
              },
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 2570,
                "name": "ElementaryTypeName",
                "src": "587:7:6"
              }
            ],
            "id": 2571,
            "name": "UsingForDirective",
            "src": "568:27:6"
          },
          {
            "attributes": {
              "constant": false,
              "name": "token",
              "scope": 3350,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract MiniMeToken",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "MiniMeToken",
                  "referencedDeclaration": 11873,
                  "type": "contract MiniMeToken"
                },
                "id": 2572,
                "name": "UserDefinedTypeName",
                "src": "601:11:6"
              }
            ],
            "id": 2573,
            "name": "VariableDeclaration",
            "src": "601:24:6"
          },
          {
            "attributes": {
              "constant": false,
              "name": "transferable",
              "scope": 3350,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bool",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "bool",
                  "type": "bool"
                },
                "id": 2574,
                "name": "ElementaryTypeName",
                "src": "631:4:6"
              }
            ],
            "id": 2575,
            "name": "VariableDeclaration",
            "src": "631:24:6"
          },
          {
            "attributes": {
              "constant": false,
              "name": "maxAccountTokens",
              "scope": 3350,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 2576,
                "name": "ElementaryTypeName",
                "src": "661:7:6"
              }
            ],
            "id": 2577,
            "name": "VariableDeclaration",
            "src": "661:31:6"
          },
          {
            "attributes": {
              "constant": false,
              "name": "logHolders",
              "scope": 3350,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bool",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "bool",
                  "type": "bool"
                },
                "id": 2578,
                "name": "ElementaryTypeName",
                "src": "698:4:6"
              }
            ],
            "id": 2579,
            "name": "VariableDeclaration",
            "src": "698:22:6"
          },
          {
            "attributes": {
              "constant": true,
              "name": "MINT_ROLE",
              "scope": 3350,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bytes32",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "bytes32",
                  "type": "bytes32"
                },
                "id": 2580,
                "name": "ElementaryTypeName",
                "src": "727:7:6"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "isStructConstructorCall": false,
                  "lValueRequested": false,
                  "names": [
                    null
                  ],
                  "type": "bytes32",
                  "type_conversion": false
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_154c00819833dac601ee5ddded6fda79d9d8b506b911b3dbd54cdb95fe6c3686",
                          "typeString": "literal_string \"MINT_ROLE\""
                        }
                      ],
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 12584,
                      "type": "function () pure returns (bytes32)",
                      "value": "keccak256"
                    },
                    "id": 2581,
                    "name": "Identifier",
                    "src": "763:9:6"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "4d494e545f524f4c45",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "string",
                      "type": "literal_string \"MINT_ROLE\"",
                      "value": "MINT_ROLE"
                    },
                    "id": 2582,
                    "name": "Literal",
                    "src": "773:11:6"
                  }
                ],
                "id": 2583,
                "name": "FunctionCall",
                "src": "763:22:6"
              }
            ],
            "id": 2584,
            "name": "VariableDeclaration",
            "src": "727:58:6"
          },
          {
            "attributes": {
              "constant": true,
              "name": "ISSUE_ROLE",
              "scope": 3350,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bytes32",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "bytes32",
                  "type": "bytes32"
                },
                "id": 2585,
                "name": "ElementaryTypeName",
                "src": "791:7:6"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "isStructConstructorCall": false,
                  "lValueRequested": false,
                  "names": [
                    null
                  ],
                  "type": "bytes32",
                  "type_conversion": false
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_2406f1e99f79cea012fb88c5c36566feaeefee0f4b98d3a376b49310222b53c4",
                          "typeString": "literal_string \"ISSUE_ROLE\""
                        }
                      ],
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 12584,
                      "type": "function () pure returns (bytes32)",
                      "value": "keccak256"
                    },
                    "id": 2586,
                    "name": "Identifier",
                    "src": "828:9:6"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "49535355455f524f4c45",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "string",
                      "type": "literal_string \"ISSUE_ROLE\"",
                      "value": "ISSUE_ROLE"
                    },
                    "id": 2587,
                    "name": "Literal",
                    "src": "838:12:6"
                  }
                ],
                "id": 2588,
                "name": "FunctionCall",
                "src": "828:23:6"
              }
            ],
            "id": 2589,
            "name": "VariableDeclaration",
            "src": "791:60:6"
          },
          {
            "attributes": {
              "constant": true,
              "name": "ASSIGN_ROLE",
              "scope": 3350,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bytes32",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "bytes32",
                  "type": "bytes32"
                },
                "id": 2590,
                "name": "ElementaryTypeName",
                "src": "857:7:6"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "isStructConstructorCall": false,
                  "lValueRequested": false,
                  "names": [
                    null
                  ],
                  "type": "bytes32",
                  "type_conversion": false
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_f5a08927c847d7a29dc35e105208dbde5ce951392105d712761cc5d17440e2ff",
                          "typeString": "literal_string \"ASSIGN_ROLE\""
                        }
                      ],
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 12584,
                      "type": "function () pure returns (bytes32)",
                      "value": "keccak256"
                    },
                    "id": 2591,
                    "name": "Identifier",
                    "src": "895:9:6"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "41535349474e5f524f4c45",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "string",
                      "type": "literal_string \"ASSIGN_ROLE\"",
                      "value": "ASSIGN_ROLE"
                    },
                    "id": 2592,
                    "name": "Literal",
                    "src": "905:13:6"
                  }
                ],
                "id": 2593,
                "name": "FunctionCall",
                "src": "895:24:6"
              }
            ],
            "id": 2594,
            "name": "VariableDeclaration",
            "src": "857:62:6"
          },
          {
            "attributes": {
              "constant": true,
              "name": "REVOKE_VESTINGS_ROLE",
              "scope": 3350,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bytes32",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "bytes32",
                  "type": "bytes32"
                },
                "id": 2595,
                "name": "ElementaryTypeName",
                "src": "925:7:6"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "isStructConstructorCall": false,
                  "lValueRequested": false,
                  "names": [
                    null
                  ],
                  "type": "bytes32",
                  "type_conversion": false
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_95ffc68daedf1eb334cfcd22ee24a5eeb5a8e58aa40679f2ad247a84140f8d6e",
                          "typeString": "literal_string \"REVOKE_VESTINGS_ROLE\""
                        }
                      ],
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 12584,
                      "type": "function () pure returns (bytes32)",
                      "value": "keccak256"
                    },
                    "id": 2596,
                    "name": "Identifier",
                    "src": "972:9:6"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "5245564f4b455f56455354494e47535f524f4c45",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "string",
                      "type": "literal_string \"REVOKE_VESTINGS_ROLE\"",
                      "value": "REVOKE_VESTINGS_ROLE"
                    },
                    "id": 2597,
                    "name": "Literal",
                    "src": "982:22:6"
                  }
                ],
                "id": 2598,
                "name": "FunctionCall",
                "src": "972:33:6"
              }
            ],
            "id": 2599,
            "name": "VariableDeclaration",
            "src": "925:80:6"
          },
          {
            "attributes": {
              "constant": true,
              "name": "BURN_ROLE",
              "scope": 3350,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bytes32",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "bytes32",
                  "type": "bytes32"
                },
                "id": 2600,
                "name": "ElementaryTypeName",
                "src": "1011:7:6"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "isStructConstructorCall": false,
                  "lValueRequested": false,
                  "names": [
                    null
                  ],
                  "type": "bytes32",
                  "type_conversion": false
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_e97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa22",
                          "typeString": "literal_string \"BURN_ROLE\""
                        }
                      ],
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 12584,
                      "type": "function () pure returns (bytes32)",
                      "value": "keccak256"
                    },
                    "id": 2601,
                    "name": "Identifier",
                    "src": "1047:9:6"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "4255524e5f524f4c45",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "string",
                      "type": "literal_string \"BURN_ROLE\"",
                      "value": "BURN_ROLE"
                    },
                    "id": 2602,
                    "name": "Literal",
                    "src": "1057:11:6"
                  }
                ],
                "id": 2603,
                "name": "FunctionCall",
                "src": "1047:22:6"
              }
            ],
            "id": 2604,
            "name": "VariableDeclaration",
            "src": "1011:58:6"
          },
          {
            "attributes": {
              "constant": true,
              "name": "MAX_VESTINGS_PER_ADDRESS",
              "scope": 3350,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 2605,
                "name": "ElementaryTypeName",
                "src": "1076:7:6"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "hexvalue": "3530",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "subdenomination": null,
                  "token": "number",
                  "type": "int_const 50",
                  "value": "50"
                },
                "id": 2606,
                "name": "Literal",
                "src": "1120:2:6"
              }
            ],
            "id": 2607,
            "name": "VariableDeclaration",
            "src": "1076:46:6"
          },
          {
            "attributes": {
              "canonicalName": "TokenManager.TokenVesting",
              "name": "TokenVesting",
              "scope": 3350,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "name": "amount",
                  "scope": 2618,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 2608,
                    "name": "ElementaryTypeName",
                    "src": "1158:7:6"
                  }
                ],
                "id": 2609,
                "name": "VariableDeclaration",
                "src": "1158:14:6"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "start",
                  "scope": 2618,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint64",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint64",
                      "type": "uint64"
                    },
                    "id": 2610,
                    "name": "ElementaryTypeName",
                    "src": "1182:6:6"
                  }
                ],
                "id": 2611,
                "name": "VariableDeclaration",
                "src": "1182:12:6"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "cliff",
                  "scope": 2618,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint64",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint64",
                      "type": "uint64"
                    },
                    "id": 2612,
                    "name": "ElementaryTypeName",
                    "src": "1204:6:6"
                  }
                ],
                "id": 2613,
                "name": "VariableDeclaration",
                "src": "1204:12:6"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "vesting",
                  "scope": 2618,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint64",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint64",
                      "type": "uint64"
                    },
                    "id": 2614,
                    "name": "ElementaryTypeName",
                    "src": "1226:6:6"
                  }
                ],
                "id": 2615,
                "name": "VariableDeclaration",
                "src": "1226:14:6"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "revokable",
                  "scope": 2618,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bool",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bool",
                      "type": "bool"
                    },
                    "id": 2616,
                    "name": "ElementaryTypeName",
                    "src": "1250:4:6"
                  }
                ],
                "id": 2617,
                "name": "VariableDeclaration",
                "src": "1250:14:6"
              }
            ],
            "id": 2618,
            "name": "StructDefinition",
            "src": "1128:143:6"
          },
          {
            "attributes": {
              "constant": false,
              "name": "vestings",
              "scope": 3350,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(address => struct TokenManager.TokenVesting storage ref[] storage ref)",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(address => struct TokenManager.TokenVesting storage ref[] storage ref)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "type": "address"
                    },
                    "id": 2619,
                    "name": "ElementaryTypeName",
                    "src": "1286:7:6"
                  },
                  {
                    "attributes": {
                      "length": null,
                      "type": "struct TokenManager.TokenVesting storage ref[] storage pointer"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "TokenVesting",
                          "referencedDeclaration": 2618,
                          "type": "struct TokenManager.TokenVesting storage pointer"
                        },
                        "id": 2620,
                        "name": "UserDefinedTypeName",
                        "src": "1297:12:6"
                      }
                    ],
                    "id": 2621,
                    "name": "ArrayTypeName",
                    "src": "1297:14:6"
                  }
                ],
                "id": 2622,
                "name": "Mapping",
                "src": "1277:35:6"
              }
            ],
            "id": 2623,
            "name": "VariableDeclaration",
            "src": "1277:44:6"
          },
          {
            "attributes": {
              "constant": false,
              "name": "everHeld",
              "scope": 3350,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(address => bool)",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(address => bool)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "type": "address"
                    },
                    "id": 2624,
                    "name": "ElementaryTypeName",
                    "src": "1336:7:6"
                  },
                  {
                    "attributes": {
                      "name": "bool",
                      "type": "bool"
                    },
                    "id": 2625,
                    "name": "ElementaryTypeName",
                    "src": "1347:4:6"
                  }
                ],
                "id": 2626,
                "name": "Mapping",
                "src": "1327:25:6"
              }
            ],
            "id": 2627,
            "name": "VariableDeclaration",
            "src": "1327:34:6"
          },
          {
            "attributes": {
              "constant": false,
              "name": "holders",
              "scope": 3350,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "address[] storage ref",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "length": null,
                  "type": "address[] storage pointer"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "type": "address"
                    },
                    "id": 2628,
                    "name": "ElementaryTypeName",
                    "src": "1475:7:6"
                  }
                ],
                "id": 2629,
                "name": "ArrayTypeName",
                "src": "1475:9:6"
              }
            ],
            "id": 2630,
            "name": "VariableDeclaration",
            "src": "1475:24:6"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "NewVesting"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "receiver",
                      "scope": 2638,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 2631,
                        "name": "ElementaryTypeName",
                        "src": "1624:7:6"
                      }
                    ],
                    "id": 2632,
                    "name": "VariableDeclaration",
                    "src": "1624:24:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "vestingId",
                      "scope": 2638,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2633,
                        "name": "ElementaryTypeName",
                        "src": "1650:7:6"
                      }
                    ],
                    "id": 2634,
                    "name": "VariableDeclaration",
                    "src": "1650:17:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "amount",
                      "scope": 2638,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2635,
                        "name": "ElementaryTypeName",
                        "src": "1669:7:6"
                      }
                    ],
                    "id": 2636,
                    "name": "VariableDeclaration",
                    "src": "1669:14:6"
                  }
                ],
                "id": 2637,
                "name": "ParameterList",
                "src": "1623:61:6"
              }
            ],
            "id": 2638,
            "name": "EventDefinition",
            "src": "1607:78:6"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "RevokeVesting"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "receiver",
                      "scope": 2644,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 2639,
                        "name": "ElementaryTypeName",
                        "src": "1710:7:6"
                      }
                    ],
                    "id": 2640,
                    "name": "VariableDeclaration",
                    "src": "1710:24:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "vestingId",
                      "scope": 2644,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2641,
                        "name": "ElementaryTypeName",
                        "src": "1736:7:6"
                      }
                    ],
                    "id": 2642,
                    "name": "VariableDeclaration",
                    "src": "1736:17:6"
                  }
                ],
                "id": 2643,
                "name": "ParameterList",
                "src": "1709:45:6"
              }
            ],
            "id": 2644,
            "name": "EventDefinition",
            "src": "1690:65:6"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "initialize",
              "payable": false,
              "scope": 3350,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_token",
                      "scope": 2695,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract MiniMeToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "MiniMeToken",
                          "referencedDeclaration": 11873,
                          "type": "contract MiniMeToken"
                        },
                        "id": 2645,
                        "name": "UserDefinedTypeName",
                        "src": "2246:11:6"
                      }
                    ],
                    "id": 2646,
                    "name": "VariableDeclaration",
                    "src": "2246:18:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_transferable",
                      "scope": 2695,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 2647,
                        "name": "ElementaryTypeName",
                        "src": "2274:4:6"
                      }
                    ],
                    "id": 2648,
                    "name": "VariableDeclaration",
                    "src": "2274:18:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_maxAccountTokens",
                      "scope": 2695,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2649,
                        "name": "ElementaryTypeName",
                        "src": "2302:7:6"
                      }
                    ],
                    "id": 2650,
                    "name": "VariableDeclaration",
                    "src": "2302:25:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_logHolders",
                      "scope": 2695,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 2651,
                        "name": "ElementaryTypeName",
                        "src": "2337:4:6"
                      }
                    ],
                    "id": 2652,
                    "name": "VariableDeclaration",
                    "src": "2337:16:6"
                  }
                ],
                "id": 2653,
                "name": "ParameterList",
                "src": "2236:127:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2656,
                "name": "ParameterList",
                "src": "2394:0:6"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 7232,
                      "type": "modifier ()",
                      "value": "onlyInit"
                    },
                    "id": 2654,
                    "name": "Identifier",
                    "src": "2372:8:6"
                  }
                ],
                "id": 2655,
                "name": "ModifierInvocation",
                "src": "2372:8:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7251,
                              "type": "function ()",
                              "value": "initialized"
                            },
                            "id": 2657,
                            "name": "Identifier",
                            "src": "2405:11:6"
                          }
                        ],
                        "id": 2658,
                        "name": "FunctionCall",
                        "src": "2405:13:6"
                      }
                    ],
                    "id": 2659,
                    "name": "ExpressionStatement",
                    "src": "2405:13:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 2660,
                            "name": "Identifier",
                            "src": "2429:7:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "controller",
                                      "referencedDeclaration": 10816,
                                      "type": "function () view external returns (address)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2646,
                                          "type": "contract MiniMeToken",
                                          "value": "_token"
                                        },
                                        "id": 2661,
                                        "name": "Identifier",
                                        "src": "2437:6:6"
                                      }
                                    ],
                                    "id": 2662,
                                    "name": "MemberAccess",
                                    "src": "2437:17:6"
                                  }
                                ],
                                "id": 2663,
                                "name": "FunctionCall",
                                "src": "2437:19:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_TokenManager_$3350",
                                          "typeString": "contract TokenManager"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 2664,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "2460:7:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12717,
                                      "type": "contract TokenManager",
                                      "value": "this"
                                    },
                                    "id": 2665,
                                    "name": "Identifier",
                                    "src": "2468:4:6"
                                  }
                                ],
                                "id": 2666,
                                "name": "FunctionCall",
                                "src": "2460:13:6"
                              }
                            ],
                            "id": 2667,
                            "name": "BinaryOperation",
                            "src": "2437:36:6"
                          }
                        ],
                        "id": 2668,
                        "name": "FunctionCall",
                        "src": "2429:45:6"
                      }
                    ],
                    "id": 2669,
                    "name": "ExpressionStatement",
                    "src": "2429:45:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract MiniMeToken"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2573,
                              "type": "contract MiniMeToken",
                              "value": "token"
                            },
                            "id": 2670,
                            "name": "Identifier",
                            "src": "2485:5:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2646,
                              "type": "contract MiniMeToken",
                              "value": "_token"
                            },
                            "id": 2671,
                            "name": "Identifier",
                            "src": "2493:6:6"
                          }
                        ],
                        "id": 2672,
                        "name": "Assignment",
                        "src": "2485:14:6"
                      }
                    ],
                    "id": 2673,
                    "name": "ExpressionStatement",
                    "src": "2485:14:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2575,
                              "type": "bool",
                              "value": "transferable"
                            },
                            "id": 2674,
                            "name": "Identifier",
                            "src": "2509:12:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2648,
                              "type": "bool",
                              "value": "_transferable"
                            },
                            "id": 2675,
                            "name": "Identifier",
                            "src": "2524:13:6"
                          }
                        ],
                        "id": 2676,
                        "name": "Assignment",
                        "src": "2509:28:6"
                      }
                    ],
                    "id": 2677,
                    "name": "ExpressionStatement",
                    "src": "2509:28:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2577,
                              "type": "uint256",
                              "value": "maxAccountTokens"
                            },
                            "id": 2678,
                            "name": "Identifier",
                            "src": "2547:16:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2650,
                                      "type": "uint256",
                                      "value": "_maxAccountTokens"
                                    },
                                    "id": 2679,
                                    "name": "Identifier",
                                    "src": "2566:17:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2680,
                                    "name": "Literal",
                                    "src": "2587:1:6"
                                  }
                                ],
                                "id": 2681,
                                "name": "BinaryOperation",
                                "src": "2566:22:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_-1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint256)",
                                      "value": "uint256"
                                    },
                                    "id": 2682,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "2591:7:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "prefix": true,
                                      "type": "int_const -1"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "31",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 1",
                                          "value": "1"
                                        },
                                        "id": 2683,
                                        "name": "Literal",
                                        "src": "2600:1:6"
                                      }
                                    ],
                                    "id": 2684,
                                    "name": "UnaryOperation",
                                    "src": "2599:2:6"
                                  }
                                ],
                                "id": 2685,
                                "name": "FunctionCall",
                                "src": "2591:11:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2650,
                                  "type": "uint256",
                                  "value": "_maxAccountTokens"
                                },
                                "id": 2686,
                                "name": "Identifier",
                                "src": "2605:17:6"
                              }
                            ],
                            "id": 2687,
                            "name": "Conditional",
                            "src": "2566:56:6"
                          }
                        ],
                        "id": 2688,
                        "name": "Assignment",
                        "src": "2547:75:6"
                      }
                    ],
                    "id": 2689,
                    "name": "ExpressionStatement",
                    "src": "2547:75:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2579,
                              "type": "bool",
                              "value": "logHolders"
                            },
                            "id": 2690,
                            "name": "Identifier",
                            "src": "2632:10:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2652,
                              "type": "bool",
                              "value": "_logHolders"
                            },
                            "id": 2691,
                            "name": "Identifier",
                            "src": "2645:11:6"
                          }
                        ],
                        "id": 2692,
                        "name": "Assignment",
                        "src": "2632:24:6"
                      }
                    ],
                    "id": 2693,
                    "name": "ExpressionStatement",
                    "src": "2632:24:6"
                  }
                ],
                "id": 2694,
                "name": "Block",
                "src": "2394:269:6"
              }
            ],
            "id": 2695,
            "name": "FunctionDefinition",
            "src": "2217:446:6"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "mint",
              "payable": false,
              "scope": 3350,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_receiver",
                      "scope": 2722,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 2696,
                        "name": "ElementaryTypeName",
                        "src": "2854:7:6"
                      }
                    ],
                    "id": 2697,
                    "name": "VariableDeclaration",
                    "src": "2854:17:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 2722,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2698,
                        "name": "ElementaryTypeName",
                        "src": "2873:7:6"
                      }
                    ],
                    "id": 2699,
                    "name": "VariableDeclaration",
                    "src": "2873:15:6"
                  }
                ],
                "id": 2700,
                "name": "ParameterList",
                "src": "2853:36:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2708,
                "name": "ParameterList",
                "src": "2941:0:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6921,
                      "type": "modifier (bytes32,uint256[] memory)",
                      "value": "authP"
                    },
                    "id": 2701,
                    "name": "Identifier",
                    "src": "2890:5:6"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2584,
                      "type": "bytes32",
                      "value": "MINT_ROLE"
                    },
                    "id": 2702,
                    "name": "Identifier",
                    "src": "2896:9:6"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "isStructConstructorCall": false,
                      "lValueRequested": false,
                      "names": [
                        null
                      ],
                      "type": "uint256[] memory",
                      "type_conversion": false
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "overloadedDeclarations": [
                            5519,
                            5534,
                            5554,
                            5569,
                            5589,
                            5610,
                            5630,
                            5659,
                            5684,
                            5709,
                            5732,
                            5763,
                            5802,
                            5849,
                            5904
                          ],
                          "referencedDeclaration": 5630,
                          "type": "function (address,uint256) pure returns (uint256[] memory)",
                          "value": "arr"
                        },
                        "id": 2703,
                        "name": "Identifier",
                        "src": "2907:3:6"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 2697,
                          "type": "address",
                          "value": "_receiver"
                        },
                        "id": 2704,
                        "name": "Identifier",
                        "src": "2911:9:6"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 2699,
                          "type": "uint256",
                          "value": "_amount"
                        },
                        "id": 2705,
                        "name": "Identifier",
                        "src": "2922:7:6"
                      }
                    ],
                    "id": 2706,
                    "name": "FunctionCall",
                    "src": "2907:23:6"
                  }
                ],
                "id": 2707,
                "name": "ModifierInvocation",
                "src": "2890:41:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 2709,
                            "name": "Identifier",
                            "src": "2951:7:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3084,
                                  "type": "function (address,uint256) view returns (bool)",
                                  "value": "isBalanceIncreaseAllowed"
                                },
                                "id": 2710,
                                "name": "Identifier",
                                "src": "2959:24:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2697,
                                  "type": "address",
                                  "value": "_receiver"
                                },
                                "id": 2711,
                                "name": "Identifier",
                                "src": "2984:9:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2699,
                                  "type": "uint256",
                                  "value": "_amount"
                                },
                                "id": 2712,
                                "name": "Identifier",
                                "src": "2995:7:6"
                              }
                            ],
                            "id": 2713,
                            "name": "FunctionCall",
                            "src": "2959:44:6"
                          }
                        ],
                        "id": 2714,
                        "name": "FunctionCall",
                        "src": "2951:53:6"
                      }
                    ],
                    "id": 2715,
                    "name": "ExpressionStatement",
                    "src": "2951:53:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3281,
                              "type": "function (address,uint256)",
                              "value": "_mint"
                            },
                            "id": 2716,
                            "name": "Identifier",
                            "src": "3014:5:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2697,
                              "type": "address",
                              "value": "_receiver"
                            },
                            "id": 2717,
                            "name": "Identifier",
                            "src": "3020:9:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2699,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 2718,
                            "name": "Identifier",
                            "src": "3031:7:6"
                          }
                        ],
                        "id": 2719,
                        "name": "FunctionCall",
                        "src": "3014:25:6"
                      }
                    ],
                    "id": 2720,
                    "name": "ExpressionStatement",
                    "src": "3014:25:6"
                  }
                ],
                "id": 2721,
                "name": "Block",
                "src": "2941:105:6"
              }
            ],
            "id": 2722,
            "name": "FunctionDefinition",
            "src": "2840:206:6"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "issue",
              "payable": false,
              "scope": 3350,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 2741,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2723,
                        "name": "ElementaryTypeName",
                        "src": "3188:7:6"
                      }
                    ],
                    "id": 2724,
                    "name": "VariableDeclaration",
                    "src": "3188:15:6"
                  }
                ],
                "id": 2725,
                "name": "ParameterList",
                "src": "3187:17:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2732,
                "name": "ParameterList",
                "src": "3246:0:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6921,
                      "type": "modifier (bytes32,uint256[] memory)",
                      "value": "authP"
                    },
                    "id": 2726,
                    "name": "Identifier",
                    "src": "3205:5:6"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2589,
                      "type": "bytes32",
                      "value": "ISSUE_ROLE"
                    },
                    "id": 2727,
                    "name": "Identifier",
                    "src": "3211:10:6"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "isStructConstructorCall": false,
                      "lValueRequested": false,
                      "names": [
                        null
                      ],
                      "type": "uint256[] memory",
                      "type_conversion": false
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "overloadedDeclarations": [
                            5519,
                            5534,
                            5554,
                            5569,
                            5589,
                            5610,
                            5630,
                            5659,
                            5684,
                            5709,
                            5732,
                            5763,
                            5802,
                            5849,
                            5904
                          ],
                          "referencedDeclaration": 5732,
                          "type": "function (uint256) pure returns (uint256[] memory)",
                          "value": "arr"
                        },
                        "id": 2728,
                        "name": "Identifier",
                        "src": "3223:3:6"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 2724,
                          "type": "uint256",
                          "value": "_amount"
                        },
                        "id": 2729,
                        "name": "Identifier",
                        "src": "3227:7:6"
                      }
                    ],
                    "id": 2730,
                    "name": "FunctionCall",
                    "src": "3223:12:6"
                  }
                ],
                "id": 2731,
                "name": "ModifierInvocation",
                "src": "3205:31:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3281,
                              "type": "function (address,uint256)",
                              "value": "_mint"
                            },
                            "id": 2733,
                            "name": "Identifier",
                            "src": "3256:5:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_TokenManager_$3350",
                                      "typeString": "contract TokenManager"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 2734,
                                "name": "ElementaryTypeNameExpression",
                                "src": "3262:7:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12717,
                                  "type": "contract TokenManager",
                                  "value": "this"
                                },
                                "id": 2735,
                                "name": "Identifier",
                                "src": "3270:4:6"
                              }
                            ],
                            "id": 2736,
                            "name": "FunctionCall",
                            "src": "3262:13:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2724,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 2737,
                            "name": "Identifier",
                            "src": "3277:7:6"
                          }
                        ],
                        "id": 2738,
                        "name": "FunctionCall",
                        "src": "3256:29:6"
                      }
                    ],
                    "id": 2739,
                    "name": "ExpressionStatement",
                    "src": "3256:29:6"
                  }
                ],
                "id": 2740,
                "name": "Block",
                "src": "3246:46:6"
              }
            ],
            "id": 2741,
            "name": "FunctionDefinition",
            "src": "3173:119:6"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "assign",
              "payable": false,
              "scope": 3350,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_receiver",
                      "scope": 2761,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 2742,
                        "name": "ElementaryTypeName",
                        "src": "3521:7:6"
                      }
                    ],
                    "id": 2743,
                    "name": "VariableDeclaration",
                    "src": "3521:17:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 2761,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2744,
                        "name": "ElementaryTypeName",
                        "src": "3540:7:6"
                      }
                    ],
                    "id": 2745,
                    "name": "VariableDeclaration",
                    "src": "3540:15:6"
                  }
                ],
                "id": 2746,
                "name": "ParameterList",
                "src": "3520:36:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2754,
                "name": "ParameterList",
                "src": "3610:0:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6921,
                      "type": "modifier (bytes32,uint256[] memory)",
                      "value": "authP"
                    },
                    "id": 2747,
                    "name": "Identifier",
                    "src": "3557:5:6"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2594,
                      "type": "bytes32",
                      "value": "ASSIGN_ROLE"
                    },
                    "id": 2748,
                    "name": "Identifier",
                    "src": "3563:11:6"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "isStructConstructorCall": false,
                      "lValueRequested": false,
                      "names": [
                        null
                      ],
                      "type": "uint256[] memory",
                      "type_conversion": false
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "overloadedDeclarations": [
                            5519,
                            5534,
                            5554,
                            5569,
                            5589,
                            5610,
                            5630,
                            5659,
                            5684,
                            5709,
                            5732,
                            5763,
                            5802,
                            5849,
                            5904
                          ],
                          "referencedDeclaration": 5630,
                          "type": "function (address,uint256) pure returns (uint256[] memory)",
                          "value": "arr"
                        },
                        "id": 2749,
                        "name": "Identifier",
                        "src": "3576:3:6"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 2743,
                          "type": "address",
                          "value": "_receiver"
                        },
                        "id": 2750,
                        "name": "Identifier",
                        "src": "3580:9:6"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 2745,
                          "type": "uint256",
                          "value": "_amount"
                        },
                        "id": 2751,
                        "name": "Identifier",
                        "src": "3591:7:6"
                      }
                    ],
                    "id": 2752,
                    "name": "FunctionCall",
                    "src": "3576:23:6"
                  }
                ],
                "id": 2753,
                "name": "ModifierInvocation",
                "src": "3557:43:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3262,
                              "type": "function (address,uint256)",
                              "value": "_assign"
                            },
                            "id": 2755,
                            "name": "Identifier",
                            "src": "3620:7:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2743,
                              "type": "address",
                              "value": "_receiver"
                            },
                            "id": 2756,
                            "name": "Identifier",
                            "src": "3628:9:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2745,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 2757,
                            "name": "Identifier",
                            "src": "3639:7:6"
                          }
                        ],
                        "id": 2758,
                        "name": "FunctionCall",
                        "src": "3620:27:6"
                      }
                    ],
                    "id": 2759,
                    "name": "ExpressionStatement",
                    "src": "3620:27:6"
                  }
                ],
                "id": 2760,
                "name": "Block",
                "src": "3610:44:6"
              }
            ],
            "id": 2761,
            "name": "FunctionDefinition",
            "src": "3505:149:6"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "burn",
              "payable": false,
              "scope": 3350,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_holder",
                      "scope": 2783,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 2762,
                        "name": "ElementaryTypeName",
                        "src": "3840:7:6"
                      }
                    ],
                    "id": 2763,
                    "name": "VariableDeclaration",
                    "src": "3840:15:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 2783,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2764,
                        "name": "ElementaryTypeName",
                        "src": "3857:7:6"
                      }
                    ],
                    "id": 2765,
                    "name": "VariableDeclaration",
                    "src": "3857:15:6"
                  }
                ],
                "id": 2766,
                "name": "ParameterList",
                "src": "3839:34:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2774,
                "name": "ParameterList",
                "src": "3923:0:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6921,
                      "type": "modifier (bytes32,uint256[] memory)",
                      "value": "authP"
                    },
                    "id": 2767,
                    "name": "Identifier",
                    "src": "3874:5:6"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2604,
                      "type": "bytes32",
                      "value": "BURN_ROLE"
                    },
                    "id": 2768,
                    "name": "Identifier",
                    "src": "3880:9:6"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "isStructConstructorCall": false,
                      "lValueRequested": false,
                      "names": [
                        null
                      ],
                      "type": "uint256[] memory",
                      "type_conversion": false
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "overloadedDeclarations": [
                            5519,
                            5534,
                            5554,
                            5569,
                            5589,
                            5610,
                            5630,
                            5659,
                            5684,
                            5709,
                            5732,
                            5763,
                            5802,
                            5849,
                            5904
                          ],
                          "referencedDeclaration": 5630,
                          "type": "function (address,uint256) pure returns (uint256[] memory)",
                          "value": "arr"
                        },
                        "id": 2769,
                        "name": "Identifier",
                        "src": "3891:3:6"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 2763,
                          "type": "address",
                          "value": "_holder"
                        },
                        "id": 2770,
                        "name": "Identifier",
                        "src": "3895:7:6"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 2765,
                          "type": "uint256",
                          "value": "_amount"
                        },
                        "id": 2771,
                        "name": "Identifier",
                        "src": "3904:7:6"
                      }
                    ],
                    "id": 2772,
                    "name": "FunctionCall",
                    "src": "3891:21:6"
                  }
                ],
                "id": 2773,
                "name": "ModifierInvocation",
                "src": "3874:39:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "destroyTokens",
                              "referencedDeclaration": 11551,
                              "type": "function (address,uint256) external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2573,
                                  "type": "contract MiniMeToken",
                                  "value": "token"
                                },
                                "id": 2775,
                                "name": "Identifier",
                                "src": "4012:5:6"
                              }
                            ],
                            "id": 2777,
                            "name": "MemberAccess",
                            "src": "4012:19:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2763,
                              "type": "address",
                              "value": "_holder"
                            },
                            "id": 2778,
                            "name": "Identifier",
                            "src": "4032:7:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2765,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 2779,
                            "name": "Identifier",
                            "src": "4041:7:6"
                          }
                        ],
                        "id": 2780,
                        "name": "FunctionCall",
                        "src": "4012:37:6"
                      }
                    ],
                    "id": 2781,
                    "name": "ExpressionStatement",
                    "src": "4012:37:6"
                  }
                ],
                "id": 2782,
                "name": "Block",
                "src": "3923:133:6"
              }
            ],
            "id": 2783,
            "name": "FunctionDefinition",
            "src": "3826:230:6"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "assignVested",
              "payable": false,
              "scope": 3350,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_receiver",
                      "scope": 2860,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 2784,
                        "name": "ElementaryTypeName",
                        "src": "4751:7:6"
                      }
                    ],
                    "id": 2785,
                    "name": "VariableDeclaration",
                    "src": "4751:17:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 2860,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2786,
                        "name": "ElementaryTypeName",
                        "src": "4778:7:6"
                      }
                    ],
                    "id": 2787,
                    "name": "VariableDeclaration",
                    "src": "4778:15:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_start",
                      "scope": 2860,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 2788,
                        "name": "ElementaryTypeName",
                        "src": "4803:6:6"
                      }
                    ],
                    "id": 2789,
                    "name": "VariableDeclaration",
                    "src": "4803:13:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_cliff",
                      "scope": 2860,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 2790,
                        "name": "ElementaryTypeName",
                        "src": "4826:6:6"
                      }
                    ],
                    "id": 2791,
                    "name": "VariableDeclaration",
                    "src": "4826:13:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_vesting",
                      "scope": 2860,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 2792,
                        "name": "ElementaryTypeName",
                        "src": "4849:6:6"
                      }
                    ],
                    "id": 2793,
                    "name": "VariableDeclaration",
                    "src": "4849:15:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_revokable",
                      "scope": 2860,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 2794,
                        "name": "ElementaryTypeName",
                        "src": "4874:4:6"
                      }
                    ],
                    "id": 2795,
                    "name": "VariableDeclaration",
                    "src": "4874:15:6"
                  }
                ],
                "id": 2796,
                "name": "ParameterList",
                "src": "4741:154:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2860,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2804,
                        "name": "ElementaryTypeName",
                        "src": "4958:7:6"
                      }
                    ],
                    "id": 2805,
                    "name": "VariableDeclaration",
                    "src": "4958:7:6"
                  }
                ],
                "id": 2806,
                "name": "ParameterList",
                "src": "4957:9:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6921,
                      "type": "modifier (bytes32,uint256[] memory)",
                      "value": "authP"
                    },
                    "id": 2797,
                    "name": "Identifier",
                    "src": "4896:5:6"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2594,
                      "type": "bytes32",
                      "value": "ASSIGN_ROLE"
                    },
                    "id": 2798,
                    "name": "Identifier",
                    "src": "4902:11:6"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "isStructConstructorCall": false,
                      "lValueRequested": false,
                      "names": [
                        null
                      ],
                      "type": "uint256[] memory",
                      "type_conversion": false
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "overloadedDeclarations": [
                            5519,
                            5534,
                            5554,
                            5569,
                            5589,
                            5610,
                            5630,
                            5659,
                            5684,
                            5709,
                            5732,
                            5763,
                            5802,
                            5849,
                            5904
                          ],
                          "referencedDeclaration": 5630,
                          "type": "function (address,uint256) pure returns (uint256[] memory)",
                          "value": "arr"
                        },
                        "id": 2799,
                        "name": "Identifier",
                        "src": "4915:3:6"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 2785,
                          "type": "address",
                          "value": "_receiver"
                        },
                        "id": 2800,
                        "name": "Identifier",
                        "src": "4919:9:6"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 2787,
                          "type": "uint256",
                          "value": "_amount"
                        },
                        "id": 2801,
                        "name": "Identifier",
                        "src": "4930:7:6"
                      }
                    ],
                    "id": 2802,
                    "name": "FunctionCall",
                    "src": "4915:23:6"
                  }
                ],
                "id": 2803,
                "name": "ModifierInvocation",
                "src": "4896:43:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 2807,
                            "name": "Identifier",
                            "src": "4981:7:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "<",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3097,
                                      "type": "function (address) view returns (uint256)",
                                      "value": "tokenGrantsCount"
                                    },
                                    "id": 2808,
                                    "name": "Identifier",
                                    "src": "4989:16:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2785,
                                      "type": "address",
                                      "value": "_receiver"
                                    },
                                    "id": 2809,
                                    "name": "Identifier",
                                    "src": "5006:9:6"
                                  }
                                ],
                                "id": 2810,
                                "name": "FunctionCall",
                                "src": "4989:27:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2607,
                                  "type": "uint256",
                                  "value": "MAX_VESTINGS_PER_ADDRESS"
                                },
                                "id": 2811,
                                "name": "Identifier",
                                "src": "5019:24:6"
                              }
                            ],
                            "id": 2812,
                            "name": "BinaryOperation",
                            "src": "4989:54:6"
                          }
                        ],
                        "id": 2813,
                        "name": "FunctionCall",
                        "src": "4981:63:6"
                      }
                    ],
                    "id": 2814,
                    "name": "ExpressionStatement",
                    "src": "4981:63:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 2815,
                            "name": "Identifier",
                            "src": "5055:7:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&&",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2789,
                                      "type": "uint64",
                                      "value": "_start"
                                    },
                                    "id": 2816,
                                    "name": "Identifier",
                                    "src": "5063:6:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2791,
                                      "type": "uint64",
                                      "value": "_cliff"
                                    },
                                    "id": 2817,
                                    "name": "Identifier",
                                    "src": "5073:6:6"
                                  }
                                ],
                                "id": 2818,
                                "name": "BinaryOperation",
                                "src": "5063:16:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2791,
                                      "type": "uint64",
                                      "value": "_cliff"
                                    },
                                    "id": 2819,
                                    "name": "Identifier",
                                    "src": "5083:6:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2793,
                                      "type": "uint64",
                                      "value": "_vesting"
                                    },
                                    "id": 2820,
                                    "name": "Identifier",
                                    "src": "5093:8:6"
                                  }
                                ],
                                "id": 2821,
                                "name": "BinaryOperation",
                                "src": "5083:18:6"
                              }
                            ],
                            "id": 2822,
                            "name": "BinaryOperation",
                            "src": "5063:38:6"
                          }
                        ],
                        "id": 2823,
                        "name": "FunctionCall",
                        "src": "5055:47:6"
                      }
                    ],
                    "id": 2824,
                    "name": "ExpressionStatement",
                    "src": "5055:47:6"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2826
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "tokenVesting",
                          "scope": 2860,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct TokenManager.TokenVesting memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "TokenVesting",
                              "referencedDeclaration": 2618,
                              "type": "struct TokenManager.TokenVesting storage pointer"
                            },
                            "id": 2825,
                            "name": "UserDefinedTypeName",
                            "src": "5113:12:6"
                          }
                        ],
                        "id": 2826,
                        "name": "VariableDeclaration",
                        "src": "5113:32:6"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": true,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "struct TokenManager.TokenVesting memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2618,
                              "type": "type(struct TokenManager.TokenVesting storage pointer)",
                              "value": "TokenVesting"
                            },
                            "id": 2827,
                            "name": "Identifier",
                            "src": "5148:12:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2787,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 2828,
                            "name": "Identifier",
                            "src": "5174:7:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2789,
                              "type": "uint64",
                              "value": "_start"
                            },
                            "id": 2829,
                            "name": "Identifier",
                            "src": "5195:6:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2791,
                              "type": "uint64",
                              "value": "_cliff"
                            },
                            "id": 2830,
                            "name": "Identifier",
                            "src": "5215:6:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2793,
                              "type": "uint64",
                              "value": "_vesting"
                            },
                            "id": 2831,
                            "name": "Identifier",
                            "src": "5235:8:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2795,
                              "type": "bool",
                              "value": "_revokable"
                            },
                            "id": 2832,
                            "name": "Identifier",
                            "src": "5257:10:6"
                          }
                        ],
                        "id": 2833,
                        "name": "FunctionCall",
                        "src": "5148:129:6"
                      }
                    ],
                    "id": 2834,
                    "name": "VariableDeclarationStatement",
                    "src": "5113:164:6"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2836
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "vestingId",
                          "scope": 2860,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 2835,
                            "name": "ElementaryTypeName",
                            "src": "5287:7:6"
                          }
                        ],
                        "id": 2836,
                        "name": "VariableDeclaration",
                        "src": "5287:17:6"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "-",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_TokenVesting_$2618_memory_ptr",
                                      "typeString": "struct TokenManager.TokenVesting memory"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "push",
                                  "referencedDeclaration": null,
                                  "type": "function (struct TokenManager.TokenVesting storage ref) returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "struct TokenManager.TokenVesting storage ref[] storage ref"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2623,
                                          "type": "mapping(address => struct TokenManager.TokenVesting storage ref[] storage ref)",
                                          "value": "vestings"
                                        },
                                        "id": 2837,
                                        "name": "Identifier",
                                        "src": "5307:8:6"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2785,
                                          "type": "address",
                                          "value": "_receiver"
                                        },
                                        "id": 2838,
                                        "name": "Identifier",
                                        "src": "5316:9:6"
                                      }
                                    ],
                                    "id": 2839,
                                    "name": "IndexAccess",
                                    "src": "5307:19:6"
                                  }
                                ],
                                "id": 2840,
                                "name": "MemberAccess",
                                "src": "5307:24:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2826,
                                  "type": "struct TokenManager.TokenVesting memory",
                                  "value": "tokenVesting"
                                },
                                "id": 2841,
                                "name": "Identifier",
                                "src": "5332:12:6"
                              }
                            ],
                            "id": 2842,
                            "name": "FunctionCall",
                            "src": "5307:38:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 2843,
                            "name": "Literal",
                            "src": "5348:1:6"
                          }
                        ],
                        "id": 2844,
                        "name": "BinaryOperation",
                        "src": "5307:42:6"
                      }
                    ],
                    "id": 2845,
                    "name": "VariableDeclarationStatement",
                    "src": "5287:62:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3262,
                              "type": "function (address,uint256)",
                              "value": "_assign"
                            },
                            "id": 2846,
                            "name": "Identifier",
                            "src": "5360:7:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2785,
                              "type": "address",
                              "value": "_receiver"
                            },
                            "id": 2847,
                            "name": "Identifier",
                            "src": "5368:9:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2787,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 2848,
                            "name": "Identifier",
                            "src": "5379:7:6"
                          }
                        ],
                        "id": 2849,
                        "name": "FunctionCall",
                        "src": "5360:27:6"
                      }
                    ],
                    "id": 2850,
                    "name": "ExpressionStatement",
                    "src": "5360:27:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2638,
                              "type": "function (address,uint256,uint256)",
                              "value": "NewVesting"
                            },
                            "id": 2851,
                            "name": "Identifier",
                            "src": "5398:10:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2785,
                              "type": "address",
                              "value": "_receiver"
                            },
                            "id": 2852,
                            "name": "Identifier",
                            "src": "5409:9:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2836,
                              "type": "uint256",
                              "value": "vestingId"
                            },
                            "id": 2853,
                            "name": "Identifier",
                            "src": "5420:9:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2787,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 2854,
                            "name": "Identifier",
                            "src": "5431:7:6"
                          }
                        ],
                        "id": 2855,
                        "name": "FunctionCall",
                        "src": "5398:41:6"
                      }
                    ],
                    "id": 2856,
                    "name": "ExpressionStatement",
                    "src": "5398:41:6"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 2806
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 2836,
                          "type": "uint256",
                          "value": "vestingId"
                        },
                        "id": 2857,
                        "name": "Identifier",
                        "src": "5457:9:6"
                      }
                    ],
                    "id": 2858,
                    "name": "Return",
                    "src": "5450:16:6"
                  }
                ],
                "id": 2859,
                "name": "Block",
                "src": "4971:502:6"
              }
            ],
            "id": 2860,
            "name": "FunctionDefinition",
            "src": "4720:753:6"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "revokeVesting",
              "payable": false,
              "scope": 3350,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_holder",
                      "scope": 2926,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 2861,
                        "name": "ElementaryTypeName",
                        "src": "5720:7:6"
                      }
                    ],
                    "id": 2862,
                    "name": "VariableDeclaration",
                    "src": "5720:15:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_vestingId",
                      "scope": 2926,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2863,
                        "name": "ElementaryTypeName",
                        "src": "5737:7:6"
                      }
                    ],
                    "id": 2864,
                    "name": "VariableDeclaration",
                    "src": "5737:18:6"
                  }
                ],
                "id": 2865,
                "name": "ParameterList",
                "src": "5719:37:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2872,
                "name": "ParameterList",
                "src": "5808:0:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6921,
                      "type": "modifier (bytes32,uint256[] memory)",
                      "value": "authP"
                    },
                    "id": 2866,
                    "name": "Identifier",
                    "src": "5757:5:6"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2599,
                      "type": "bytes32",
                      "value": "REVOKE_VESTINGS_ROLE"
                    },
                    "id": 2867,
                    "name": "Identifier",
                    "src": "5763:20:6"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "isStructConstructorCall": false,
                      "lValueRequested": false,
                      "names": [
                        null
                      ],
                      "type": "uint256[] memory",
                      "type_conversion": false
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "overloadedDeclarations": [
                            5519,
                            5534,
                            5554,
                            5569,
                            5589,
                            5610,
                            5630,
                            5659,
                            5684,
                            5709,
                            5732,
                            5763,
                            5802,
                            5849,
                            5904
                          ],
                          "referencedDeclaration": 5569,
                          "type": "function (address) pure returns (uint256[] memory)",
                          "value": "arr"
                        },
                        "id": 2868,
                        "name": "Identifier",
                        "src": "5785:3:6"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 2862,
                          "type": "address",
                          "value": "_holder"
                        },
                        "id": 2869,
                        "name": "Identifier",
                        "src": "5789:7:6"
                      }
                    ],
                    "id": 2870,
                    "name": "FunctionCall",
                    "src": "5785:12:6"
                  }
                ],
                "id": 2871,
                "name": "ModifierInvocation",
                "src": "5757:41:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        2874
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "v",
                          "scope": 2926,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct TokenManager.TokenVesting storage pointer",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "TokenVesting",
                              "referencedDeclaration": 2618,
                              "type": "struct TokenManager.TokenVesting storage pointer"
                            },
                            "id": 2873,
                            "name": "UserDefinedTypeName",
                            "src": "5818:12:6"
                          }
                        ],
                        "id": 2874,
                        "name": "VariableDeclaration",
                        "src": "5818:22:6"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct TokenManager.TokenVesting storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "struct TokenManager.TokenVesting storage ref[] storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2623,
                                  "type": "mapping(address => struct TokenManager.TokenVesting storage ref[] storage ref)",
                                  "value": "vestings"
                                },
                                "id": 2875,
                                "name": "Identifier",
                                "src": "5843:8:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2862,
                                  "type": "address",
                                  "value": "_holder"
                                },
                                "id": 2876,
                                "name": "Identifier",
                                "src": "5852:7:6"
                              }
                            ],
                            "id": 2877,
                            "name": "IndexAccess",
                            "src": "5843:17:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2864,
                              "type": "uint256",
                              "value": "_vestingId"
                            },
                            "id": 2878,
                            "name": "Identifier",
                            "src": "5861:10:6"
                          }
                        ],
                        "id": 2879,
                        "name": "IndexAccess",
                        "src": "5843:29:6"
                      }
                    ],
                    "id": 2880,
                    "name": "VariableDeclarationStatement",
                    "src": "5818:54:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 2881,
                            "name": "Identifier",
                            "src": "5882:7:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "revokable",
                              "referencedDeclaration": 2617,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2874,
                                  "type": "struct TokenManager.TokenVesting storage pointer",
                                  "value": "v"
                                },
                                "id": 2882,
                                "name": "Identifier",
                                "src": "5890:1:6"
                              }
                            ],
                            "id": 2883,
                            "name": "MemberAccess",
                            "src": "5890:11:6"
                          }
                        ],
                        "id": 2884,
                        "name": "FunctionCall",
                        "src": "5882:20:6"
                      }
                    ],
                    "id": 2885,
                    "name": "ExpressionStatement",
                    "src": "5882:20:6"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2887
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "nonVested",
                          "scope": 2926,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 2886,
                            "name": "ElementaryTypeName",
                            "src": "5913:4:6"
                          }
                        ],
                        "id": 2887,
                        "name": "VariableDeclaration",
                        "src": "5913:14:6"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3239,
                              "type": "function (uint256,uint256,uint256,uint256,uint256) pure returns (uint256)",
                              "value": "calculateNonVestedTokens"
                            },
                            "id": 2888,
                            "name": "Identifier",
                            "src": "5930:24:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "amount",
                              "referencedDeclaration": 2609,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2874,
                                  "type": "struct TokenManager.TokenVesting storage pointer",
                                  "value": "v"
                                },
                                "id": 2889,
                                "name": "Identifier",
                                "src": "5968:1:6"
                              }
                            ],
                            "id": 2890,
                            "name": "MemberAccess",
                            "src": "5968:8:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint64",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint64)",
                                  "value": "uint64"
                                },
                                "id": 2891,
                                "name": "ElementaryTypeNameExpression",
                                "src": "5990:6:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12592,
                                  "type": "uint256",
                                  "value": "now"
                                },
                                "id": 2892,
                                "name": "Identifier",
                                "src": "5997:3:6"
                              }
                            ],
                            "id": 2893,
                            "name": "FunctionCall",
                            "src": "5990:11:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "start",
                              "referencedDeclaration": 2611,
                              "type": "uint64"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2874,
                                  "type": "struct TokenManager.TokenVesting storage pointer",
                                  "value": "v"
                                },
                                "id": 2894,
                                "name": "Identifier",
                                "src": "6015:1:6"
                              }
                            ],
                            "id": 2895,
                            "name": "MemberAccess",
                            "src": "6015:7:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "cliff",
                              "referencedDeclaration": 2613,
                              "type": "uint64"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2874,
                                  "type": "struct TokenManager.TokenVesting storage pointer",
                                  "value": "v"
                                },
                                "id": 2896,
                                "name": "Identifier",
                                "src": "6036:1:6"
                              }
                            ],
                            "id": 2897,
                            "name": "MemberAccess",
                            "src": "6036:7:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "vesting",
                              "referencedDeclaration": 2615,
                              "type": "uint64"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2874,
                                  "type": "struct TokenManager.TokenVesting storage pointer",
                                  "value": "v"
                                },
                                "id": 2898,
                                "name": "Identifier",
                                "src": "6057:1:6"
                              }
                            ],
                            "id": 2899,
                            "name": "MemberAccess",
                            "src": "6057:9:6"
                          }
                        ],
                        "id": 2900,
                        "name": "FunctionCall",
                        "src": "5930:146:6"
                      }
                    ],
                    "id": 2901,
                    "name": "VariableDeclarationStatement",
                    "src": "5913:163:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "delete",
                          "prefix": true,
                          "type": "tuple()"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "struct TokenManager.TokenVesting storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct TokenManager.TokenVesting storage ref[] storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2623,
                                      "type": "mapping(address => struct TokenManager.TokenVesting storage ref[] storage ref)",
                                      "value": "vestings"
                                    },
                                    "id": 2902,
                                    "name": "Identifier",
                                    "src": "6182:8:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2862,
                                      "type": "address",
                                      "value": "_holder"
                                    },
                                    "id": 2903,
                                    "name": "Identifier",
                                    "src": "6191:7:6"
                                  }
                                ],
                                "id": 2904,
                                "name": "IndexAccess",
                                "src": "6182:17:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2864,
                                  "type": "uint256",
                                  "value": "_vestingId"
                                },
                                "id": 2905,
                                "name": "Identifier",
                                "src": "6200:10:6"
                              }
                            ],
                            "id": 2906,
                            "name": "IndexAccess",
                            "src": "6182:29:6"
                          }
                        ],
                        "id": 2907,
                        "name": "UnaryOperation",
                        "src": "6175:36:6"
                      }
                    ],
                    "id": 2908,
                    "name": "ExpressionStatement",
                    "src": "6175:36:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 2909,
                            "name": "Identifier",
                            "src": "6349:7:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "transferFrom",
                                  "referencedDeclaration": 11014,
                                  "type": "function (address,address,uint256) external returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2573,
                                      "type": "contract MiniMeToken",
                                      "value": "token"
                                    },
                                    "id": 2910,
                                    "name": "Identifier",
                                    "src": "6357:5:6"
                                  }
                                ],
                                "id": 2911,
                                "name": "MemberAccess",
                                "src": "6357:18:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2862,
                                  "type": "address",
                                  "value": "_holder"
                                },
                                "id": 2912,
                                "name": "Identifier",
                                "src": "6376:7:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_TokenManager_$3350",
                                          "typeString": "contract TokenManager"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 2913,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "6385:7:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12717,
                                      "type": "contract TokenManager",
                                      "value": "this"
                                    },
                                    "id": 2914,
                                    "name": "Identifier",
                                    "src": "6393:4:6"
                                  }
                                ],
                                "id": 2915,
                                "name": "FunctionCall",
                                "src": "6385:13:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2887,
                                  "type": "uint256",
                                  "value": "nonVested"
                                },
                                "id": 2916,
                                "name": "Identifier",
                                "src": "6400:9:6"
                              }
                            ],
                            "id": 2917,
                            "name": "FunctionCall",
                            "src": "6357:53:6"
                          }
                        ],
                        "id": 2918,
                        "name": "FunctionCall",
                        "src": "6349:62:6"
                      }
                    ],
                    "id": 2919,
                    "name": "ExpressionStatement",
                    "src": "6349:62:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2644,
                              "type": "function (address,uint256)",
                              "value": "RevokeVesting"
                            },
                            "id": 2920,
                            "name": "Identifier",
                            "src": "6422:13:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2862,
                              "type": "address",
                              "value": "_holder"
                            },
                            "id": 2921,
                            "name": "Identifier",
                            "src": "6436:7:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2864,
                              "type": "uint256",
                              "value": "_vestingId"
                            },
                            "id": 2922,
                            "name": "Identifier",
                            "src": "6445:10:6"
                          }
                        ],
                        "id": 2923,
                        "name": "FunctionCall",
                        "src": "6422:34:6"
                      }
                    ],
                    "id": 2924,
                    "name": "ExpressionStatement",
                    "src": "6422:34:6"
                  }
                ],
                "id": 2925,
                "name": "Block",
                "src": "5808:655:6"
              }
            ],
            "id": 2926,
            "name": "FunctionDefinition",
            "src": "5697:766:6"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "forward",
              "payable": false,
              "scope": 3350,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_evmScript",
                      "scope": 2971,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 2927,
                        "name": "ElementaryTypeName",
                        "src": "6626:5:6"
                      }
                    ],
                    "id": 2928,
                    "name": "VariableDeclaration",
                    "src": "6626:16:6"
                  }
                ],
                "id": 2929,
                "name": "ParameterList",
                "src": "6625:18:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2930,
                "name": "ParameterList",
                "src": "6651:0:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 2931,
                            "name": "Identifier",
                            "src": "6661:7:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2996,
                                  "type": "function (address,bytes memory) view returns (bool)",
                                  "value": "canForward"
                                },
                                "id": 2932,
                                "name": "Identifier",
                                "src": "6669:10:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12590,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 2933,
                                    "name": "Identifier",
                                    "src": "6680:3:6"
                                  }
                                ],
                                "id": 2934,
                                "name": "MemberAccess",
                                "src": "6680:10:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2928,
                                  "type": "bytes memory",
                                  "value": "_evmScript"
                                },
                                "id": 2935,
                                "name": "Identifier",
                                "src": "6692:10:6"
                              }
                            ],
                            "id": 2936,
                            "name": "FunctionCall",
                            "src": "6669:34:6"
                          }
                        ],
                        "id": 2937,
                        "name": "FunctionCall",
                        "src": "6661:43:6"
                      }
                    ],
                    "id": 2938,
                    "name": "ExpressionStatement",
                    "src": "6661:43:6"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2940
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "input",
                          "scope": 2971,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "bytes memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes",
                              "type": "bytes storage pointer"
                            },
                            "id": 2939,
                            "name": "ElementaryTypeName",
                            "src": "6714:5:6"
                          }
                        ],
                        "id": 2940,
                        "name": "VariableDeclaration",
                        "src": "6714:18:6"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "function (uint256) pure returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "bytes",
                                  "type": "bytes storage pointer"
                                },
                                "id": 2941,
                                "name": "ElementaryTypeName",
                                "src": "6739:5:6"
                              }
                            ],
                            "id": 2942,
                            "name": "NewExpression",
                            "src": "6735:9:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 2943,
                            "name": "Literal",
                            "src": "6745:1:6"
                          }
                        ],
                        "id": 2944,
                        "name": "FunctionCall",
                        "src": "6735:12:6"
                      }
                    ],
                    "id": 2945,
                    "name": "VariableDeclarationStatement",
                    "src": "6714:33:6"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2949
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "blacklist",
                          "scope": 2971,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "address[] memory",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "length": null,
                              "type": "address[] storage pointer"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "address",
                                  "type": "address"
                                },
                                "id": 2947,
                                "name": "ElementaryTypeName",
                                "src": "6790:7:6"
                              }
                            ],
                            "id": 2948,
                            "name": "ArrayTypeName",
                            "src": "6790:9:6"
                          }
                        ],
                        "id": 2949,
                        "name": "VariableDeclaration",
                        "src": "6790:26:6"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "address[] memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "function (uint256) pure returns (address[] memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "length": null,
                                  "type": "address[] storage pointer"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address",
                                      "type": "address"
                                    },
                                    "id": 2950,
                                    "name": "ElementaryTypeName",
                                    "src": "6823:7:6"
                                  }
                                ],
                                "id": 2951,
                                "name": "ArrayTypeName",
                                "src": "6823:9:6"
                              }
                            ],
                            "id": 2952,
                            "name": "NewExpression",
                            "src": "6819:13:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 2953,
                            "name": "Literal",
                            "src": "6833:1:6"
                          }
                        ],
                        "id": 2954,
                        "name": "FunctionCall",
                        "src": "6819:16:6"
                      }
                    ],
                    "id": 2955,
                    "name": "VariableDeclarationStatement",
                    "src": "6790:45:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2949,
                                  "type": "address[] memory",
                                  "value": "blacklist"
                                },
                                "id": 2956,
                                "name": "Identifier",
                                "src": "6845:9:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2957,
                                "name": "Literal",
                                "src": "6855:1:6"
                              }
                            ],
                            "id": 2958,
                            "name": "IndexAccess",
                            "src": "6845:12:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_MiniMeToken_$11873",
                                      "typeString": "contract MiniMeToken"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 2959,
                                "name": "ElementaryTypeNameExpression",
                                "src": "6860:7:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2573,
                                  "type": "contract MiniMeToken",
                                  "value": "token"
                                },
                                "id": 2960,
                                "name": "Identifier",
                                "src": "6868:5:6"
                              }
                            ],
                            "id": 2961,
                            "name": "FunctionCall",
                            "src": "6860:14:6"
                          }
                        ],
                        "id": 2962,
                        "name": "Assignment",
                        "src": "6845:29:6"
                      }
                    ],
                    "id": 2963,
                    "name": "ExpressionStatement",
                    "src": "6845:29:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7779,
                              "type": "function (bytes memory,bytes memory,address[] memory) returns (bytes memory)",
                              "value": "runScript"
                            },
                            "id": 2964,
                            "name": "Identifier",
                            "src": "6884:9:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2928,
                              "type": "bytes memory",
                              "value": "_evmScript"
                            },
                            "id": 2965,
                            "name": "Identifier",
                            "src": "6894:10:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2940,
                              "type": "bytes memory",
                              "value": "input"
                            },
                            "id": 2966,
                            "name": "Identifier",
                            "src": "6906:5:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2949,
                              "type": "address[] memory",
                              "value": "blacklist"
                            },
                            "id": 2967,
                            "name": "Identifier",
                            "src": "6913:9:6"
                          }
                        ],
                        "id": 2968,
                        "name": "FunctionCall",
                        "src": "6884:39:6"
                      }
                    ],
                    "id": 2969,
                    "name": "ExpressionStatement",
                    "src": "6884:39:6"
                  }
                ],
                "id": 2970,
                "name": "Block",
                "src": "6651:279:6"
              }
            ],
            "id": 2971,
            "name": "FunctionDefinition",
            "src": "6609:321:6"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "isForwarder",
              "payable": false,
              "scope": 3350,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2972,
                "name": "ParameterList",
                "src": "6956:2:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2979,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 2973,
                        "name": "ElementaryTypeName",
                        "src": "6980:4:6"
                      }
                    ],
                    "id": 2974,
                    "name": "VariableDeclaration",
                    "src": "6980:4:6"
                  }
                ],
                "id": 2975,
                "name": "ParameterList",
                "src": "6979:6:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 2975
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 2976,
                        "name": "Literal",
                        "src": "7003:4:6"
                      }
                    ],
                    "id": 2977,
                    "name": "Return",
                    "src": "6996:11:6"
                  }
                ],
                "id": 2978,
                "name": "Block",
                "src": "6986:28:6"
              }
            ],
            "id": 2979,
            "name": "FunctionDefinition",
            "src": "6936:78:6"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "canForward",
              "payable": false,
              "scope": 3350,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_sender",
                      "scope": 2996,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 2980,
                        "name": "ElementaryTypeName",
                        "src": "7040:7:6"
                      }
                    ],
                    "id": 2981,
                    "name": "VariableDeclaration",
                    "src": "7040:15:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2996,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 2982,
                        "name": "ElementaryTypeName",
                        "src": "7057:5:6"
                      }
                    ],
                    "id": 2983,
                    "name": "VariableDeclaration",
                    "src": "7057:5:6"
                  }
                ],
                "id": 2984,
                "name": "ParameterList",
                "src": "7039:24:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 2996,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 2985,
                        "name": "ElementaryTypeName",
                        "src": "7085:4:6"
                      }
                    ],
                    "id": 2986,
                    "name": "VariableDeclaration",
                    "src": "7085:4:6"
                  }
                ],
                "id": 2987,
                "name": "ParameterList",
                "src": "7084:6:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 2987
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "balanceOf",
                                  "referencedDeclaration": 11141,
                                  "type": "function (address) view external returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2573,
                                      "type": "contract MiniMeToken",
                                      "value": "token"
                                    },
                                    "id": 2988,
                                    "name": "Identifier",
                                    "src": "7108:5:6"
                                  }
                                ],
                                "id": 2989,
                                "name": "MemberAccess",
                                "src": "7108:15:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2981,
                                  "type": "address",
                                  "value": "_sender"
                                },
                                "id": 2990,
                                "name": "Identifier",
                                "src": "7124:7:6"
                              }
                            ],
                            "id": 2991,
                            "name": "FunctionCall",
                            "src": "7108:24:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 2992,
                            "name": "Literal",
                            "src": "7135:1:6"
                          }
                        ],
                        "id": 2993,
                        "name": "BinaryOperation",
                        "src": "7108:28:6"
                      }
                    ],
                    "id": 2994,
                    "name": "Return",
                    "src": "7101:35:6"
                  }
                ],
                "id": 2995,
                "name": "Block",
                "src": "7091:52:6"
              }
            ],
            "id": 2996,
            "name": "FunctionDefinition",
            "src": "7020:123:6"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "allHolders",
              "payable": false,
              "scope": 3350,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2997,
                "name": "ParameterList",
                "src": "7168:2:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3005,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address[] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "length": null,
                          "type": "address[] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "type": "address"
                            },
                            "id": 2998,
                            "name": "ElementaryTypeName",
                            "src": "7192:7:6"
                          }
                        ],
                        "id": 2999,
                        "name": "ArrayTypeName",
                        "src": "7192:9:6"
                      }
                    ],
                    "id": 3000,
                    "name": "VariableDeclaration",
                    "src": "7192:9:6"
                  }
                ],
                "id": 3001,
                "name": "ParameterList",
                "src": "7191:11:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3001
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 2630,
                          "type": "address[] storage ref",
                          "value": "holders"
                        },
                        "id": 3002,
                        "name": "Identifier",
                        "src": "7212:7:6"
                      }
                    ],
                    "id": 3003,
                    "name": "Return",
                    "src": "7205:14:6"
                  }
                ],
                "id": 3004,
                "name": "Block",
                "src": "7203:19:6"
              }
            ],
            "id": 3005,
            "name": "FunctionDefinition",
            "src": "7149:73:6"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "onTransfer",
              "payable": false,
              "scope": 3350,
              "stateMutability": "nonpayable",
              "superFunction": 10788,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_from",
                      "scope": 3065,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3006,
                        "name": "ElementaryTypeName",
                        "src": "7618:7:6"
                      }
                    ],
                    "id": 3007,
                    "name": "VariableDeclaration",
                    "src": "7618:13:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_to",
                      "scope": 3065,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3008,
                        "name": "ElementaryTypeName",
                        "src": "7633:7:6"
                      }
                    ],
                    "id": 3009,
                    "name": "VariableDeclaration",
                    "src": "7633:11:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 3065,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3010,
                        "name": "ElementaryTypeName",
                        "src": "7646:4:6"
                      }
                    ],
                    "id": 3011,
                    "name": "VariableDeclaration",
                    "src": "7646:12:6"
                  }
                ],
                "id": 3012,
                "name": "ParameterList",
                "src": "7617:42:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3065,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3013,
                        "name": "ElementaryTypeName",
                        "src": "7676:4:6"
                      }
                    ],
                    "id": 3014,
                    "name": "VariableDeclaration",
                    "src": "7676:4:6"
                  }
                ],
                "id": 3015,
                "name": "ParameterList",
                "src": "7675:6:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        3017
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "includesTokenManager",
                          "scope": 3065,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bool",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bool",
                              "type": "bool"
                            },
                            "id": 3016,
                            "name": "ElementaryTypeName",
                            "src": "7692:4:6"
                          }
                        ],
                        "id": 3017,
                        "name": "VariableDeclaration",
                        "src": "7692:25:6"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "||",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3007,
                                  "type": "address",
                                  "value": "_from"
                                },
                                "id": 3018,
                                "name": "Identifier",
                                "src": "7720:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_TokenManager_$3350",
                                          "typeString": "contract TokenManager"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 3019,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "7729:7:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12717,
                                      "type": "contract TokenManager",
                                      "value": "this"
                                    },
                                    "id": 3020,
                                    "name": "Identifier",
                                    "src": "7737:4:6"
                                  }
                                ],
                                "id": 3021,
                                "name": "FunctionCall",
                                "src": "7729:13:6"
                              }
                            ],
                            "id": 3022,
                            "name": "BinaryOperation",
                            "src": "7720:22:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3009,
                                  "type": "address",
                                  "value": "_to"
                                },
                                "id": 3023,
                                "name": "Identifier",
                                "src": "7746:3:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_TokenManager_$3350",
                                          "typeString": "contract TokenManager"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 3024,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "7753:7:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12717,
                                      "type": "contract TokenManager",
                                      "value": "this"
                                    },
                                    "id": 3025,
                                    "name": "Identifier",
                                    "src": "7761:4:6"
                                  }
                                ],
                                "id": 3026,
                                "name": "FunctionCall",
                                "src": "7753:13:6"
                              }
                            ],
                            "id": 3027,
                            "name": "BinaryOperation",
                            "src": "7746:20:6"
                          }
                        ],
                        "id": 3028,
                        "name": "BinaryOperation",
                        "src": "7720:46:6"
                      }
                    ],
                    "id": 3029,
                    "name": "VariableDeclarationStatement",
                    "src": "7692:74:6"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!",
                          "prefix": true,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3017,
                              "type": "bool",
                              "value": "includesTokenManager"
                            },
                            "id": 3030,
                            "name": "Identifier",
                            "src": "7782:20:6"
                          }
                        ],
                        "id": 3031,
                        "name": "UnaryOperation",
                        "src": "7781:21:6"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                3033
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "name": "toCanReceive",
                                  "scope": 3065,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "bool",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "bool",
                                      "type": "bool"
                                    },
                                    "id": 3032,
                                    "name": "ElementaryTypeName",
                                    "src": "7818:4:6"
                                  }
                                ],
                                "id": 3033,
                                "name": "VariableDeclaration",
                                "src": "7818:17:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3084,
                                      "type": "function (address,uint256) view returns (bool)",
                                      "value": "isBalanceIncreaseAllowed"
                                    },
                                    "id": 3034,
                                    "name": "Identifier",
                                    "src": "7838:24:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3009,
                                      "type": "address",
                                      "value": "_to"
                                    },
                                    "id": 3035,
                                    "name": "Identifier",
                                    "src": "7863:3:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3011,
                                      "type": "uint256",
                                      "value": "_amount"
                                    },
                                    "id": 3036,
                                    "name": "Identifier",
                                    "src": "7868:7:6"
                                  }
                                ],
                                "id": 3037,
                                "name": "FunctionCall",
                                "src": "7838:38:6"
                              }
                            ],
                            "id": 3038,
                            "name": "VariableDeclarationStatement",
                            "src": "7818:58:6"
                          },
                          {
                            "attributes": {
                              "falseBody": null
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "!",
                                  "prefix": true,
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "&&",
                                          "type": "bool"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "&&",
                                              "type": "bool"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2575,
                                                  "type": "bool",
                                                  "value": "transferable"
                                                },
                                                "id": 3039,
                                                "name": "Identifier",
                                                "src": "7896:12:6"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3033,
                                                  "type": "bool",
                                                  "value": "toCanReceive"
                                                },
                                                "id": 3040,
                                                "name": "Identifier",
                                                "src": "7912:12:6"
                                              }
                                            ],
                                            "id": 3041,
                                            "name": "BinaryOperation",
                                            "src": "7896:28:6"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "bool"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": ">=",
                                                  "type": "bool"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "isStructConstructorCall": false,
                                                      "lValueRequested": false,
                                                      "names": [
                                                        null
                                                      ],
                                                      "type": "uint256",
                                                      "type_conversion": false
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_address",
                                                              "typeString": "address"
                                                            },
                                                            {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          ],
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 3185,
                                                          "type": "function (address,uint256) view returns (uint256)",
                                                          "value": "transferableBalance"
                                                        },
                                                        "id": 3042,
                                                        "name": "Identifier",
                                                        "src": "7929:19:6"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 3007,
                                                          "type": "address",
                                                          "value": "_from"
                                                        },
                                                        "id": 3043,
                                                        "name": "Identifier",
                                                        "src": "7949:5:6"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 12592,
                                                          "type": "uint256",
                                                          "value": "now"
                                                        },
                                                        "id": 3044,
                                                        "name": "Identifier",
                                                        "src": "7956:3:6"
                                                      }
                                                    ],
                                                    "id": 3045,
                                                    "name": "FunctionCall",
                                                    "src": "7929:31:6"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 3011,
                                                      "type": "uint256",
                                                      "value": "_amount"
                                                    },
                                                    "id": 3046,
                                                    "name": "Identifier",
                                                    "src": "7964:7:6"
                                                  }
                                                ],
                                                "id": 3047,
                                                "name": "BinaryOperation",
                                                "src": "7929:42:6"
                                              }
                                            ],
                                            "id": 3048,
                                            "name": "TupleExpression",
                                            "src": "7928:44:6"
                                          }
                                        ],
                                        "id": 3049,
                                        "name": "BinaryOperation",
                                        "src": "7896:76:6"
                                      }
                                    ],
                                    "id": 3050,
                                    "name": "TupleExpression",
                                    "src": "7895:78:6"
                                  }
                                ],
                                "id": 3051,
                                "name": "UnaryOperation",
                                "src": "7894:79:6"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "functionReturnParameters": 3015
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "66616c7365",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "bool",
                                          "type": "bool",
                                          "value": "false"
                                        },
                                        "id": 3052,
                                        "name": "Literal",
                                        "src": "8000:5:6"
                                      }
                                    ],
                                    "id": 3053,
                                    "name": "Return",
                                    "src": "7993:12:6"
                                  }
                                ],
                                "id": 3054,
                                "name": "Block",
                                "src": "7975:45:6"
                              }
                            ],
                            "id": 3055,
                            "name": "IfStatement",
                            "src": "7890:130:6"
                          }
                        ],
                        "id": 3056,
                        "name": "Block",
                        "src": "7804:226:6"
                      }
                    ],
                    "id": 3057,
                    "name": "IfStatement",
                    "src": "7777:253:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3308,
                              "type": "function (address)",
                              "value": "_logHolderIfNeeded"
                            },
                            "id": 3058,
                            "name": "Identifier",
                            "src": "8040:18:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3009,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 3059,
                            "name": "Identifier",
                            "src": "8059:3:6"
                          }
                        ],
                        "id": 3060,
                        "name": "FunctionCall",
                        "src": "8040:23:6"
                      }
                    ],
                    "id": 3061,
                    "name": "ExpressionStatement",
                    "src": "8040:23:6"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 3015
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 3062,
                        "name": "Literal",
                        "src": "8081:4:6"
                      }
                    ],
                    "id": 3063,
                    "name": "Return",
                    "src": "8074:11:6"
                  }
                ],
                "id": 3064,
                "name": "Block",
                "src": "7682:410:6"
              }
            ],
            "id": 3065,
            "name": "FunctionDefinition",
            "src": "7598:494:6"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "isBalanceIncreaseAllowed",
              "payable": false,
              "scope": 3350,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_receiver",
                      "scope": 3084,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3066,
                        "name": "ElementaryTypeName",
                        "src": "8132:7:6"
                      }
                    ],
                    "id": 3067,
                    "name": "VariableDeclaration",
                    "src": "8132:17:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_inc",
                      "scope": 3084,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3068,
                        "name": "ElementaryTypeName",
                        "src": "8151:4:6"
                      }
                    ],
                    "id": 3069,
                    "name": "VariableDeclaration",
                    "src": "8151:9:6"
                  }
                ],
                "id": 3070,
                "name": "ParameterList",
                "src": "8131:30:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3084,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3071,
                        "name": "ElementaryTypeName",
                        "src": "8185:4:6"
                      }
                    ],
                    "id": 3072,
                    "name": "VariableDeclaration",
                    "src": "8185:4:6"
                  }
                ],
                "id": 3073,
                "name": "ParameterList",
                "src": "8184:6:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3073
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "+",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "balanceOf",
                                      "referencedDeclaration": 11141,
                                      "type": "function (address) view external returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2573,
                                          "type": "contract MiniMeToken",
                                          "value": "token"
                                        },
                                        "id": 3074,
                                        "name": "Identifier",
                                        "src": "8208:5:6"
                                      }
                                    ],
                                    "id": 3075,
                                    "name": "MemberAccess",
                                    "src": "8208:15:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3067,
                                      "type": "address",
                                      "value": "_receiver"
                                    },
                                    "id": 3076,
                                    "name": "Identifier",
                                    "src": "8224:9:6"
                                  }
                                ],
                                "id": 3077,
                                "name": "FunctionCall",
                                "src": "8208:26:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3069,
                                  "type": "uint256",
                                  "value": "_inc"
                                },
                                "id": 3078,
                                "name": "Identifier",
                                "src": "8237:4:6"
                              }
                            ],
                            "id": 3079,
                            "name": "BinaryOperation",
                            "src": "8208:33:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2577,
                              "type": "uint256",
                              "value": "maxAccountTokens"
                            },
                            "id": 3080,
                            "name": "Identifier",
                            "src": "8245:16:6"
                          }
                        ],
                        "id": 3081,
                        "name": "BinaryOperation",
                        "src": "8208:53:6"
                      }
                    ],
                    "id": 3082,
                    "name": "Return",
                    "src": "8201:60:6"
                  }
                ],
                "id": 3083,
                "name": "Block",
                "src": "8191:77:6"
              }
            ],
            "id": 3084,
            "name": "FunctionDefinition",
            "src": "8098:170:6"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "tokenGrantsCount",
              "payable": false,
              "scope": 3350,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_holder",
                      "scope": 3097,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3085,
                        "name": "ElementaryTypeName",
                        "src": "8300:7:6"
                      }
                    ],
                    "id": 3086,
                    "name": "VariableDeclaration",
                    "src": "8300:15:6"
                  }
                ],
                "id": 3087,
                "name": "ParameterList",
                "src": "8299:17:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3097,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3088,
                        "name": "ElementaryTypeName",
                        "src": "8338:7:6"
                      }
                    ],
                    "id": 3089,
                    "name": "VariableDeclaration",
                    "src": "8338:7:6"
                  }
                ],
                "id": 3090,
                "name": "ParameterList",
                "src": "8337:9:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3090
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "length",
                          "referencedDeclaration": null,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "struct TokenManager.TokenVesting storage ref[] storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2623,
                                  "type": "mapping(address => struct TokenManager.TokenVesting storage ref[] storage ref)",
                                  "value": "vestings"
                                },
                                "id": 3091,
                                "name": "Identifier",
                                "src": "8364:8:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3086,
                                  "type": "address",
                                  "value": "_holder"
                                },
                                "id": 3092,
                                "name": "Identifier",
                                "src": "8373:7:6"
                              }
                            ],
                            "id": 3093,
                            "name": "IndexAccess",
                            "src": "8364:17:6"
                          }
                        ],
                        "id": 3094,
                        "name": "MemberAccess",
                        "src": "8364:24:6"
                      }
                    ],
                    "id": 3095,
                    "name": "Return",
                    "src": "8357:31:6"
                  }
                ],
                "id": 3096,
                "name": "Block",
                "src": "8347:48:6"
              }
            ],
            "id": 3097,
            "name": "FunctionDefinition",
            "src": "8274:121:6"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "spendableBalanceOf",
              "payable": false,
              "scope": 3350,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_holder",
                      "scope": 3110,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3098,
                        "name": "ElementaryTypeName",
                        "src": "8429:7:6"
                      }
                    ],
                    "id": 3099,
                    "name": "VariableDeclaration",
                    "src": "8429:15:6"
                  }
                ],
                "id": 3100,
                "name": "ParameterList",
                "src": "8428:17:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3110,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3101,
                        "name": "ElementaryTypeName",
                        "src": "8467:7:6"
                      }
                    ],
                    "id": 3102,
                    "name": "VariableDeclaration",
                    "src": "8467:7:6"
                  }
                ],
                "id": 3103,
                "name": "ParameterList",
                "src": "8466:9:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3103
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3185,
                              "type": "function (address,uint256) view returns (uint256)",
                              "value": "transferableBalance"
                            },
                            "id": 3104,
                            "name": "Identifier",
                            "src": "8493:19:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3099,
                              "type": "address",
                              "value": "_holder"
                            },
                            "id": 3105,
                            "name": "Identifier",
                            "src": "8513:7:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12592,
                              "type": "uint256",
                              "value": "now"
                            },
                            "id": 3106,
                            "name": "Identifier",
                            "src": "8522:3:6"
                          }
                        ],
                        "id": 3107,
                        "name": "FunctionCall",
                        "src": "8493:33:6"
                      }
                    ],
                    "id": 3108,
                    "name": "Return",
                    "src": "8486:40:6"
                  }
                ],
                "id": 3109,
                "name": "Block",
                "src": "8476:57:6"
              }
            ],
            "id": 3110,
            "name": "FunctionDefinition",
            "src": "8401:132:6"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "transferableBalance",
              "payable": false,
              "scope": 3350,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_holder",
                      "scope": 3185,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3111,
                        "name": "ElementaryTypeName",
                        "src": "8568:7:6"
                      }
                    ],
                    "id": 3112,
                    "name": "VariableDeclaration",
                    "src": "8568:15:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_time",
                      "scope": 3185,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3113,
                        "name": "ElementaryTypeName",
                        "src": "8585:7:6"
                      }
                    ],
                    "id": 3114,
                    "name": "VariableDeclaration",
                    "src": "8585:13:6"
                  }
                ],
                "id": 3115,
                "name": "ParameterList",
                "src": "8567:32:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3185,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3116,
                        "name": "ElementaryTypeName",
                        "src": "8621:7:6"
                      }
                    ],
                    "id": 3117,
                    "name": "VariableDeclaration",
                    "src": "8621:7:6"
                  }
                ],
                "id": 3118,
                "name": "ParameterList",
                "src": "8620:9:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        3120
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "vs",
                          "scope": 3185,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 3119,
                            "name": "ElementaryTypeName",
                            "src": "8640:7:6"
                          }
                        ],
                        "id": 3120,
                        "name": "VariableDeclaration",
                        "src": "8640:10:6"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3097,
                              "type": "function (address) view returns (uint256)",
                              "value": "tokenGrantsCount"
                            },
                            "id": 3121,
                            "name": "Identifier",
                            "src": "8653:16:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3112,
                              "type": "address",
                              "value": "_holder"
                            },
                            "id": 3122,
                            "name": "Identifier",
                            "src": "8670:7:6"
                          }
                        ],
                        "id": 3123,
                        "name": "FunctionCall",
                        "src": "8653:25:6"
                      }
                    ],
                    "id": 3124,
                    "name": "VariableDeclarationStatement",
                    "src": "8640:38:6"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        3126
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "totalNonTransferable",
                          "scope": 3185,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 3125,
                            "name": "ElementaryTypeName",
                            "src": "8688:7:6"
                          }
                        ],
                        "id": 3126,
                        "name": "VariableDeclaration",
                        "src": "8688:28:6"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "30",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "number",
                          "type": "int_const 0",
                          "value": "0"
                        },
                        "id": 3127,
                        "name": "Literal",
                        "src": "8719:1:6"
                      }
                    ],
                    "id": 3128,
                    "name": "VariableDeclarationStatement",
                    "src": "8688:32:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            3130
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "name": "i",
                              "scope": 3185,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "value": null,
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint256",
                                  "type": "uint256"
                                },
                                "id": 3129,
                                "name": "ElementaryTypeName",
                                "src": "8736:7:6"
                              }
                            ],
                            "id": 3130,
                            "name": "VariableDeclaration",
                            "src": "8736:9:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 3131,
                            "name": "Literal",
                            "src": "8748:1:6"
                          }
                        ],
                        "id": 3132,
                        "name": "VariableDeclarationStatement",
                        "src": "8736:13:6"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3130,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 3133,
                            "name": "Identifier",
                            "src": "8751:1:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3120,
                              "type": "uint256",
                              "value": "vs"
                            },
                            "id": 3134,
                            "name": "Identifier",
                            "src": "8755:2:6"
                          }
                        ],
                        "id": 3135,
                        "name": "BinaryOperation",
                        "src": "8751:6:6"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "=",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3130,
                                  "type": "uint256",
                                  "value": "i"
                                },
                                "id": 3136,
                                "name": "Identifier",
                                "src": "8759:1:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "add",
                                      "referencedDeclaration": 12065,
                                      "type": "function (uint256,uint256) pure returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3130,
                                          "type": "uint256",
                                          "value": "i"
                                        },
                                        "id": 3137,
                                        "name": "Identifier",
                                        "src": "8763:1:6"
                                      }
                                    ],
                                    "id": 3138,
                                    "name": "MemberAccess",
                                    "src": "8763:5:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 3139,
                                    "name": "Literal",
                                    "src": "8769:1:6"
                                  }
                                ],
                                "id": 3140,
                                "name": "FunctionCall",
                                "src": "8763:8:6"
                              }
                            ],
                            "id": 3141,
                            "name": "Assignment",
                            "src": "8759:12:6"
                          }
                        ],
                        "id": 3142,
                        "name": "ExpressionStatement",
                        "src": "8759:12:6"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                3144
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "name": "v",
                                  "scope": 3185,
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "type": "struct TokenManager.TokenVesting storage pointer",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "contractScope": null,
                                      "name": "TokenVesting",
                                      "referencedDeclaration": 2618,
                                      "type": "struct TokenManager.TokenVesting storage pointer"
                                    },
                                    "id": 3143,
                                    "name": "UserDefinedTypeName",
                                    "src": "8787:12:6"
                                  }
                                ],
                                "id": 3144,
                                "name": "VariableDeclaration",
                                "src": "8787:22:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct TokenManager.TokenVesting storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "struct TokenManager.TokenVesting storage ref[] storage ref"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2623,
                                          "type": "mapping(address => struct TokenManager.TokenVesting storage ref[] storage ref)",
                                          "value": "vestings"
                                        },
                                        "id": 3145,
                                        "name": "Identifier",
                                        "src": "8812:8:6"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3112,
                                          "type": "address",
                                          "value": "_holder"
                                        },
                                        "id": 3146,
                                        "name": "Identifier",
                                        "src": "8821:7:6"
                                      }
                                    ],
                                    "id": 3147,
                                    "name": "IndexAccess",
                                    "src": "8812:17:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3130,
                                      "type": "uint256",
                                      "value": "i"
                                    },
                                    "id": 3148,
                                    "name": "Identifier",
                                    "src": "8830:1:6"
                                  }
                                ],
                                "id": 3149,
                                "name": "IndexAccess",
                                "src": "8812:20:6"
                              }
                            ],
                            "id": 3150,
                            "name": "VariableDeclarationStatement",
                            "src": "8787:45:6"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                3152
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "name": "nonTransferable",
                                  "scope": 3185,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint",
                                      "type": "uint256"
                                    },
                                    "id": 3151,
                                    "name": "ElementaryTypeName",
                                    "src": "8846:4:6"
                                  }
                                ],
                                "id": 3152,
                                "name": "VariableDeclaration",
                                "src": "8846:20:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        },
                                        {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        },
                                        {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        },
                                        {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3239,
                                      "type": "function (uint256,uint256,uint256,uint256,uint256) pure returns (uint256)",
                                      "value": "calculateNonVestedTokens"
                                    },
                                    "id": 3153,
                                    "name": "Identifier",
                                    "src": "8869:24:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "amount",
                                      "referencedDeclaration": 2609,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3144,
                                          "type": "struct TokenManager.TokenVesting storage pointer",
                                          "value": "v"
                                        },
                                        "id": 3154,
                                        "name": "Identifier",
                                        "src": "8911:1:6"
                                      }
                                    ],
                                    "id": 3155,
                                    "name": "MemberAccess",
                                    "src": "8911:8:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint64",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint64)",
                                          "value": "uint64"
                                        },
                                        "id": 3156,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "8937:6:6"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3114,
                                          "type": "uint256",
                                          "value": "_time"
                                        },
                                        "id": 3157,
                                        "name": "Identifier",
                                        "src": "8944:5:6"
                                      }
                                    ],
                                    "id": 3158,
                                    "name": "FunctionCall",
                                    "src": "8937:13:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "start",
                                      "referencedDeclaration": 2611,
                                      "type": "uint64"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3144,
                                          "type": "struct TokenManager.TokenVesting storage pointer",
                                          "value": "v"
                                        },
                                        "id": 3159,
                                        "name": "Identifier",
                                        "src": "8968:1:6"
                                      }
                                    ],
                                    "id": 3160,
                                    "name": "MemberAccess",
                                    "src": "8968:7:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "cliff",
                                      "referencedDeclaration": 2613,
                                      "type": "uint64"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3144,
                                          "type": "struct TokenManager.TokenVesting storage pointer",
                                          "value": "v"
                                        },
                                        "id": 3161,
                                        "name": "Identifier",
                                        "src": "8993:1:6"
                                      }
                                    ],
                                    "id": 3162,
                                    "name": "MemberAccess",
                                    "src": "8993:7:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "vesting",
                                      "referencedDeclaration": 2615,
                                      "type": "uint64"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3144,
                                          "type": "struct TokenManager.TokenVesting storage pointer",
                                          "value": "v"
                                        },
                                        "id": 3163,
                                        "name": "Identifier",
                                        "src": "9018:1:6"
                                      }
                                    ],
                                    "id": 3164,
                                    "name": "MemberAccess",
                                    "src": "9018:9:6"
                                  }
                                ],
                                "id": 3165,
                                "name": "FunctionCall",
                                "src": "8869:172:6"
                              }
                            ],
                            "id": 3166,
                            "name": "VariableDeclarationStatement",
                            "src": "8846:195:6"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3126,
                                      "type": "uint256",
                                      "value": "totalNonTransferable"
                                    },
                                    "id": 3167,
                                    "name": "Identifier",
                                    "src": "9055:20:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "add",
                                          "referencedDeclaration": 12065,
                                          "type": "function (uint256,uint256) pure returns (uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3126,
                                              "type": "uint256",
                                              "value": "totalNonTransferable"
                                            },
                                            "id": 3168,
                                            "name": "Identifier",
                                            "src": "9078:20:6"
                                          }
                                        ],
                                        "id": 3169,
                                        "name": "MemberAccess",
                                        "src": "9078:24:6"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3152,
                                          "type": "uint256",
                                          "value": "nonTransferable"
                                        },
                                        "id": 3170,
                                        "name": "Identifier",
                                        "src": "9103:15:6"
                                      }
                                    ],
                                    "id": 3171,
                                    "name": "FunctionCall",
                                    "src": "9078:41:6"
                                  }
                                ],
                                "id": 3172,
                                "name": "Assignment",
                                "src": "9055:64:6"
                              }
                            ],
                            "id": 3173,
                            "name": "ExpressionStatement",
                            "src": "9055:64:6"
                          }
                        ],
                        "id": 3174,
                        "name": "Block",
                        "src": "8773:357:6"
                      }
                    ],
                    "id": 3175,
                    "name": "ForStatement",
                    "src": "8731:399:6"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 3118
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sub",
                              "referencedDeclaration": 12041,
                              "type": "function (uint256,uint256) pure returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "balanceOf",
                                      "referencedDeclaration": 11141,
                                      "type": "function (address) view external returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2573,
                                          "type": "contract MiniMeToken",
                                          "value": "token"
                                        },
                                        "id": 3176,
                                        "name": "Identifier",
                                        "src": "9147:5:6"
                                      }
                                    ],
                                    "id": 3177,
                                    "name": "MemberAccess",
                                    "src": "9147:15:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3112,
                                      "type": "address",
                                      "value": "_holder"
                                    },
                                    "id": 3178,
                                    "name": "Identifier",
                                    "src": "9163:7:6"
                                  }
                                ],
                                "id": 3179,
                                "name": "FunctionCall",
                                "src": "9147:24:6"
                              }
                            ],
                            "id": 3180,
                            "name": "MemberAccess",
                            "src": "9147:28:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3126,
                              "type": "uint256",
                              "value": "totalNonTransferable"
                            },
                            "id": 3181,
                            "name": "Identifier",
                            "src": "9176:20:6"
                          }
                        ],
                        "id": 3182,
                        "name": "FunctionCall",
                        "src": "9147:50:6"
                      }
                    ],
                    "id": 3183,
                    "name": "Return",
                    "src": "9140:57:6"
                  }
                ],
                "id": 3184,
                "name": "Block",
                "src": "8630:574:6"
              }
            ],
            "id": 3185,
            "name": "FunctionDefinition",
            "src": "8539:665:6"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "calculateNonVestedTokens",
              "payable": false,
              "scope": 3350,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "private"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "tokens",
                      "scope": 3239,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3186,
                        "name": "ElementaryTypeName",
                        "src": "10189:7:6"
                      }
                    ],
                    "id": 3187,
                    "name": "VariableDeclaration",
                    "src": "10189:14:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "time",
                      "scope": 3239,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3188,
                        "name": "ElementaryTypeName",
                        "src": "10213:7:6"
                      }
                    ],
                    "id": 3189,
                    "name": "VariableDeclaration",
                    "src": "10213:12:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "start",
                      "scope": 3239,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3190,
                        "name": "ElementaryTypeName",
                        "src": "10235:7:6"
                      }
                    ],
                    "id": 3191,
                    "name": "VariableDeclaration",
                    "src": "10235:13:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "cliff",
                      "scope": 3239,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3192,
                        "name": "ElementaryTypeName",
                        "src": "10258:7:6"
                      }
                    ],
                    "id": 3193,
                    "name": "VariableDeclaration",
                    "src": "10258:13:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "vesting",
                      "scope": 3239,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3194,
                        "name": "ElementaryTypeName",
                        "src": "10281:7:6"
                      }
                    ],
                    "id": 3195,
                    "name": "VariableDeclaration",
                    "src": "10281:15:6"
                  }
                ],
                "id": 3196,
                "name": "ParameterList",
                "src": "10179:118:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3239,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3197,
                        "name": "ElementaryTypeName",
                        "src": "10320:7:6"
                      }
                    ],
                    "id": 3198,
                    "name": "VariableDeclaration",
                    "src": "10320:7:6"
                  }
                ],
                "id": 3199,
                "name": "ParameterList",
                "src": "10319:9:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3189,
                              "type": "uint256",
                              "value": "time"
                            },
                            "id": 3200,
                            "name": "Identifier",
                            "src": "10410:4:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3195,
                              "type": "uint256",
                              "value": "vesting"
                            },
                            "id": 3201,
                            "name": "Identifier",
                            "src": "10418:7:6"
                          }
                        ],
                        "id": 3202,
                        "name": "BinaryOperation",
                        "src": "10410:15:6"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 3199
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 3203,
                                "name": "Literal",
                                "src": "10448:1:6"
                              }
                            ],
                            "id": 3204,
                            "name": "Return",
                            "src": "10441:8:6"
                          }
                        ],
                        "id": 3205,
                        "name": "Block",
                        "src": "10427:33:6"
                      }
                    ],
                    "id": 3206,
                    "name": "IfStatement",
                    "src": "10406:54:6"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3189,
                              "type": "uint256",
                              "value": "time"
                            },
                            "id": 3207,
                            "name": "Identifier",
                            "src": "10473:4:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3193,
                              "type": "uint256",
                              "value": "cliff"
                            },
                            "id": 3208,
                            "name": "Identifier",
                            "src": "10480:5:6"
                          }
                        ],
                        "id": 3209,
                        "name": "BinaryOperation",
                        "src": "10473:12:6"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 3199
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3187,
                                  "type": "uint256",
                                  "value": "tokens"
                                },
                                "id": 3210,
                                "name": "Identifier",
                                "src": "10508:6:6"
                              }
                            ],
                            "id": 3211,
                            "name": "Return",
                            "src": "10501:13:6"
                          }
                        ],
                        "id": 3212,
                        "name": "Block",
                        "src": "10487:38:6"
                      }
                    ],
                    "id": 3213,
                    "name": "IfStatement",
                    "src": "10469:56:6"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        3215
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "vestedTokens",
                          "scope": 3239,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 3214,
                            "name": "ElementaryTypeName",
                            "src": "10793:7:6"
                          }
                        ],
                        "id": 3215,
                        "name": "VariableDeclaration",
                        "src": "10793:20:6"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "div",
                              "referencedDeclaration": 12021,
                              "type": "function (uint256,uint256) pure returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12066,
                                  "type": "type(library SafeMath)",
                                  "value": "SafeMath"
                                },
                                "id": 3216,
                                "name": "Identifier",
                                "src": "10816:8:6"
                              }
                            ],
                            "id": 3217,
                            "name": "MemberAccess",
                            "src": "10816:12:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "mul",
                                  "referencedDeclaration": 12003,
                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12066,
                                      "type": "type(library SafeMath)",
                                      "value": "SafeMath"
                                    },
                                    "id": 3218,
                                    "name": "Identifier",
                                    "src": "10842:8:6"
                                  }
                                ],
                                "id": 3219,
                                "name": "MemberAccess",
                                "src": "10842:12:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3187,
                                  "type": "uint256",
                                  "value": "tokens"
                                },
                                "id": 3220,
                                "name": "Identifier",
                                "src": "10872:6:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sub",
                                      "referencedDeclaration": 12041,
                                      "type": "function (uint256,uint256) pure returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12066,
                                          "type": "type(library SafeMath)",
                                          "value": "SafeMath"
                                        },
                                        "id": 3221,
                                        "name": "Identifier",
                                        "src": "10896:8:6"
                                      }
                                    ],
                                    "id": 3222,
                                    "name": "MemberAccess",
                                    "src": "10896:12:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3189,
                                      "type": "uint256",
                                      "value": "time"
                                    },
                                    "id": 3223,
                                    "name": "Identifier",
                                    "src": "10930:4:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3191,
                                      "type": "uint256",
                                      "value": "start"
                                    },
                                    "id": 3224,
                                    "name": "Identifier",
                                    "src": "10956:5:6"
                                  }
                                ],
                                "id": 3225,
                                "name": "FunctionCall",
                                "src": "10896:83:6"
                              }
                            ],
                            "id": 3226,
                            "name": "FunctionCall",
                            "src": "10842:151:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sub",
                                  "referencedDeclaration": 12041,
                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12066,
                                      "type": "type(library SafeMath)",
                                      "value": "SafeMath"
                                    },
                                    "id": 3227,
                                    "name": "Identifier",
                                    "src": "11007:8:6"
                                  }
                                ],
                                "id": 3228,
                                "name": "MemberAccess",
                                "src": "11007:12:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3195,
                                  "type": "uint256",
                                  "value": "vesting"
                                },
                                "id": 3229,
                                "name": "Identifier",
                                "src": "11037:7:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3191,
                                  "type": "uint256",
                                  "value": "start"
                                },
                                "id": 3230,
                                "name": "Identifier",
                                "src": "11062:5:6"
                              }
                            ],
                            "id": 3231,
                            "name": "FunctionCall",
                            "src": "11007:74:6"
                          }
                        ],
                        "id": 3232,
                        "name": "FunctionCall",
                        "src": "10816:275:6"
                      }
                    ],
                    "id": 3233,
                    "name": "VariableDeclarationStatement",
                    "src": "10793:298:6"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 3199
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "-",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3187,
                              "type": "uint256",
                              "value": "tokens"
                            },
                            "id": 3234,
                            "name": "Identifier",
                            "src": "11109:6:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3215,
                              "type": "uint256",
                              "value": "vestedTokens"
                            },
                            "id": 3235,
                            "name": "Identifier",
                            "src": "11118:12:6"
                          }
                        ],
                        "id": 3236,
                        "name": "BinaryOperation",
                        "src": "11109:21:6"
                      }
                    ],
                    "id": 3237,
                    "name": "Return",
                    "src": "11102:28:6"
                  }
                ],
                "id": 3238,
                "name": "Block",
                "src": "10333:804:6"
              }
            ],
            "id": 3239,
            "name": "FunctionDefinition",
            "src": "10146:991:6"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "_assign",
              "payable": false,
              "scope": 3350,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_receiver",
                      "scope": 3262,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3240,
                        "name": "ElementaryTypeName",
                        "src": "11160:7:6"
                      }
                    ],
                    "id": 3241,
                    "name": "VariableDeclaration",
                    "src": "11160:17:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 3262,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3242,
                        "name": "ElementaryTypeName",
                        "src": "11179:7:6"
                      }
                    ],
                    "id": 3243,
                    "name": "VariableDeclaration",
                    "src": "11179:15:6"
                  }
                ],
                "id": 3244,
                "name": "ParameterList",
                "src": "11159:36:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3245,
                "name": "ParameterList",
                "src": "11205:0:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 3246,
                            "name": "Identifier",
                            "src": "11215:7:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3084,
                                  "type": "function (address,uint256) view returns (bool)",
                                  "value": "isBalanceIncreaseAllowed"
                                },
                                "id": 3247,
                                "name": "Identifier",
                                "src": "11223:24:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3241,
                                  "type": "address",
                                  "value": "_receiver"
                                },
                                "id": 3248,
                                "name": "Identifier",
                                "src": "11248:9:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3243,
                                  "type": "uint256",
                                  "value": "_amount"
                                },
                                "id": 3249,
                                "name": "Identifier",
                                "src": "11259:7:6"
                              }
                            ],
                            "id": 3250,
                            "name": "FunctionCall",
                            "src": "11223:44:6"
                          }
                        ],
                        "id": 3251,
                        "name": "FunctionCall",
                        "src": "11215:53:6"
                      }
                    ],
                    "id": 3252,
                    "name": "ExpressionStatement",
                    "src": "11215:53:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 3253,
                            "name": "Identifier",
                            "src": "11278:7:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "transfer",
                                  "referencedDeclaration": 10966,
                                  "type": "function (address,uint256) external returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2573,
                                      "type": "contract MiniMeToken",
                                      "value": "token"
                                    },
                                    "id": 3254,
                                    "name": "Identifier",
                                    "src": "11286:5:6"
                                  }
                                ],
                                "id": 3255,
                                "name": "MemberAccess",
                                "src": "11286:14:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3241,
                                  "type": "address",
                                  "value": "_receiver"
                                },
                                "id": 3256,
                                "name": "Identifier",
                                "src": "11301:9:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3243,
                                  "type": "uint256",
                                  "value": "_amount"
                                },
                                "id": 3257,
                                "name": "Identifier",
                                "src": "11312:7:6"
                              }
                            ],
                            "id": 3258,
                            "name": "FunctionCall",
                            "src": "11286:34:6"
                          }
                        ],
                        "id": 3259,
                        "name": "FunctionCall",
                        "src": "11278:43:6"
                      }
                    ],
                    "id": 3260,
                    "name": "ExpressionStatement",
                    "src": "11278:43:6"
                  }
                ],
                "id": 3261,
                "name": "Block",
                "src": "11205:123:6"
              }
            ],
            "id": 3262,
            "name": "FunctionDefinition",
            "src": "11143:185:6"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "_mint",
              "payable": false,
              "scope": 3350,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_receiver",
                      "scope": 3281,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3263,
                        "name": "ElementaryTypeName",
                        "src": "11349:7:6"
                      }
                    ],
                    "id": 3264,
                    "name": "VariableDeclaration",
                    "src": "11349:17:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 3281,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3265,
                        "name": "ElementaryTypeName",
                        "src": "11368:7:6"
                      }
                    ],
                    "id": 3266,
                    "name": "VariableDeclaration",
                    "src": "11368:15:6"
                  }
                ],
                "id": 3267,
                "name": "ParameterList",
                "src": "11348:36:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3268,
                "name": "ParameterList",
                "src": "11394:0:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "generateTokens",
                              "referencedDeclaration": 11492,
                              "type": "function (address,uint256) external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2573,
                                  "type": "contract MiniMeToken",
                                  "value": "token"
                                },
                                "id": 3269,
                                "name": "Identifier",
                                "src": "11404:5:6"
                              }
                            ],
                            "id": 3271,
                            "name": "MemberAccess",
                            "src": "11404:20:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3264,
                              "type": "address",
                              "value": "_receiver"
                            },
                            "id": 3272,
                            "name": "Identifier",
                            "src": "11425:9:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3266,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 3273,
                            "name": "Identifier",
                            "src": "11436:7:6"
                          }
                        ],
                        "id": 3274,
                        "name": "FunctionCall",
                        "src": "11404:40:6"
                      }
                    ],
                    "id": 3275,
                    "name": "ExpressionStatement",
                    "src": "11404:40:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3308,
                              "type": "function (address)",
                              "value": "_logHolderIfNeeded"
                            },
                            "id": 3276,
                            "name": "Identifier",
                            "src": "11501:18:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3264,
                              "type": "address",
                              "value": "_receiver"
                            },
                            "id": 3277,
                            "name": "Identifier",
                            "src": "11520:9:6"
                          }
                        ],
                        "id": 3278,
                        "name": "FunctionCall",
                        "src": "11501:29:6"
                      }
                    ],
                    "id": 3279,
                    "name": "ExpressionStatement",
                    "src": "11501:29:6"
                  }
                ],
                "id": 3280,
                "name": "Block",
                "src": "11394:143:6"
              }
            ],
            "id": 3281,
            "name": "FunctionDefinition",
            "src": "11334:203:6"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "_logHolderIfNeeded",
              "payable": false,
              "scope": 3350,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_newHolder",
                      "scope": 3308,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3282,
                        "name": "ElementaryTypeName",
                        "src": "11571:7:6"
                      }
                    ],
                    "id": 3283,
                    "name": "VariableDeclaration",
                    "src": "11571:18:6"
                  }
                ],
                "id": 3284,
                "name": "ParameterList",
                "src": "11570:20:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3285,
                "name": "ParameterList",
                "src": "11600:0:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "||",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!",
                              "prefix": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2579,
                                  "type": "bool",
                                  "value": "logHolders"
                                },
                                "id": 3286,
                                "name": "Identifier",
                                "src": "11712:10:6"
                              }
                            ],
                            "id": 3287,
                            "name": "UnaryOperation",
                            "src": "11711:11:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2627,
                                  "type": "mapping(address => bool)",
                                  "value": "everHeld"
                                },
                                "id": 3288,
                                "name": "Identifier",
                                "src": "11726:8:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3283,
                                  "type": "address",
                                  "value": "_newHolder"
                                },
                                "id": 3289,
                                "name": "Identifier",
                                "src": "11735:10:6"
                              }
                            ],
                            "id": 3290,
                            "name": "IndexAccess",
                            "src": "11726:20:6"
                          }
                        ],
                        "id": 3291,
                        "name": "BinaryOperation",
                        "src": "11711:35:6"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "expression": null,
                              "functionReturnParameters": 3285
                            },
                            "id": 3292,
                            "name": "Return",
                            "src": "11762:7:6"
                          }
                        ],
                        "id": 3293,
                        "name": "Block",
                        "src": "11748:31:6"
                      }
                    ],
                    "id": 3294,
                    "name": "IfStatement",
                    "src": "11707:72:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2627,
                                  "type": "mapping(address => bool)",
                                  "value": "everHeld"
                                },
                                "id": 3295,
                                "name": "Identifier",
                                "src": "11789:8:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3283,
                                  "type": "address",
                                  "value": "_newHolder"
                                },
                                "id": 3296,
                                "name": "Identifier",
                                "src": "11798:10:6"
                              }
                            ],
                            "id": 3297,
                            "name": "IndexAccess",
                            "src": "11789:20:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "74727565",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "bool",
                              "type": "bool",
                              "value": "true"
                            },
                            "id": 3298,
                            "name": "Literal",
                            "src": "11812:4:6"
                          }
                        ],
                        "id": 3299,
                        "name": "Assignment",
                        "src": "11789:27:6"
                      }
                    ],
                    "id": 3300,
                    "name": "ExpressionStatement",
                    "src": "11789:27:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "push",
                              "referencedDeclaration": null,
                              "type": "function (address) returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2630,
                                  "type": "address[] storage ref",
                                  "value": "holders"
                                },
                                "id": 3301,
                                "name": "Identifier",
                                "src": "11826:7:6"
                              }
                            ],
                            "id": 3303,
                            "name": "MemberAccess",
                            "src": "11826:12:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3283,
                              "type": "address",
                              "value": "_newHolder"
                            },
                            "id": 3304,
                            "name": "Identifier",
                            "src": "11839:10:6"
                          }
                        ],
                        "id": 3305,
                        "name": "FunctionCall",
                        "src": "11826:24:6"
                      }
                    ],
                    "id": 3306,
                    "name": "ExpressionStatement",
                    "src": "11826:24:6"
                  }
                ],
                "id": 3307,
                "name": "Block",
                "src": "11600:257:6"
              }
            ],
            "id": 3308,
            "name": "FunctionDefinition",
            "src": "11543:314:6"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "proxyPayment",
              "payable": true,
              "scope": 3350,
              "stateMutability": "payable",
              "superFunction": 10777,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_owner",
                      "scope": 3329,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3309,
                        "name": "ElementaryTypeName",
                        "src": "12112:7:6"
                      }
                    ],
                    "id": 3310,
                    "name": "VariableDeclaration",
                    "src": "12112:14:6"
                  }
                ],
                "id": 3311,
                "name": "ParameterList",
                "src": "12111:16:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3329,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3312,
                        "name": "ElementaryTypeName",
                        "src": "12152:4:6"
                      }
                    ],
                    "id": 3313,
                    "name": "VariableDeclaration",
                    "src": "12152:4:6"
                  }
                ],
                "id": 3314,
                "name": "ParameterList",
                "src": "12151:6:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 3315,
                            "name": "Identifier",
                            "src": "12314:7:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12590,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 3316,
                                    "name": "Identifier",
                                    "src": "12322:3:6"
                                  }
                                ],
                                "id": 3317,
                                "name": "MemberAccess",
                                "src": "12322:10:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MiniMeToken_$11873",
                                          "typeString": "contract MiniMeToken"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 3318,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "12336:7:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2573,
                                      "type": "contract MiniMeToken",
                                      "value": "token"
                                    },
                                    "id": 3319,
                                    "name": "Identifier",
                                    "src": "12344:5:6"
                                  }
                                ],
                                "id": 3320,
                                "name": "FunctionCall",
                                "src": "12336:14:6"
                              }
                            ],
                            "id": 3321,
                            "name": "BinaryOperation",
                            "src": "12322:28:6"
                          }
                        ],
                        "id": 3322,
                        "name": "FunctionCall",
                        "src": "12314:37:6"
                      }
                    ],
                    "id": 3323,
                    "name": "ExpressionStatement",
                    "src": "12314:37:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 3310,
                          "type": "address",
                          "value": "_owner"
                        },
                        "id": 3324,
                        "name": "Identifier",
                        "src": "12361:6:6"
                      }
                    ],
                    "id": 3325,
                    "name": "ExpressionStatement",
                    "src": "12361:6:6"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 3314
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "66616c7365",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "false"
                        },
                        "id": 3326,
                        "name": "Literal",
                        "src": "12384:5:6"
                      }
                    ],
                    "id": 3327,
                    "name": "Return",
                    "src": "12377:12:6"
                  }
                ],
                "id": 3328,
                "name": "Block",
                "src": "12158:238:6"
              }
            ],
            "id": 3329,
            "name": "FunctionDefinition",
            "src": "12090:306:6"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "onApprove",
              "payable": false,
              "scope": 3350,
              "stateMutability": "nonpayable",
              "superFunction": 10799,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_owner",
                      "scope": 3349,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3330,
                        "name": "ElementaryTypeName",
                        "src": "12778:7:6"
                      }
                    ],
                    "id": 3331,
                    "name": "VariableDeclaration",
                    "src": "12778:14:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_spender",
                      "scope": 3349,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3332,
                        "name": "ElementaryTypeName",
                        "src": "12794:7:6"
                      }
                    ],
                    "id": 3333,
                    "name": "VariableDeclaration",
                    "src": "12794:16:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 3349,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3334,
                        "name": "ElementaryTypeName",
                        "src": "12812:4:6"
                      }
                    ],
                    "id": 3335,
                    "name": "VariableDeclaration",
                    "src": "12812:12:6"
                  }
                ],
                "id": 3336,
                "name": "ParameterList",
                "src": "12777:48:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3349,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3337,
                        "name": "ElementaryTypeName",
                        "src": "12842:4:6"
                      }
                    ],
                    "id": 3338,
                    "name": "VariableDeclaration",
                    "src": "12842:4:6"
                  }
                ],
                "id": 3339,
                "name": "ParameterList",
                "src": "12841:6:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 3331,
                          "type": "address",
                          "value": "_owner"
                        },
                        "id": 3340,
                        "name": "Identifier",
                        "src": "12858:6:6"
                      }
                    ],
                    "id": 3341,
                    "name": "ExpressionStatement",
                    "src": "12858:6:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 3333,
                          "type": "address",
                          "value": "_spender"
                        },
                        "id": 3342,
                        "name": "Identifier",
                        "src": "12874:8:6"
                      }
                    ],
                    "id": 3343,
                    "name": "ExpressionStatement",
                    "src": "12874:8:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 3335,
                          "type": "uint256",
                          "value": "_amount"
                        },
                        "id": 3344,
                        "name": "Identifier",
                        "src": "12892:7:6"
                      }
                    ],
                    "id": 3345,
                    "name": "ExpressionStatement",
                    "src": "12892:7:6"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 3339
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 3346,
                        "name": "Literal",
                        "src": "12916:4:6"
                      }
                    ],
                    "id": 3347,
                    "name": "Return",
                    "src": "12909:11:6"
                  }
                ],
                "id": 3348,
                "name": "Block",
                "src": "12848:79:6"
              }
            ],
            "id": 3349,
            "name": "FunctionDefinition",
            "src": "12759:168:6"
          }
        ],
        "id": 3350,
        "name": "ContractDefinition",
        "src": "431:12498:6"
      }
    ],
    "id": 3351,
    "name": "SourceUnit",
    "src": "0:12930:6"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-03-14T08:41:25.075Z"
}