{
  "contractName": "ApproveAndCallFallBack",
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "from",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        },
        {
          "name": "_token",
          "type": "address"
        },
        {
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "receiveApproval",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "pragma solidity ^0.4.6;\n\n/*\n    Copyright 2016, Jordi Baylina\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program.  If not, see <http://www.gnu.org/licenses/>.\n */\n\n/// @title MiniMeToken Contract\n/// @author Jordi Baylina\n/// @dev This token contract's goal is to make it easy for anyone to clone this\n///  token using the token distribution at a given block, this will allow DAO's\n///  and DApps to upgrade their features in a decentralized manner without\n///  affecting the original token\n/// @dev It is ERC20 compliant, but still needs to under go further testing.\n\nimport \"./ITokenController.sol\";\n\ncontract Controlled {\n    /// @notice The address of the controller is the only address that can call\n    ///  a function with this modifier\n    modifier onlyController {\n        require(msg.sender == controller);\n        _;\n    }\n\n    address public controller;\n\n    function Controlled()  public { controller = msg.sender;}\n\n    /// @notice Changes the controller of the contract\n    /// @param _newController The new controller of the contract\n    function changeController(address _newController) onlyController  public {\n        controller = _newController;\n    }\n}\n\ncontract ApproveAndCallFallBack {\n    function receiveApproval(\n        address from,\n        uint256 _amount,\n        address _token,\n        bytes _data\n    ) public;\n}\n\n/// @dev The actual token contract, the default controller is the msg.sender\n///  that deploys the contract, so usually this token will be deployed by a\n///  token controller contract, which Giveth will call a \"Campaign\"\ncontract MiniMeToken is Controlled {\n\n    string public name;                //The Token's name: e.g. DigixDAO Tokens\n    uint8 public decimals;             //Number of decimals of the smallest unit\n    string public symbol;              //An identifier: e.g. REP\n    string public version = \"MMT_0.1\"; //An arbitrary versioning scheme\n\n\n    /// @dev `Checkpoint` is the structure that attaches a block number to a\n    ///  given value, the block number attached is the one that last changed the\n    ///  value\n    struct Checkpoint {\n\n        // `fromBlock` is the block number that the value was generated from\n        uint128 fromBlock;\n\n        // `value` is the amount of tokens at a specific block number\n        uint128 value;\n    }\n\n    // `parentToken` is the Token address that was cloned to produce this token;\n    //  it will be 0x0 for a token that was not cloned\n    MiniMeToken public parentToken;\n\n    // `parentSnapShotBlock` is the block number from the Parent Token that was\n    //  used to determine the initial distribution of the Clone Token\n    uint public parentSnapShotBlock;\n\n    // `creationBlock` is the block number that the Clone Token was created\n    uint public creationBlock;\n\n    // `balances` is the map that tracks the balance of each address, in this\n    //  contract when the balance changes the block number that the change\n    //  occurred is also included in the map\n    mapping (address => Checkpoint[]) balances;\n\n    // `allowed` tracks any extra transfer rights as in all ERC20 tokens\n    mapping (address => mapping (address => uint256)) allowed;\n\n    // Tracks the history of the `totalSupply` of the token\n    Checkpoint[] totalSupplyHistory;\n\n    // Flag that determines if the token is transferable or not.\n    bool public transfersEnabled;\n\n    // The factory used to create new clone tokens\n    MiniMeTokenFactory public tokenFactory;\n\n////////////////\n// Constructor\n////////////////\n\n    /// @notice Constructor to create a MiniMeToken\n    /// @param _tokenFactory The address of the MiniMeTokenFactory contract that\n    ///  will create the Clone token contracts, the token factory needs to be\n    ///  deployed first\n    /// @param _parentToken Address of the parent token, set to 0x0 if it is a\n    ///  new token\n    /// @param _parentSnapShotBlock Block of the parent token that will\n    ///  determine the initial distribution of the clone token, set to 0 if it\n    ///  is a new token\n    /// @param _tokenName Name of the new token\n    /// @param _decimalUnits Number of decimals of the new token\n    /// @param _tokenSymbol Token Symbol for the new token\n    /// @param _transfersEnabled If true, tokens will be able to be transferred\n    function MiniMeToken(\n        address _tokenFactory,\n        address _parentToken,\n        uint _parentSnapShotBlock,\n        string _tokenName,\n        uint8 _decimalUnits,\n        string _tokenSymbol,\n        bool _transfersEnabled\n    )  public\n    {\n        tokenFactory = MiniMeTokenFactory(_tokenFactory);\n        name = _tokenName;                                 // Set the name\n        decimals = _decimalUnits;                          // Set the decimals\n        symbol = _tokenSymbol;                             // Set the symbol\n        parentToken = MiniMeToken(_parentToken);\n        parentSnapShotBlock = _parentSnapShotBlock;\n        transfersEnabled = _transfersEnabled;\n        creationBlock = block.number;\n    }\n\n\n///////////////////\n// ERC20 Methods\n///////////////////\n\n    /// @notice Send `_amount` tokens to `_to` from `msg.sender`\n    /// @param _to The address of the recipient\n    /// @param _amount The amount of tokens to be transferred\n    /// @return Whether the transfer was successful or not\n    function transfer(address _to, uint256 _amount) public returns (bool success) {\n        require(transfersEnabled);\n        return doTransfer(msg.sender, _to, _amount);\n    }\n\n    /// @notice Send `_amount` tokens to `_to` from `_from` on the condition it\n    ///  is approved by `_from`\n    /// @param _from The address holding the tokens being transferred\n    /// @param _to The address of the recipient\n    /// @param _amount The amount of tokens to be transferred\n    /// @return True if the transfer was successful\n    function transferFrom(address _from, address _to, uint256 _amount) public returns (bool success) {\n\n        // The controller of this contract can move tokens around at will,\n        //  this is important to recognize! Confirm that you trust the\n        //  controller of this contract, which in most situations should be\n        //  another open source smart contract or 0x0\n        if (msg.sender != controller) {\n            require(transfersEnabled);\n\n            // The standard ERC 20 transferFrom functionality\n            if (allowed[_from][msg.sender] < _amount)\n                return false;\n            allowed[_from][msg.sender] -= _amount;\n        }\n        return doTransfer(_from, _to, _amount);\n    }\n\n    /// @dev This is the actual transfer function in the token contract, it can\n    ///  only be called by other functions in this contract.\n    /// @param _from The address holding the tokens being transferred\n    /// @param _to The address of the recipient\n    /// @param _amount The amount of tokens to be transferred\n    /// @return True if the transfer was successful\n    function doTransfer(address _from, address _to, uint _amount) internal returns(bool) {\n        if (_amount == 0) {\n            return true;\n        }\n        require(parentSnapShotBlock < block.number);\n        // Do not allow transfer to 0x0 or the token contract itself\n        require((_to != 0) && (_to != address(this)));\n        // If the amount being transfered is more than the balance of the\n        //  account the transfer returns false\n        var previousBalanceFrom = balanceOfAt(_from, block.number);\n        if (previousBalanceFrom < _amount) {\n            return false;\n        }\n        // Alerts the token controller of the transfer\n        if (isContract(controller)) {\n            // Adding the ` == true` makes the linter shut up so...\n            require(ITokenController(controller).onTransfer(_from, _to, _amount) == true);\n        }\n        // First update the balance array with the new value for the address\n        //  sending the tokens\n        updateValueAtNow(balances[_from], previousBalanceFrom - _amount);\n        // Then update the balance array with the new value for the address\n        //  receiving the tokens\n        var previousBalanceTo = balanceOfAt(_to, block.number);\n        require(previousBalanceTo + _amount >= previousBalanceTo); // Check for overflow\n        updateValueAtNow(balances[_to], previousBalanceTo + _amount);\n        // An event to make the transfer easy to find on the blockchain\n        Transfer(_from, _to, _amount);\n        return true;\n    }\n\n    /// @param _owner The address that's balance is being requested\n    /// @return The balance of `_owner` at the current block\n    function balanceOf(address _owner) public constant returns (uint256 balance) {\n        return balanceOfAt(_owner, block.number);\n    }\n\n    /// @notice `msg.sender` approves `_spender` to spend `_amount` tokens on\n    ///  its behalf. This is a modified version of the ERC20 approve function\n    ///  to be a little bit safer\n    /// @param _spender The address of the account able to transfer the tokens\n    /// @param _amount The amount of tokens to be approved for transfer\n    /// @return True if the approval was successful\n    function approve(address _spender, uint256 _amount) public returns (bool success) {\n        require(transfersEnabled);\n\n        // To change the approve amount you first have to reduce the addresses`\n        //  allowance to zero by calling `approve(_spender,0)` if it is not\n        //  already 0 to mitigate the race condition described here:\n        //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n        require((_amount == 0) || (allowed[msg.sender][_spender] == 0));\n\n        // Alerts the token controller of the approve function call\n        if (isContract(controller)) {\n            // Adding the ` == true` makes the linter shut up so...\n            require(ITokenController(controller).onApprove(msg.sender, _spender, _amount) == true);\n        }\n\n        allowed[msg.sender][_spender] = _amount;\n        Approval(msg.sender, _spender, _amount);\n        return true;\n    }\n\n    /// @dev This function makes it easy to read the `allowed[]` map\n    /// @param _owner The address of the account that owns the token\n    /// @param _spender The address of the account able to transfer the tokens\n    /// @return Amount of remaining tokens of _owner that _spender is allowed\n    ///  to spend\n    function allowance(address _owner, address _spender) public constant returns (uint256 remaining) {\n        return allowed[_owner][_spender];\n    }\n\n    /// @notice `msg.sender` approves `_spender` to send `_amount` tokens on\n    ///  its behalf, and then a function is triggered in the contract that is\n    ///  being approved, `_spender`. This allows users to use their tokens to\n    ///  interact with contracts in one function call instead of two\n    /// @param _spender The address of the contract able to transfer the tokens\n    /// @param _amount The amount of tokens to be approved for transfer\n    /// @return True if the function call was successful\n    function approveAndCall(address _spender, uint256 _amount, bytes _extraData) public returns (bool success) {\n        require(approve(_spender, _amount));\n\n        ApproveAndCallFallBack(_spender).receiveApproval(\n            msg.sender,\n            _amount,\n            this,\n            _extraData\n        );\n\n        return true;\n    }\n\n    /// @dev This function makes it easy to get the total number of tokens\n    /// @return The total number of tokens\n    function totalSupply() public constant returns (uint) {\n        return totalSupplyAt(block.number);\n    }\n\n\n////////////////\n// Query balance and totalSupply in History\n////////////////\n\n    /// @dev Queries the balance of `_owner` at a specific `_blockNumber`\n    /// @param _owner The address from which the balance will be retrieved\n    /// @param _blockNumber The block number when the balance is queried\n    /// @return The balance at `_blockNumber`\n    function balanceOfAt(address _owner, uint _blockNumber) public constant returns (uint) {\n\n        // These next few lines are used when the balance of the token is\n        //  requested before a check point was ever created for this token, it\n        //  requires that the `parentToken.balanceOfAt` be queried at the\n        //  genesis block for that token as this contains initial balance of\n        //  this token\n        if ((balances[_owner].length == 0) || (balances[_owner][0].fromBlock > _blockNumber)) {\n            if (address(parentToken) != 0) {\n                return parentToken.balanceOfAt(_owner, min(_blockNumber, parentSnapShotBlock));\n            } else {\n                // Has no parent\n                return 0;\n            }\n\n        // This will return the expected balance during normal situations\n        } else {\n            return getValueAt(balances[_owner], _blockNumber);\n        }\n    }\n\n    /// @notice Total amount of tokens at a specific `_blockNumber`.\n    /// @param _blockNumber The block number when the totalSupply is queried\n    /// @return The total amount of tokens at `_blockNumber`\n    function totalSupplyAt(uint _blockNumber) public constant returns(uint) {\n\n        // These next few lines are used when the totalSupply of the token is\n        //  requested before a check point was ever created for this token, it\n        //  requires that the `parentToken.totalSupplyAt` be queried at the\n        //  genesis block for this token as that contains totalSupply of this\n        //  token at this block number.\n        if ((totalSupplyHistory.length == 0) || (totalSupplyHistory[0].fromBlock > _blockNumber)) {\n            if (address(parentToken) != 0) {\n                return parentToken.totalSupplyAt(min(_blockNumber, parentSnapShotBlock));\n            } else {\n                return 0;\n            }\n\n        // This will return the expected totalSupply during normal situations\n        } else {\n            return getValueAt(totalSupplyHistory, _blockNumber);\n        }\n    }\n\n////////////////\n// Clone Token Method\n////////////////\n\n    /// @notice Creates a new clone token with the initial distribution being\n    ///  this token at `_snapshotBlock`\n    /// @param _cloneTokenName Name of the clone token\n    /// @param _cloneDecimalUnits Number of decimals of the smallest unit\n    /// @param _cloneTokenSymbol Symbol of the clone token\n    /// @param _snapshotBlock Block when the distribution of the parent token is\n    ///  copied to set the initial distribution of the new clone token;\n    ///  if the block is zero than the actual block, the current block is used\n    /// @param _transfersEnabled True if transfers are allowed in the clone\n    /// @return The address of the new MiniMeToken Contract\n    function createCloneToken(\n        string _cloneTokenName,\n        uint8 _cloneDecimalUnits,\n        string _cloneTokenSymbol,\n        uint _snapshotBlock,\n        bool _transfersEnabled\n    ) public returns(address)\n    {\n        uint256 snapshot = _snapshotBlock == 0 ? block.number - 1 : _snapshotBlock;\n\n        MiniMeToken cloneToken = tokenFactory.createCloneToken(\n            this,\n            snapshot,\n            _cloneTokenName,\n            _cloneDecimalUnits,\n            _cloneTokenSymbol,\n            _transfersEnabled\n        );\n\n        cloneToken.changeController(msg.sender);\n\n        // An event to make the token easy to find on the blockchain\n        NewCloneToken(address(cloneToken), snapshot);\n        return address(cloneToken);\n    }\n\n////////////////\n// Generate and destroy tokens\n////////////////\n\n    /// @notice Generates `_amount` tokens that are assigned to `_owner`\n    /// @param _owner The address that will be assigned the new tokens\n    /// @param _amount The quantity of tokens generated\n    /// @return True if the tokens are generated correctly\n    function generateTokens(address _owner, uint _amount) onlyController public returns (bool) {\n        uint curTotalSupply = totalSupply();\n        require(curTotalSupply + _amount >= curTotalSupply); // Check for overflow\n        uint previousBalanceTo = balanceOf(_owner);\n        require(previousBalanceTo + _amount >= previousBalanceTo); // Check for overflow\n        updateValueAtNow(totalSupplyHistory, curTotalSupply + _amount);\n        updateValueAtNow(balances[_owner], previousBalanceTo + _amount);\n        Transfer(0, _owner, _amount);\n        return true;\n    }\n\n\n    /// @notice Burns `_amount` tokens from `_owner`\n    /// @param _owner The address that will lose the tokens\n    /// @param _amount The quantity of tokens to burn\n    /// @return True if the tokens are burned correctly\n    function destroyTokens(address _owner, uint _amount) onlyController public returns (bool) {\n        uint curTotalSupply = totalSupply();\n        require(curTotalSupply >= _amount);\n        uint previousBalanceFrom = balanceOf(_owner);\n        require(previousBalanceFrom >= _amount);\n        updateValueAtNow(totalSupplyHistory, curTotalSupply - _amount);\n        updateValueAtNow(balances[_owner], previousBalanceFrom - _amount);\n        Transfer(_owner, 0, _amount);\n        return true;\n    }\n\n////////////////\n// Enable tokens transfers\n////////////////\n\n\n    /// @notice Enables token holders to transfer their tokens freely if true\n    /// @param _transfersEnabled True if transfers are allowed in the clone\n    function enableTransfers(bool _transfersEnabled) onlyController public {\n        transfersEnabled = _transfersEnabled;\n    }\n\n////////////////\n// Internal helper functions to query and set a value in a snapshot array\n////////////////\n\n    /// @dev `getValueAt` retrieves the number of tokens at a given block number\n    /// @param checkpoints The history of values being queried\n    /// @param _block The block number to retrieve the value at\n    /// @return The number of tokens being queried\n    function getValueAt(Checkpoint[] storage checkpoints, uint _block) constant internal returns (uint) {\n        if (checkpoints.length == 0)\n            return 0;\n\n        // Shortcut for the actual value\n        if (_block >= checkpoints[checkpoints.length-1].fromBlock)\n            return checkpoints[checkpoints.length-1].value;\n        if (_block < checkpoints[0].fromBlock)\n            return 0;\n\n        // Binary search of the value in the array\n        uint min = 0;\n        uint max = checkpoints.length-1;\n        while (max > min) {\n            uint mid = (max + min + 1) / 2;\n            if (checkpoints[mid].fromBlock<=_block) {\n                min = mid;\n            } else {\n                max = mid-1;\n            }\n        }\n        return checkpoints[min].value;\n    }\n\n    /// @dev `updateValueAtNow` used to update the `balances` map and the\n    ///  `totalSupplyHistory`\n    /// @param checkpoints The history of data being updated\n    /// @param _value The new number of tokens\n    function updateValueAtNow(Checkpoint[] storage checkpoints, uint _value) internal {\n        if ((checkpoints.length == 0) || (checkpoints[checkpoints.length - 1].fromBlock < block.number)) {\n            Checkpoint storage newCheckPoint = checkpoints[checkpoints.length++];\n            newCheckPoint.fromBlock = uint128(block.number);\n            newCheckPoint.value = uint128(_value);\n        } else {\n            Checkpoint storage oldCheckPoint = checkpoints[checkpoints.length - 1];\n            oldCheckPoint.value = uint128(_value);\n        }\n    }\n\n    /// @dev Internal function to determine if an address is a contract\n    /// @param _addr The address being queried\n    /// @return True if `_addr` is a contract\n    function isContract(address _addr) constant internal returns(bool) {\n        uint size;\n        if (_addr == 0)\n            return false;\n\n        assembly {\n            size := extcodesize(_addr)\n        }\n\n        return size>0;\n    }\n\n    /// @dev Helper function to return a min betwen the two uints\n    function min(uint a, uint b) internal returns (uint) {\n        return a < b ? a : b;\n    }\n\n    /// @notice The fallback function: If the contract's controller has not been\n    ///  set to 0, then the `proxyPayment` method is called which relays the\n    ///  ether and creates tokens as described in the token controller contract\n    function ()  payable  public {\n        require(isContract(controller));\n        // Adding the ` == true` makes the linter shut up so...\n        require(ITokenController(controller).proxyPayment.value(msg.value)(msg.sender) == true);\n    }\n\n//////////\n// Safety Methods\n//////////\n\n    /// @notice This method can be used by the controller to extract mistakenly\n    ///  sent tokens to this contract.\n    /// @param _token The address of the token contract that you want to recover\n    ///  set to 0 in case you want to extract ether.\n    function claimTokens(address _token) onlyController  public {\n        if (_token == 0x0) {\n            controller.transfer(this.balance);\n            return;\n        }\n\n        MiniMeToken token = MiniMeToken(_token);\n        uint balance = token.balanceOf(this);\n        token.transfer(controller, balance);\n        ClaimedTokens(_token, controller, balance);\n    }\n\n////////////////\n// Events\n////////////////\n    event ClaimedTokens(address indexed _token, address indexed _controller, uint _amount);\n    event Transfer(address indexed _from, address indexed _to, uint256 _amount);\n    event NewCloneToken(address indexed _cloneToken, uint _snapshotBlock);\n    event Approval(\n        address indexed _owner,\n        address indexed _spender,\n        uint256 _amount\n        );\n\n}\n\n\n////////////////\n// MiniMeTokenFactory\n////////////////\n\n/// @dev This contract is used to generate clone contracts from a contract.\n///  In solidity this is the way to create a contract from a contract of the\n///  same class\ncontract MiniMeTokenFactory {\n\n    /// @notice Update the DApp by creating a new token with new functionalities\n    ///  the msg.sender becomes the controller of this clone token\n    /// @param _parentToken Address of the token being cloned\n    /// @param _snapshotBlock Block of the parent token that will\n    ///  determine the initial distribution of the clone token\n    /// @param _tokenName Name of the new token\n    /// @param _decimalUnits Number of decimals of the new token\n    /// @param _tokenSymbol Token Symbol for the new token\n    /// @param _transfersEnabled If true, tokens will be able to be transferred\n    /// @return The address of the new token contract\n    function createCloneToken(\n        address _parentToken,\n        uint _snapshotBlock,\n        string _tokenName,\n        uint8 _decimalUnits,\n        string _tokenSymbol,\n        bool _transfersEnabled\n    ) public returns (MiniMeToken)\n    {\n        MiniMeToken newToken = new MiniMeToken(\n            this,\n            _parentToken,\n            _snapshotBlock,\n            _tokenName,\n            _decimalUnits,\n            _tokenSymbol,\n            _transfersEnabled\n        );\n\n        newToken.changeController(msg.sender);\n        return newToken;\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/lib/minime/MiniMeToken.sol",
  "ast": {
    "attributes": {
      "absolutePath": "@aragon/os/contracts/lib/minime/MiniMeToken.sol",
      "exportedSymbols": {
        "ApproveAndCallFallBack": [
          10850
        ],
        "Controlled": [
          10838
        ],
        "MiniMeToken": [
          11873
        ],
        "MiniMeTokenFactory": [
          11914
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.4",
            ".6"
          ]
        },
        "id": 10802,
        "name": "PragmaDirective",
        "src": "0:23:51"
      },
      {
        "attributes": {
          "SourceUnit": 10801,
          "absolutePath": "@aragon/os/contracts/lib/minime/ITokenController.sol",
          "file": "./ITokenController.sol",
          "scope": 11915,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 10803,
        "name": "ImportDirective",
        "src": "1125:32:51"
      },
      {
        "attributes": {
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            10838
          ],
          "name": "Controlled",
          "scope": 11915
        },
        "children": [
          {
            "attributes": {
              "name": "onlyController",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10804,
                "name": "ParameterList",
                "src": "1328:0:51"
              },
              {
                "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": 10805,
                            "name": "Identifier",
                            "src": "1338:7:51"
                          },
                          {
                            "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": 10806,
                                    "name": "Identifier",
                                    "src": "1346:3:51"
                                  }
                                ],
                                "id": 10807,
                                "name": "MemberAccess",
                                "src": "1346:10:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 10816,
                                  "type": "address",
                                  "value": "controller"
                                },
                                "id": 10808,
                                "name": "Identifier",
                                "src": "1360:10:51"
                              }
                            ],
                            "id": 10809,
                            "name": "BinaryOperation",
                            "src": "1346:24:51"
                          }
                        ],
                        "id": 10810,
                        "name": "FunctionCall",
                        "src": "1338:33:51"
                      }
                    ],
                    "id": 10811,
                    "name": "ExpressionStatement",
                    "src": "1338:33:51"
                  },
                  {
                    "id": 10812,
                    "name": "PlaceholderStatement",
                    "src": "1381:1:51"
                  }
                ],
                "id": 10813,
                "name": "Block",
                "src": "1328:61:51"
              }
            ],
            "id": 10814,
            "name": "ModifierDefinition",
            "src": "1304:85:51"
          },
          {
            "attributes": {
              "constant": false,
              "name": "controller",
              "scope": 10838,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "address",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "address",
                  "type": "address"
                },
                "id": 10815,
                "name": "ElementaryTypeName",
                "src": "1395:7:51"
              }
            ],
            "id": 10816,
            "name": "VariableDeclaration",
            "src": "1395:25:51"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": true,
              "modifiers": [
                null
              ],
              "name": "Controlled",
              "payable": false,
              "scope": 10838,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10817,
                "name": "ParameterList",
                "src": "1446:2:51"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10818,
                "name": "ParameterList",
                "src": "1457:0:51"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10816,
                              "type": "address",
                              "value": "controller"
                            },
                            "id": 10819,
                            "name": "Identifier",
                            "src": "1459:10:51"
                          },
                          {
                            "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": 10820,
                                "name": "Identifier",
                                "src": "1472:3:51"
                              }
                            ],
                            "id": 10821,
                            "name": "MemberAccess",
                            "src": "1472:10:51"
                          }
                        ],
                        "id": 10822,
                        "name": "Assignment",
                        "src": "1459:23:51"
                      }
                    ],
                    "id": 10823,
                    "name": "ExpressionStatement",
                    "src": "1459:23:51"
                  }
                ],
                "id": 10824,
                "name": "Block",
                "src": "1457:27:51"
              }
            ],
            "id": 10825,
            "name": "FunctionDefinition",
            "src": "1427:57:51"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "changeController",
              "payable": false,
              "scope": 10838,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_newController",
                      "scope": 10837,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 10826,
                        "name": "ElementaryTypeName",
                        "src": "1636:7:51"
                      }
                    ],
                    "id": 10827,
                    "name": "VariableDeclaration",
                    "src": "1636:22:51"
                  }
                ],
                "id": 10828,
                "name": "ParameterList",
                "src": "1635:24:51"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10831,
                "name": "ParameterList",
                "src": "1683:0:51"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 10814,
                      "type": "modifier ()",
                      "value": "onlyController"
                    },
                    "id": 10829,
                    "name": "Identifier",
                    "src": "1660:14:51"
                  }
                ],
                "id": 10830,
                "name": "ModifierInvocation",
                "src": "1660:14:51"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10816,
                              "type": "address",
                              "value": "controller"
                            },
                            "id": 10832,
                            "name": "Identifier",
                            "src": "1693:10:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10827,
                              "type": "address",
                              "value": "_newController"
                            },
                            "id": 10833,
                            "name": "Identifier",
                            "src": "1706:14:51"
                          }
                        ],
                        "id": 10834,
                        "name": "Assignment",
                        "src": "1693:27:51"
                      }
                    ],
                    "id": 10835,
                    "name": "ExpressionStatement",
                    "src": "1693:27:51"
                  }
                ],
                "id": 10836,
                "name": "Block",
                "src": "1683:44:51"
              }
            ],
            "id": 10837,
            "name": "FunctionDefinition",
            "src": "1610:117:51"
          }
        ],
        "id": 10838,
        "name": "ContractDefinition",
        "src": "1159:570:51"
      },
      {
        "attributes": {
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": false,
          "linearizedBaseContracts": [
            10850
          ],
          "name": "ApproveAndCallFallBack",
          "scope": 11915
        },
        "children": [
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "receiveApproval",
              "payable": false,
              "scope": 10850,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "from",
                      "scope": 10849,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 10839,
                        "name": "ElementaryTypeName",
                        "src": "1803:7:51"
                      }
                    ],
                    "id": 10840,
                    "name": "VariableDeclaration",
                    "src": "1803:12:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 10849,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 10841,
                        "name": "ElementaryTypeName",
                        "src": "1825:7:51"
                      }
                    ],
                    "id": 10842,
                    "name": "VariableDeclaration",
                    "src": "1825:15:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_token",
                      "scope": 10849,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 10843,
                        "name": "ElementaryTypeName",
                        "src": "1850:7:51"
                      }
                    ],
                    "id": 10844,
                    "name": "VariableDeclaration",
                    "src": "1850:14:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_data",
                      "scope": 10849,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 10845,
                        "name": "ElementaryTypeName",
                        "src": "1874:5:51"
                      }
                    ],
                    "id": 10846,
                    "name": "VariableDeclaration",
                    "src": "1874:11:51"
                  }
                ],
                "id": 10847,
                "name": "ParameterList",
                "src": "1793:98:51"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10848,
                "name": "ParameterList",
                "src": "1898:0:51"
              }
            ],
            "id": 10849,
            "name": "FunctionDefinition",
            "src": "1769:130:51"
          }
        ],
        "id": 10850,
        "name": "ContractDefinition",
        "src": "1731:170:51"
      },
      {
        "attributes": {
          "contractDependencies": [
            10838
          ],
          "contractKind": "contract",
          "documentation": "@dev The actual token contract, the default controller is the msg.sender\n  that deploys the contract, so usually this token will be deployed by a\n  token controller contract, which Giveth will call a \"Campaign\"",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            11873,
            10838
          ],
          "name": "MiniMeToken",
          "scope": 11915
        },
        "children": [
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "Controlled",
                  "referencedDeclaration": 10838,
                  "type": "contract Controlled"
                },
                "id": 10851,
                "name": "UserDefinedTypeName",
                "src": "2148:10:51"
              }
            ],
            "id": 10852,
            "name": "InheritanceSpecifier",
            "src": "2148:10:51"
          },
          {
            "attributes": {
              "constant": false,
              "name": "name",
              "scope": 11873,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "string storage ref",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "string",
                  "type": "string storage pointer"
                },
                "id": 10853,
                "name": "ElementaryTypeName",
                "src": "2166:6:51"
              }
            ],
            "id": 10854,
            "name": "VariableDeclaration",
            "src": "2166:18:51"
          },
          {
            "attributes": {
              "constant": false,
              "name": "decimals",
              "scope": 11873,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint8",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint8",
                  "type": "uint8"
                },
                "id": 10855,
                "name": "ElementaryTypeName",
                "src": "2246:5:51"
              }
            ],
            "id": 10856,
            "name": "VariableDeclaration",
            "src": "2246:21:51"
          },
          {
            "attributes": {
              "constant": false,
              "name": "symbol",
              "scope": 11873,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "string storage ref",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "string",
                  "type": "string storage pointer"
                },
                "id": 10857,
                "name": "ElementaryTypeName",
                "src": "2327:6:51"
              }
            ],
            "id": 10858,
            "name": "VariableDeclaration",
            "src": "2327:20:51"
          },
          {
            "attributes": {
              "constant": false,
              "name": "version",
              "scope": 11873,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "string storage ref",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "string",
                  "type": "string storage pointer"
                },
                "id": 10859,
                "name": "ElementaryTypeName",
                "src": "2392:6:51"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "hexvalue": "4d4d545f302e31",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "subdenomination": null,
                  "token": "string",
                  "type": "literal_string \"MMT_0.1\"",
                  "value": "MMT_0.1"
                },
                "id": 10860,
                "name": "Literal",
                "src": "2416:9:51"
              }
            ],
            "id": 10861,
            "name": "VariableDeclaration",
            "src": "2392:33:51"
          },
          {
            "attributes": {
              "canonicalName": "MiniMeToken.Checkpoint",
              "name": "Checkpoint",
              "scope": 11873,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "name": "fromBlock",
                  "scope": 10866,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint128",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint128",
                      "type": "uint128"
                    },
                    "id": 10862,
                    "name": "ElementaryTypeName",
                    "src": "2745:7:51"
                  }
                ],
                "id": 10863,
                "name": "VariableDeclaration",
                "src": "2745:17:51"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "value",
                  "scope": 10866,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint128",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint128",
                      "type": "uint128"
                    },
                    "id": 10864,
                    "name": "ElementaryTypeName",
                    "src": "2843:7:51"
                  }
                ],
                "id": 10865,
                "name": "VariableDeclaration",
                "src": "2843:13:51"
              }
            ],
            "id": 10866,
            "name": "StructDefinition",
            "src": "2639:224:51"
          },
          {
            "attributes": {
              "constant": false,
              "name": "parentToken",
              "scope": 11873,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract MiniMeToken",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "MiniMeToken",
                  "referencedDeclaration": 11873,
                  "type": "contract MiniMeToken"
                },
                "id": 10867,
                "name": "UserDefinedTypeName",
                "src": "3005:11:51"
              }
            ],
            "id": 10868,
            "name": "VariableDeclaration",
            "src": "3005:30:51"
          },
          {
            "attributes": {
              "constant": false,
              "name": "parentSnapShotBlock",
              "scope": 11873,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 10869,
                "name": "ElementaryTypeName",
                "src": "3192:4:51"
              }
            ],
            "id": 10870,
            "name": "VariableDeclaration",
            "src": "3192:31:51"
          },
          {
            "attributes": {
              "constant": false,
              "name": "creationBlock",
              "scope": 11873,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint",
                  "type": "uint256"
                },
                "id": 10871,
                "name": "ElementaryTypeName",
                "src": "3306:4:51"
              }
            ],
            "id": 10872,
            "name": "VariableDeclaration",
            "src": "3306:25:51"
          },
          {
            "attributes": {
              "constant": false,
              "name": "balances",
              "scope": 11873,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(address => struct MiniMeToken.Checkpoint storage ref[] storage ref)",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(address => struct MiniMeToken.Checkpoint storage ref[] storage ref)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "type": "address"
                    },
                    "id": 10873,
                    "name": "ElementaryTypeName",
                    "src": "3545:7:51"
                  },
                  {
                    "attributes": {
                      "length": null,
                      "type": "struct MiniMeToken.Checkpoint storage ref[] storage pointer"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Checkpoint",
                          "referencedDeclaration": 10866,
                          "type": "struct MiniMeToken.Checkpoint storage pointer"
                        },
                        "id": 10874,
                        "name": "UserDefinedTypeName",
                        "src": "3556:10:51"
                      }
                    ],
                    "id": 10875,
                    "name": "ArrayTypeName",
                    "src": "3556:12:51"
                  }
                ],
                "id": 10876,
                "name": "Mapping",
                "src": "3536:33:51"
              }
            ],
            "id": 10877,
            "name": "VariableDeclaration",
            "src": "3536:42:51"
          },
          {
            "attributes": {
              "constant": false,
              "name": "allowed",
              "scope": 11873,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(address => mapping(address => uint256))",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(address => mapping(address => uint256))"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "type": "address"
                    },
                    "id": 10878,
                    "name": "ElementaryTypeName",
                    "src": "3667:7:51"
                  },
                  {
                    "attributes": {
                      "type": "mapping(address => uint256)"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 10879,
                        "name": "ElementaryTypeName",
                        "src": "3687:7:51"
                      },
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 10880,
                        "name": "ElementaryTypeName",
                        "src": "3698:7:51"
                      }
                    ],
                    "id": 10881,
                    "name": "Mapping",
                    "src": "3678:28:51"
                  }
                ],
                "id": 10882,
                "name": "Mapping",
                "src": "3658:49:51"
              }
            ],
            "id": 10883,
            "name": "VariableDeclaration",
            "src": "3658:57:51"
          },
          {
            "attributes": {
              "constant": false,
              "name": "totalSupplyHistory",
              "scope": 11873,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "struct MiniMeToken.Checkpoint storage ref[] storage ref",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "length": null,
                  "type": "struct MiniMeToken.Checkpoint storage ref[] storage pointer"
                },
                "children": [
                  {
                    "attributes": {
                      "contractScope": null,
                      "name": "Checkpoint",
                      "referencedDeclaration": 10866,
                      "type": "struct MiniMeToken.Checkpoint storage pointer"
                    },
                    "id": 10884,
                    "name": "UserDefinedTypeName",
                    "src": "3782:10:51"
                  }
                ],
                "id": 10885,
                "name": "ArrayTypeName",
                "src": "3782:12:51"
              }
            ],
            "id": 10886,
            "name": "VariableDeclaration",
            "src": "3782:31:51"
          },
          {
            "attributes": {
              "constant": false,
              "name": "transfersEnabled",
              "scope": 11873,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bool",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "bool",
                  "type": "bool"
                },
                "id": 10887,
                "name": "ElementaryTypeName",
                "src": "3885:4:51"
              }
            ],
            "id": 10888,
            "name": "VariableDeclaration",
            "src": "3885:28:51"
          },
          {
            "attributes": {
              "constant": false,
              "name": "tokenFactory",
              "scope": 11873,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract MiniMeTokenFactory",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "MiniMeTokenFactory",
                  "referencedDeclaration": 11914,
                  "type": "contract MiniMeTokenFactory"
                },
                "id": 10889,
                "name": "UserDefinedTypeName",
                "src": "3971:18:51"
              }
            ],
            "id": 10890,
            "name": "VariableDeclaration",
            "src": "3971:38:51"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": true,
              "modifiers": [
                null
              ],
              "name": "MiniMeToken",
              "payable": false,
              "scope": 11873,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_tokenFactory",
                      "scope": 10945,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 10891,
                        "name": "ElementaryTypeName",
                        "src": "4856:7:51"
                      }
                    ],
                    "id": 10892,
                    "name": "VariableDeclaration",
                    "src": "4856:21:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_parentToken",
                      "scope": 10945,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 10893,
                        "name": "ElementaryTypeName",
                        "src": "4887:7:51"
                      }
                    ],
                    "id": 10894,
                    "name": "VariableDeclaration",
                    "src": "4887:20:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_parentSnapShotBlock",
                      "scope": 10945,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 10895,
                        "name": "ElementaryTypeName",
                        "src": "4917:4:51"
                      }
                    ],
                    "id": 10896,
                    "name": "VariableDeclaration",
                    "src": "4917:25:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_tokenName",
                      "scope": 10945,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 10897,
                        "name": "ElementaryTypeName",
                        "src": "4952:6:51"
                      }
                    ],
                    "id": 10898,
                    "name": "VariableDeclaration",
                    "src": "4952:17:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_decimalUnits",
                      "scope": 10945,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 10899,
                        "name": "ElementaryTypeName",
                        "src": "4979:5:51"
                      }
                    ],
                    "id": 10900,
                    "name": "VariableDeclaration",
                    "src": "4979:19:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_tokenSymbol",
                      "scope": 10945,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 10901,
                        "name": "ElementaryTypeName",
                        "src": "5008:6:51"
                      }
                    ],
                    "id": 10902,
                    "name": "VariableDeclaration",
                    "src": "5008:19:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_transfersEnabled",
                      "scope": 10945,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 10903,
                        "name": "ElementaryTypeName",
                        "src": "5037:4:51"
                      }
                    ],
                    "id": 10904,
                    "name": "VariableDeclaration",
                    "src": "5037:22:51"
                  }
                ],
                "id": 10905,
                "name": "ParameterList",
                "src": "4846:219:51"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 10906,
                "name": "ParameterList",
                "src": "5078:0:51"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract MiniMeTokenFactory"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10890,
                              "type": "contract MiniMeTokenFactory",
                              "value": "tokenFactory"
                            },
                            "id": 10907,
                            "name": "Identifier",
                            "src": "5088:12:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract MiniMeTokenFactory",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11914,
                                  "type": "type(contract MiniMeTokenFactory)",
                                  "value": "MiniMeTokenFactory"
                                },
                                "id": 10908,
                                "name": "Identifier",
                                "src": "5103:18:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 10892,
                                  "type": "address",
                                  "value": "_tokenFactory"
                                },
                                "id": 10909,
                                "name": "Identifier",
                                "src": "5122:13:51"
                              }
                            ],
                            "id": 10910,
                            "name": "FunctionCall",
                            "src": "5103:33:51"
                          }
                        ],
                        "id": 10911,
                        "name": "Assignment",
                        "src": "5088:48:51"
                      }
                    ],
                    "id": 10912,
                    "name": "ExpressionStatement",
                    "src": "5088:48:51"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "string storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10854,
                              "type": "string storage ref",
                              "value": "name"
                            },
                            "id": 10913,
                            "name": "Identifier",
                            "src": "5146:4:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10898,
                              "type": "string memory",
                              "value": "_tokenName"
                            },
                            "id": 10914,
                            "name": "Identifier",
                            "src": "5153:10:51"
                          }
                        ],
                        "id": 10915,
                        "name": "Assignment",
                        "src": "5146:17:51"
                      }
                    ],
                    "id": 10916,
                    "name": "ExpressionStatement",
                    "src": "5146:17:51"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10856,
                              "type": "uint8",
                              "value": "decimals"
                            },
                            "id": 10917,
                            "name": "Identifier",
                            "src": "5221:8:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10900,
                              "type": "uint8",
                              "value": "_decimalUnits"
                            },
                            "id": 10918,
                            "name": "Identifier",
                            "src": "5232:13:51"
                          }
                        ],
                        "id": 10919,
                        "name": "Assignment",
                        "src": "5221:24:51"
                      }
                    ],
                    "id": 10920,
                    "name": "ExpressionStatement",
                    "src": "5221:24:51"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "string storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10858,
                              "type": "string storage ref",
                              "value": "symbol"
                            },
                            "id": 10921,
                            "name": "Identifier",
                            "src": "5300:6:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10902,
                              "type": "string memory",
                              "value": "_tokenSymbol"
                            },
                            "id": 10922,
                            "name": "Identifier",
                            "src": "5309:12:51"
                          }
                        ],
                        "id": 10923,
                        "name": "Assignment",
                        "src": "5300:21:51"
                      }
                    ],
                    "id": 10924,
                    "name": "ExpressionStatement",
                    "src": "5300:21:51"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract MiniMeToken"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10868,
                              "type": "contract MiniMeToken",
                              "value": "parentToken"
                            },
                            "id": 10925,
                            "name": "Identifier",
                            "src": "5377:11:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract MiniMeToken",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11873,
                                  "type": "type(contract MiniMeToken)",
                                  "value": "MiniMeToken"
                                },
                                "id": 10926,
                                "name": "Identifier",
                                "src": "5391:11:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 10894,
                                  "type": "address",
                                  "value": "_parentToken"
                                },
                                "id": 10927,
                                "name": "Identifier",
                                "src": "5403:12:51"
                              }
                            ],
                            "id": 10928,
                            "name": "FunctionCall",
                            "src": "5391:25:51"
                          }
                        ],
                        "id": 10929,
                        "name": "Assignment",
                        "src": "5377:39:51"
                      }
                    ],
                    "id": 10930,
                    "name": "ExpressionStatement",
                    "src": "5377:39:51"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10870,
                              "type": "uint256",
                              "value": "parentSnapShotBlock"
                            },
                            "id": 10931,
                            "name": "Identifier",
                            "src": "5426:19:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10896,
                              "type": "uint256",
                              "value": "_parentSnapShotBlock"
                            },
                            "id": 10932,
                            "name": "Identifier",
                            "src": "5448:20:51"
                          }
                        ],
                        "id": 10933,
                        "name": "Assignment",
                        "src": "5426:42:51"
                      }
                    ],
                    "id": 10934,
                    "name": "ExpressionStatement",
                    "src": "5426:42:51"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10888,
                              "type": "bool",
                              "value": "transfersEnabled"
                            },
                            "id": 10935,
                            "name": "Identifier",
                            "src": "5478:16:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10904,
                              "type": "bool",
                              "value": "_transfersEnabled"
                            },
                            "id": 10936,
                            "name": "Identifier",
                            "src": "5497:17:51"
                          }
                        ],
                        "id": 10937,
                        "name": "Assignment",
                        "src": "5478:36:51"
                      }
                    ],
                    "id": 10938,
                    "name": "ExpressionStatement",
                    "src": "5478:36:51"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10872,
                              "type": "uint256",
                              "value": "creationBlock"
                            },
                            "id": 10939,
                            "name": "Identifier",
                            "src": "5524:13:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "number",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12582,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 10940,
                                "name": "Identifier",
                                "src": "5540:5:51"
                              }
                            ],
                            "id": 10941,
                            "name": "MemberAccess",
                            "src": "5540:12:51"
                          }
                        ],
                        "id": 10942,
                        "name": "Assignment",
                        "src": "5524:28:51"
                      }
                    ],
                    "id": 10943,
                    "name": "ExpressionStatement",
                    "src": "5524:28:51"
                  }
                ],
                "id": 10944,
                "name": "Block",
                "src": "5078:481:51"
              }
            ],
            "id": 10945,
            "name": "FunctionDefinition",
            "src": "4826:733:51"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "transfer",
              "payable": false,
              "scope": 11873,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_to",
                      "scope": 10966,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 10946,
                        "name": "ElementaryTypeName",
                        "src": "5876:7:51"
                      }
                    ],
                    "id": 10947,
                    "name": "VariableDeclaration",
                    "src": "5876:11:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 10966,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 10948,
                        "name": "ElementaryTypeName",
                        "src": "5889:7:51"
                      }
                    ],
                    "id": 10949,
                    "name": "VariableDeclaration",
                    "src": "5889:15:51"
                  }
                ],
                "id": 10950,
                "name": "ParameterList",
                "src": "5875:30:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "success",
                      "scope": 10966,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 10951,
                        "name": "ElementaryTypeName",
                        "src": "5922:4:51"
                      }
                    ],
                    "id": 10952,
                    "name": "VariableDeclaration",
                    "src": "5922:12:51"
                  }
                ],
                "id": 10953,
                "name": "ParameterList",
                "src": "5921:14:51"
              },
              {
                "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": 10954,
                            "name": "Identifier",
                            "src": "5946:7:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10888,
                              "type": "bool",
                              "value": "transfersEnabled"
                            },
                            "id": 10955,
                            "name": "Identifier",
                            "src": "5954:16:51"
                          }
                        ],
                        "id": 10956,
                        "name": "FunctionCall",
                        "src": "5946:25:51"
                      }
                    ],
                    "id": 10957,
                    "name": "ExpressionStatement",
                    "src": "5946:25:51"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 10953
                    },
                    "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_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11127,
                              "type": "function (address,address,uint256) returns (bool)",
                              "value": "doTransfer"
                            },
                            "id": 10958,
                            "name": "Identifier",
                            "src": "5988:10:51"
                          },
                          {
                            "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": 10959,
                                "name": "Identifier",
                                "src": "5999:3:51"
                              }
                            ],
                            "id": 10960,
                            "name": "MemberAccess",
                            "src": "5999:10:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10947,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 10961,
                            "name": "Identifier",
                            "src": "6011:3:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10949,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 10962,
                            "name": "Identifier",
                            "src": "6016:7:51"
                          }
                        ],
                        "id": 10963,
                        "name": "FunctionCall",
                        "src": "5988:36:51"
                      }
                    ],
                    "id": 10964,
                    "name": "Return",
                    "src": "5981:43:51"
                  }
                ],
                "id": 10965,
                "name": "Block",
                "src": "5936:95:51"
              }
            ],
            "id": 10966,
            "name": "FunctionDefinition",
            "src": "5858:173:51"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "transferFrom",
              "payable": false,
              "scope": 11873,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_from",
                      "scope": 11014,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 10967,
                        "name": "ElementaryTypeName",
                        "src": "6403:7:51"
                      }
                    ],
                    "id": 10968,
                    "name": "VariableDeclaration",
                    "src": "6403:13:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_to",
                      "scope": 11014,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 10969,
                        "name": "ElementaryTypeName",
                        "src": "6418:7:51"
                      }
                    ],
                    "id": 10970,
                    "name": "VariableDeclaration",
                    "src": "6418:11:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 11014,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 10971,
                        "name": "ElementaryTypeName",
                        "src": "6431:7:51"
                      }
                    ],
                    "id": 10972,
                    "name": "VariableDeclaration",
                    "src": "6431:15:51"
                  }
                ],
                "id": 10973,
                "name": "ParameterList",
                "src": "6402:45:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "success",
                      "scope": 11014,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 10974,
                        "name": "ElementaryTypeName",
                        "src": "6464:4:51"
                      }
                    ],
                    "id": 10975,
                    "name": "VariableDeclaration",
                    "src": "6464:12:51"
                  }
                ],
                "id": 10976,
                "name": "ParameterList",
                "src": "6463:14:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "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,
                              "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": 10977,
                                "name": "Identifier",
                                "src": "6769:3:51"
                              }
                            ],
                            "id": 10978,
                            "name": "MemberAccess",
                            "src": "6769:10:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10816,
                              "type": "address",
                              "value": "controller"
                            },
                            "id": 10979,
                            "name": "Identifier",
                            "src": "6783:10:51"
                          }
                        ],
                        "id": 10980,
                        "name": "BinaryOperation",
                        "src": "6769:24:51"
                      },
                      {
                        "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": 10981,
                                    "name": "Identifier",
                                    "src": "6809:7:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 10888,
                                      "type": "bool",
                                      "value": "transfersEnabled"
                                    },
                                    "id": 10982,
                                    "name": "Identifier",
                                    "src": "6817:16:51"
                                  }
                                ],
                                "id": 10983,
                                "name": "FunctionCall",
                                "src": "6809:25:51"
                              }
                            ],
                            "id": 10984,
                            "name": "ExpressionStatement",
                            "src": "6809:25:51"
                          },
                          {
                            "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,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "mapping(address => uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 10883,
                                              "type": "mapping(address => mapping(address => uint256))",
                                              "value": "allowed"
                                            },
                                            "id": 10985,
                                            "name": "Identifier",
                                            "src": "6915:7:51"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 10968,
                                              "type": "address",
                                              "value": "_from"
                                            },
                                            "id": 10986,
                                            "name": "Identifier",
                                            "src": "6923:5:51"
                                          }
                                        ],
                                        "id": 10987,
                                        "name": "IndexAccess",
                                        "src": "6915:14:51"
                                      },
                                      {
                                        "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": 10988,
                                            "name": "Identifier",
                                            "src": "6930:3:51"
                                          }
                                        ],
                                        "id": 10989,
                                        "name": "MemberAccess",
                                        "src": "6930:10:51"
                                      }
                                    ],
                                    "id": 10990,
                                    "name": "IndexAccess",
                                    "src": "6915:26:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 10972,
                                      "type": "uint256",
                                      "value": "_amount"
                                    },
                                    "id": 10991,
                                    "name": "Identifier",
                                    "src": "6944:7:51"
                                  }
                                ],
                                "id": 10992,
                                "name": "BinaryOperation",
                                "src": "6915:36:51"
                              },
                              {
                                "attributes": {
                                  "functionReturnParameters": 10976
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "66616c7365",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "bool",
                                      "type": "bool",
                                      "value": "false"
                                    },
                                    "id": 10993,
                                    "name": "Literal",
                                    "src": "6976:5:51"
                                  }
                                ],
                                "id": 10994,
                                "name": "Return",
                                "src": "6969:12:51"
                              }
                            ],
                            "id": 10995,
                            "name": "IfStatement",
                            "src": "6911:70:51"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "mapping(address => uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 10883,
                                              "type": "mapping(address => mapping(address => uint256))",
                                              "value": "allowed"
                                            },
                                            "id": 10996,
                                            "name": "Identifier",
                                            "src": "6995:7:51"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 10968,
                                              "type": "address",
                                              "value": "_from"
                                            },
                                            "id": 10997,
                                            "name": "Identifier",
                                            "src": "7003:5:51"
                                          }
                                        ],
                                        "id": 11000,
                                        "name": "IndexAccess",
                                        "src": "6995:14:51"
                                      },
                                      {
                                        "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": 10998,
                                            "name": "Identifier",
                                            "src": "7010:3:51"
                                          }
                                        ],
                                        "id": 10999,
                                        "name": "MemberAccess",
                                        "src": "7010:10:51"
                                      }
                                    ],
                                    "id": 11001,
                                    "name": "IndexAccess",
                                    "src": "6995:26:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 10972,
                                      "type": "uint256",
                                      "value": "_amount"
                                    },
                                    "id": 11002,
                                    "name": "Identifier",
                                    "src": "7025:7:51"
                                  }
                                ],
                                "id": 11003,
                                "name": "Assignment",
                                "src": "6995:37:51"
                              }
                            ],
                            "id": 11004,
                            "name": "ExpressionStatement",
                            "src": "6995:37:51"
                          }
                        ],
                        "id": 11005,
                        "name": "Block",
                        "src": "6795:248:51"
                      }
                    ],
                    "id": 11006,
                    "name": "IfStatement",
                    "src": "6765:278:51"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 10976
                    },
                    "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_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11127,
                              "type": "function (address,address,uint256) returns (bool)",
                              "value": "doTransfer"
                            },
                            "id": 11007,
                            "name": "Identifier",
                            "src": "7059:10:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10968,
                              "type": "address",
                              "value": "_from"
                            },
                            "id": 11008,
                            "name": "Identifier",
                            "src": "7070:5:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10970,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 11009,
                            "name": "Identifier",
                            "src": "7077:3:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10972,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 11010,
                            "name": "Identifier",
                            "src": "7082:7:51"
                          }
                        ],
                        "id": 11011,
                        "name": "FunctionCall",
                        "src": "7059:31:51"
                      }
                    ],
                    "id": 11012,
                    "name": "Return",
                    "src": "7052:38:51"
                  }
                ],
                "id": 11013,
                "name": "Block",
                "src": "6478:619:51"
              }
            ],
            "id": 11014,
            "name": "FunctionDefinition",
            "src": "6381:716:51"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "doTransfer",
              "payable": false,
              "scope": 11873,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_from",
                      "scope": 11127,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 11015,
                        "name": "ElementaryTypeName",
                        "src": "7496:7:51"
                      }
                    ],
                    "id": 11016,
                    "name": "VariableDeclaration",
                    "src": "7496:13:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_to",
                      "scope": 11127,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 11017,
                        "name": "ElementaryTypeName",
                        "src": "7511:7:51"
                      }
                    ],
                    "id": 11018,
                    "name": "VariableDeclaration",
                    "src": "7511:11:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 11127,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 11019,
                        "name": "ElementaryTypeName",
                        "src": "7524:4:51"
                      }
                    ],
                    "id": 11020,
                    "name": "VariableDeclaration",
                    "src": "7524:12:51"
                  }
                ],
                "id": 11021,
                "name": "ParameterList",
                "src": "7495:42:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 11127,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 11022,
                        "name": "ElementaryTypeName",
                        "src": "7555:4:51"
                      }
                    ],
                    "id": 11023,
                    "name": "VariableDeclaration",
                    "src": "7555:4:51"
                  }
                ],
                "id": 11024,
                "name": "ParameterList",
                "src": "7554:6:51"
              },
              {
                "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": 11020,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 11025,
                            "name": "Identifier",
                            "src": "7575:7:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 11026,
                            "name": "Literal",
                            "src": "7586:1:51"
                          }
                        ],
                        "id": 11027,
                        "name": "BinaryOperation",
                        "src": "7575:12:51"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 11024
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "74727565",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "true"
                                },
                                "id": 11028,
                                "name": "Literal",
                                "src": "7610:4:51"
                              }
                            ],
                            "id": 11029,
                            "name": "Return",
                            "src": "7603:11:51"
                          }
                        ],
                        "id": 11030,
                        "name": "Block",
                        "src": "7589:36:51"
                      }
                    ],
                    "id": 11031,
                    "name": "IfStatement",
                    "src": "7571:54:51"
                  },
                  {
                    "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": 11032,
                            "name": "Identifier",
                            "src": "7634:7:51"
                          },
                          {
                            "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": 10870,
                                  "type": "uint256",
                                  "value": "parentSnapShotBlock"
                                },
                                "id": 11033,
                                "name": "Identifier",
                                "src": "7642:19:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "number",
                                  "referencedDeclaration": null,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12582,
                                      "type": "block",
                                      "value": "block"
                                    },
                                    "id": 11034,
                                    "name": "Identifier",
                                    "src": "7664:5:51"
                                  }
                                ],
                                "id": 11035,
                                "name": "MemberAccess",
                                "src": "7664:12:51"
                              }
                            ],
                            "id": 11036,
                            "name": "BinaryOperation",
                            "src": "7642:34:51"
                          }
                        ],
                        "id": 11037,
                        "name": "FunctionCall",
                        "src": "7634:43:51"
                      }
                    ],
                    "id": 11038,
                    "name": "ExpressionStatement",
                    "src": "7634:43:51"
                  },
                  {
                    "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": 11039,
                            "name": "Identifier",
                            "src": "7756:7:51"
                          },
                          {
                            "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,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "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": 11018,
                                          "type": "address",
                                          "value": "_to"
                                        },
                                        "id": 11040,
                                        "name": "Identifier",
                                        "src": "7765:3:51"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "30",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 0",
                                          "value": "0"
                                        },
                                        "id": 11041,
                                        "name": "Literal",
                                        "src": "7772:1:51"
                                      }
                                    ],
                                    "id": 11042,
                                    "name": "BinaryOperation",
                                    "src": "7765:8:51"
                                  }
                                ],
                                "id": 11043,
                                "name": "TupleExpression",
                                "src": "7764:10:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "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": 11018,
                                          "type": "address",
                                          "value": "_to"
                                        },
                                        "id": 11044,
                                        "name": "Identifier",
                                        "src": "7779:3:51"
                                      },
                                      {
                                        "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": 11045,
                                            "name": "ElementaryTypeNameExpression",
                                            "src": "7786:7:51"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 12683,
                                              "type": "contract MiniMeToken",
                                              "value": "this"
                                            },
                                            "id": 11046,
                                            "name": "Identifier",
                                            "src": "7794:4:51"
                                          }
                                        ],
                                        "id": 11047,
                                        "name": "FunctionCall",
                                        "src": "7786:13:51"
                                      }
                                    ],
                                    "id": 11048,
                                    "name": "BinaryOperation",
                                    "src": "7779:20:51"
                                  }
                                ],
                                "id": 11049,
                                "name": "TupleExpression",
                                "src": "7778:22:51"
                              }
                            ],
                            "id": 11050,
                            "name": "BinaryOperation",
                            "src": "7764:36:51"
                          }
                        ],
                        "id": 11051,
                        "name": "FunctionCall",
                        "src": "7756:45:51"
                      }
                    ],
                    "id": 11052,
                    "name": "ExpressionStatement",
                    "src": "7756:45:51"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        11053
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "previousBalanceFrom",
                          "scope": 11127,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "typeName": null,
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [],
                        "id": 11053,
                        "name": "VariableDeclaration",
                        "src": "7932:23:51"
                      },
                      {
                        "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": 11324,
                              "type": "function (address,uint256) view returns (uint256)",
                              "value": "balanceOfAt"
                            },
                            "id": 11054,
                            "name": "Identifier",
                            "src": "7958:11:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11016,
                              "type": "address",
                              "value": "_from"
                            },
                            "id": 11055,
                            "name": "Identifier",
                            "src": "7970:5:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "number",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12582,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 11056,
                                "name": "Identifier",
                                "src": "7977:5:51"
                              }
                            ],
                            "id": 11057,
                            "name": "MemberAccess",
                            "src": "7977:12:51"
                          }
                        ],
                        "id": 11058,
                        "name": "FunctionCall",
                        "src": "7958:32:51"
                      }
                    ],
                    "id": 11059,
                    "name": "VariableDeclarationStatement",
                    "src": "7932:58:51"
                  },
                  {
                    "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": 11053,
                              "type": "uint256",
                              "value": "previousBalanceFrom"
                            },
                            "id": 11060,
                            "name": "Identifier",
                            "src": "8004:19:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11020,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 11061,
                            "name": "Identifier",
                            "src": "8026:7:51"
                          }
                        ],
                        "id": 11062,
                        "name": "BinaryOperation",
                        "src": "8004:29:51"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 11024
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "66616c7365",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "false"
                                },
                                "id": 11063,
                                "name": "Literal",
                                "src": "8056:5:51"
                              }
                            ],
                            "id": 11064,
                            "name": "Return",
                            "src": "8049:12:51"
                          }
                        ],
                        "id": 11065,
                        "name": "Block",
                        "src": "8035:37:51"
                      }
                    ],
                    "id": 11066,
                    "name": "IfStatement",
                    "src": "8000:72:51"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11752,
                              "type": "function (address) view returns (bool)",
                              "value": "isContract"
                            },
                            "id": 11067,
                            "name": "Identifier",
                            "src": "8140:10:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10816,
                              "type": "address",
                              "value": "controller"
                            },
                            "id": 11068,
                            "name": "Identifier",
                            "src": "8151:10:51"
                          }
                        ],
                        "id": 11069,
                        "name": "FunctionCall",
                        "src": "8140:22:51"
                      },
                      {
                        "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": 11070,
                                    "name": "Identifier",
                                    "src": "8246:7:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "==",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "bool",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "onTransfer",
                                              "referencedDeclaration": 10788,
                                              "type": "function (address,address,uint256) external returns (bool)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "type": "contract ITokenController",
                                                  "type_conversion": true
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      ],
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 10800,
                                                      "type": "type(contract ITokenController)",
                                                      "value": "ITokenController"
                                                    },
                                                    "id": 11071,
                                                    "name": "Identifier",
                                                    "src": "8254:16:51"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 10816,
                                                      "type": "address",
                                                      "value": "controller"
                                                    },
                                                    "id": 11072,
                                                    "name": "Identifier",
                                                    "src": "8271:10:51"
                                                  }
                                                ],
                                                "id": 11073,
                                                "name": "FunctionCall",
                                                "src": "8254:28:51"
                                              }
                                            ],
                                            "id": 11074,
                                            "name": "MemberAccess",
                                            "src": "8254:39:51"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11016,
                                              "type": "address",
                                              "value": "_from"
                                            },
                                            "id": 11075,
                                            "name": "Identifier",
                                            "src": "8294:5:51"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11018,
                                              "type": "address",
                                              "value": "_to"
                                            },
                                            "id": 11076,
                                            "name": "Identifier",
                                            "src": "8301:3:51"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11020,
                                              "type": "uint256",
                                              "value": "_amount"
                                            },
                                            "id": 11077,
                                            "name": "Identifier",
                                            "src": "8306:7:51"
                                          }
                                        ],
                                        "id": 11078,
                                        "name": "FunctionCall",
                                        "src": "8254:60:51"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "74727565",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "bool",
                                          "type": "bool",
                                          "value": "true"
                                        },
                                        "id": 11079,
                                        "name": "Literal",
                                        "src": "8318:4:51"
                                      }
                                    ],
                                    "id": 11080,
                                    "name": "BinaryOperation",
                                    "src": "8254:68:51"
                                  }
                                ],
                                "id": 11081,
                                "name": "FunctionCall",
                                "src": "8246:77:51"
                              }
                            ],
                            "id": 11082,
                            "name": "ExpressionStatement",
                            "src": "8246:77:51"
                          }
                        ],
                        "id": 11083,
                        "name": "Block",
                        "src": "8164:170:51"
                      }
                    ],
                    "id": 11084,
                    "name": "IfStatement",
                    "src": "8136:198:51"
                  },
                  {
                    "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_array$_t_struct$_Checkpoint_$10866_storage_$dyn_storage",
                                  "typeString": "struct MiniMeToken.Checkpoint storage ref[] storage ref"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11730,
                              "type": "function (struct MiniMeToken.Checkpoint storage ref[] storage pointer,uint256)",
                              "value": "updateValueAtNow"
                            },
                            "id": 11085,
                            "name": "Identifier",
                            "src": "8451:16:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "struct MiniMeToken.Checkpoint storage ref[] storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 10877,
                                  "type": "mapping(address => struct MiniMeToken.Checkpoint storage ref[] storage ref)",
                                  "value": "balances"
                                },
                                "id": 11086,
                                "name": "Identifier",
                                "src": "8468:8:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11016,
                                  "type": "address",
                                  "value": "_from"
                                },
                                "id": 11087,
                                "name": "Identifier",
                                "src": "8477:5:51"
                              }
                            ],
                            "id": 11088,
                            "name": "IndexAccess",
                            "src": "8468:15:51"
                          },
                          {
                            "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": 11053,
                                  "type": "uint256",
                                  "value": "previousBalanceFrom"
                                },
                                "id": 11089,
                                "name": "Identifier",
                                "src": "8485:19:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11020,
                                  "type": "uint256",
                                  "value": "_amount"
                                },
                                "id": 11090,
                                "name": "Identifier",
                                "src": "8507:7:51"
                              }
                            ],
                            "id": 11091,
                            "name": "BinaryOperation",
                            "src": "8485:29:51"
                          }
                        ],
                        "id": 11092,
                        "name": "FunctionCall",
                        "src": "8451:64:51"
                      }
                    ],
                    "id": 11093,
                    "name": "ExpressionStatement",
                    "src": "8451:64:51"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        11094
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "previousBalanceTo",
                          "scope": 11127,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "typeName": null,
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [],
                        "id": 11094,
                        "name": "VariableDeclaration",
                        "src": "8634:21:51"
                      },
                      {
                        "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": 11324,
                              "type": "function (address,uint256) view returns (uint256)",
                              "value": "balanceOfAt"
                            },
                            "id": 11095,
                            "name": "Identifier",
                            "src": "8658:11:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11018,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 11096,
                            "name": "Identifier",
                            "src": "8670:3:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "number",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12582,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 11097,
                                "name": "Identifier",
                                "src": "8675:5:51"
                              }
                            ],
                            "id": 11098,
                            "name": "MemberAccess",
                            "src": "8675:12:51"
                          }
                        ],
                        "id": 11099,
                        "name": "FunctionCall",
                        "src": "8658:30:51"
                      }
                    ],
                    "id": 11100,
                    "name": "VariableDeclarationStatement",
                    "src": "8634:54:51"
                  },
                  {
                    "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": 11101,
                            "name": "Identifier",
                            "src": "8698:7:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11094,
                                      "type": "uint256",
                                      "value": "previousBalanceTo"
                                    },
                                    "id": 11102,
                                    "name": "Identifier",
                                    "src": "8706:17:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11020,
                                      "type": "uint256",
                                      "value": "_amount"
                                    },
                                    "id": 11103,
                                    "name": "Identifier",
                                    "src": "8726:7:51"
                                  }
                                ],
                                "id": 11104,
                                "name": "BinaryOperation",
                                "src": "8706:27:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11094,
                                  "type": "uint256",
                                  "value": "previousBalanceTo"
                                },
                                "id": 11105,
                                "name": "Identifier",
                                "src": "8737:17:51"
                              }
                            ],
                            "id": 11106,
                            "name": "BinaryOperation",
                            "src": "8706:48:51"
                          }
                        ],
                        "id": 11107,
                        "name": "FunctionCall",
                        "src": "8698:57:51"
                      }
                    ],
                    "id": 11108,
                    "name": "ExpressionStatement",
                    "src": "8698:57:51"
                  },
                  {
                    "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_array$_t_struct$_Checkpoint_$10866_storage_$dyn_storage",
                                  "typeString": "struct MiniMeToken.Checkpoint storage ref[] storage ref"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11730,
                              "type": "function (struct MiniMeToken.Checkpoint storage ref[] storage pointer,uint256)",
                              "value": "updateValueAtNow"
                            },
                            "id": 11109,
                            "name": "Identifier",
                            "src": "8787:16:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "struct MiniMeToken.Checkpoint storage ref[] storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 10877,
                                  "type": "mapping(address => struct MiniMeToken.Checkpoint storage ref[] storage ref)",
                                  "value": "balances"
                                },
                                "id": 11110,
                                "name": "Identifier",
                                "src": "8804:8:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11018,
                                  "type": "address",
                                  "value": "_to"
                                },
                                "id": 11111,
                                "name": "Identifier",
                                "src": "8813:3:51"
                              }
                            ],
                            "id": 11112,
                            "name": "IndexAccess",
                            "src": "8804:13:51"
                          },
                          {
                            "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": 11094,
                                  "type": "uint256",
                                  "value": "previousBalanceTo"
                                },
                                "id": 11113,
                                "name": "Identifier",
                                "src": "8819:17:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11020,
                                  "type": "uint256",
                                  "value": "_amount"
                                },
                                "id": 11114,
                                "name": "Identifier",
                                "src": "8839:7:51"
                              }
                            ],
                            "id": 11115,
                            "name": "BinaryOperation",
                            "src": "8819:27:51"
                          }
                        ],
                        "id": 11116,
                        "name": "FunctionCall",
                        "src": "8787:60:51"
                      }
                    ],
                    "id": 11117,
                    "name": "ExpressionStatement",
                    "src": "8787:60:51"
                  },
                  {
                    "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_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11858,
                              "type": "function (address,address,uint256)",
                              "value": "Transfer"
                            },
                            "id": 11118,
                            "name": "Identifier",
                            "src": "8929:8:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11016,
                              "type": "address",
                              "value": "_from"
                            },
                            "id": 11119,
                            "name": "Identifier",
                            "src": "8938:5:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11018,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 11120,
                            "name": "Identifier",
                            "src": "8945:3:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11020,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 11121,
                            "name": "Identifier",
                            "src": "8950:7:51"
                          }
                        ],
                        "id": 11122,
                        "name": "FunctionCall",
                        "src": "8929:29:51"
                      }
                    ],
                    "id": 11123,
                    "name": "ExpressionStatement",
                    "src": "8929:29:51"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 11024
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 11124,
                        "name": "Literal",
                        "src": "8975:4:51"
                      }
                    ],
                    "id": 11125,
                    "name": "Return",
                    "src": "8968:11:51"
                  }
                ],
                "id": 11126,
                "name": "Block",
                "src": "7561:1425:51"
              }
            ],
            "id": 11127,
            "name": "FunctionDefinition",
            "src": "7476:1510:51"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "balanceOf",
              "payable": false,
              "scope": 11873,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_owner",
                      "scope": 11141,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 11128,
                        "name": "ElementaryTypeName",
                        "src": "9140:7:51"
                      }
                    ],
                    "id": 11129,
                    "name": "VariableDeclaration",
                    "src": "9140:14:51"
                  }
                ],
                "id": 11130,
                "name": "ParameterList",
                "src": "9139:16:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "balance",
                      "scope": 11141,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 11131,
                        "name": "ElementaryTypeName",
                        "src": "9181:7:51"
                      }
                    ],
                    "id": 11132,
                    "name": "VariableDeclaration",
                    "src": "9181:15:51"
                  }
                ],
                "id": 11133,
                "name": "ParameterList",
                "src": "9180:17:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 11133
                    },
                    "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": 11324,
                              "type": "function (address,uint256) view returns (uint256)",
                              "value": "balanceOfAt"
                            },
                            "id": 11134,
                            "name": "Identifier",
                            "src": "9215:11:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11129,
                              "type": "address",
                              "value": "_owner"
                            },
                            "id": 11135,
                            "name": "Identifier",
                            "src": "9227:6:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "number",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12582,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 11136,
                                "name": "Identifier",
                                "src": "9235:5:51"
                              }
                            ],
                            "id": 11137,
                            "name": "MemberAccess",
                            "src": "9235:12:51"
                          }
                        ],
                        "id": 11138,
                        "name": "FunctionCall",
                        "src": "9215:33:51"
                      }
                    ],
                    "id": 11139,
                    "name": "Return",
                    "src": "9208:40:51"
                  }
                ],
                "id": 11140,
                "name": "Block",
                "src": "9198:57:51"
              }
            ],
            "id": 11141,
            "name": "FunctionDefinition",
            "src": "9121:134:51"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "approve",
              "payable": false,
              "scope": 11873,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_spender",
                      "scope": 11209,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 11142,
                        "name": "ElementaryTypeName",
                        "src": "9671:7:51"
                      }
                    ],
                    "id": 11143,
                    "name": "VariableDeclaration",
                    "src": "9671:16:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 11209,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 11144,
                        "name": "ElementaryTypeName",
                        "src": "9689:7:51"
                      }
                    ],
                    "id": 11145,
                    "name": "VariableDeclaration",
                    "src": "9689:15:51"
                  }
                ],
                "id": 11146,
                "name": "ParameterList",
                "src": "9670:35:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "success",
                      "scope": 11209,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 11147,
                        "name": "ElementaryTypeName",
                        "src": "9722:4:51"
                      }
                    ],
                    "id": 11148,
                    "name": "VariableDeclaration",
                    "src": "9722:12:51"
                  }
                ],
                "id": 11149,
                "name": "ParameterList",
                "src": "9721:14:51"
              },
              {
                "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": 11150,
                            "name": "Identifier",
                            "src": "9746:7:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10888,
                              "type": "bool",
                              "value": "transfersEnabled"
                            },
                            "id": 11151,
                            "name": "Identifier",
                            "src": "9754:16:51"
                          }
                        ],
                        "id": 11152,
                        "name": "FunctionCall",
                        "src": "9746:25:51"
                      }
                    ],
                    "id": 11153,
                    "name": "ExpressionStatement",
                    "src": "9746:25:51"
                  },
                  {
                    "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": 11154,
                            "name": "Identifier",
                            "src": "10085:7:51"
                          },
                          {
                            "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,
                                  "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,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11145,
                                          "type": "uint256",
                                          "value": "_amount"
                                        },
                                        "id": 11155,
                                        "name": "Identifier",
                                        "src": "10094:7:51"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "30",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 0",
                                          "value": "0"
                                        },
                                        "id": 11156,
                                        "name": "Literal",
                                        "src": "10105:1:51"
                                      }
                                    ],
                                    "id": 11157,
                                    "name": "BinaryOperation",
                                    "src": "10094:12:51"
                                  }
                                ],
                                "id": 11158,
                                "name": "TupleExpression",
                                "src": "10093:14:51"
                              },
                              {
                                "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": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "mapping(address => uint256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 10883,
                                                  "type": "mapping(address => mapping(address => uint256))",
                                                  "value": "allowed"
                                                },
                                                "id": 11159,
                                                "name": "Identifier",
                                                "src": "10112:7:51"
                                              },
                                              {
                                                "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": 11160,
                                                    "name": "Identifier",
                                                    "src": "10120:3:51"
                                                  }
                                                ],
                                                "id": 11161,
                                                "name": "MemberAccess",
                                                "src": "10120:10:51"
                                              }
                                            ],
                                            "id": 11162,
                                            "name": "IndexAccess",
                                            "src": "10112:19:51"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11143,
                                              "type": "address",
                                              "value": "_spender"
                                            },
                                            "id": 11163,
                                            "name": "Identifier",
                                            "src": "10132:8:51"
                                          }
                                        ],
                                        "id": 11164,
                                        "name": "IndexAccess",
                                        "src": "10112:29:51"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "30",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 0",
                                          "value": "0"
                                        },
                                        "id": 11165,
                                        "name": "Literal",
                                        "src": "10145:1:51"
                                      }
                                    ],
                                    "id": 11166,
                                    "name": "BinaryOperation",
                                    "src": "10112:34:51"
                                  }
                                ],
                                "id": 11167,
                                "name": "TupleExpression",
                                "src": "10111:36:51"
                              }
                            ],
                            "id": 11168,
                            "name": "BinaryOperation",
                            "src": "10093:54:51"
                          }
                        ],
                        "id": 11169,
                        "name": "FunctionCall",
                        "src": "10085:63:51"
                      }
                    ],
                    "id": 11170,
                    "name": "ExpressionStatement",
                    "src": "10085:63:51"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11752,
                              "type": "function (address) view returns (bool)",
                              "value": "isContract"
                            },
                            "id": 11171,
                            "name": "Identifier",
                            "src": "10231:10:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10816,
                              "type": "address",
                              "value": "controller"
                            },
                            "id": 11172,
                            "name": "Identifier",
                            "src": "10242:10:51"
                          }
                        ],
                        "id": 11173,
                        "name": "FunctionCall",
                        "src": "10231:22:51"
                      },
                      {
                        "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": 11174,
                                    "name": "Identifier",
                                    "src": "10337:7:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "==",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "bool",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "onApprove",
                                              "referencedDeclaration": 10799,
                                              "type": "function (address,address,uint256) external returns (bool)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "type": "contract ITokenController",
                                                  "type_conversion": true
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      ],
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 10800,
                                                      "type": "type(contract ITokenController)",
                                                      "value": "ITokenController"
                                                    },
                                                    "id": 11175,
                                                    "name": "Identifier",
                                                    "src": "10345:16:51"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 10816,
                                                      "type": "address",
                                                      "value": "controller"
                                                    },
                                                    "id": 11176,
                                                    "name": "Identifier",
                                                    "src": "10362:10:51"
                                                  }
                                                ],
                                                "id": 11177,
                                                "name": "FunctionCall",
                                                "src": "10345:28:51"
                                              }
                                            ],
                                            "id": 11178,
                                            "name": "MemberAccess",
                                            "src": "10345:38:51"
                                          },
                                          {
                                            "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": 11179,
                                                "name": "Identifier",
                                                "src": "10384:3:51"
                                              }
                                            ],
                                            "id": 11180,
                                            "name": "MemberAccess",
                                            "src": "10384:10:51"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11143,
                                              "type": "address",
                                              "value": "_spender"
                                            },
                                            "id": 11181,
                                            "name": "Identifier",
                                            "src": "10396:8:51"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11145,
                                              "type": "uint256",
                                              "value": "_amount"
                                            },
                                            "id": 11182,
                                            "name": "Identifier",
                                            "src": "10406:7:51"
                                          }
                                        ],
                                        "id": 11183,
                                        "name": "FunctionCall",
                                        "src": "10345:69:51"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "74727565",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "bool",
                                          "type": "bool",
                                          "value": "true"
                                        },
                                        "id": 11184,
                                        "name": "Literal",
                                        "src": "10418:4:51"
                                      }
                                    ],
                                    "id": 11185,
                                    "name": "BinaryOperation",
                                    "src": "10345:77:51"
                                  }
                                ],
                                "id": 11186,
                                "name": "FunctionCall",
                                "src": "10337:86:51"
                              }
                            ],
                            "id": 11187,
                            "name": "ExpressionStatement",
                            "src": "10337:86:51"
                          }
                        ],
                        "id": 11188,
                        "name": "Block",
                        "src": "10255:179:51"
                      }
                    ],
                    "id": 11189,
                    "name": "IfStatement",
                    "src": "10227:207:51"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "mapping(address => uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 10883,
                                      "type": "mapping(address => mapping(address => uint256))",
                                      "value": "allowed"
                                    },
                                    "id": 11190,
                                    "name": "Identifier",
                                    "src": "10444:7:51"
                                  },
                                  {
                                    "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": 11191,
                                        "name": "Identifier",
                                        "src": "10452:3:51"
                                      }
                                    ],
                                    "id": 11192,
                                    "name": "MemberAccess",
                                    "src": "10452:10:51"
                                  }
                                ],
                                "id": 11194,
                                "name": "IndexAccess",
                                "src": "10444:19:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11143,
                                  "type": "address",
                                  "value": "_spender"
                                },
                                "id": 11193,
                                "name": "Identifier",
                                "src": "10464:8:51"
                              }
                            ],
                            "id": 11195,
                            "name": "IndexAccess",
                            "src": "10444:29:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11145,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 11196,
                            "name": "Identifier",
                            "src": "10476:7:51"
                          }
                        ],
                        "id": 11197,
                        "name": "Assignment",
                        "src": "10444:39:51"
                      }
                    ],
                    "id": 11198,
                    "name": "ExpressionStatement",
                    "src": "10444:39:51"
                  },
                  {
                    "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_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11872,
                              "type": "function (address,address,uint256)",
                              "value": "Approval"
                            },
                            "id": 11199,
                            "name": "Identifier",
                            "src": "10493:8:51"
                          },
                          {
                            "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": 11200,
                                "name": "Identifier",
                                "src": "10502:3:51"
                              }
                            ],
                            "id": 11201,
                            "name": "MemberAccess",
                            "src": "10502:10:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11143,
                              "type": "address",
                              "value": "_spender"
                            },
                            "id": 11202,
                            "name": "Identifier",
                            "src": "10514:8:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11145,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 11203,
                            "name": "Identifier",
                            "src": "10524:7:51"
                          }
                        ],
                        "id": 11204,
                        "name": "FunctionCall",
                        "src": "10493:39:51"
                      }
                    ],
                    "id": 11205,
                    "name": "ExpressionStatement",
                    "src": "10493:39:51"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 11149
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 11206,
                        "name": "Literal",
                        "src": "10549:4:51"
                      }
                    ],
                    "id": 11207,
                    "name": "Return",
                    "src": "10542:11:51"
                  }
                ],
                "id": 11208,
                "name": "Block",
                "src": "9736:824:51"
              }
            ],
            "id": 11209,
            "name": "FunctionDefinition",
            "src": "9654:906:51"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "allowance",
              "payable": false,
              "scope": 11873,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_owner",
                      "scope": 11225,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 11210,
                        "name": "ElementaryTypeName",
                        "src": "10898:7:51"
                      }
                    ],
                    "id": 11211,
                    "name": "VariableDeclaration",
                    "src": "10898:14:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_spender",
                      "scope": 11225,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 11212,
                        "name": "ElementaryTypeName",
                        "src": "10914:7:51"
                      }
                    ],
                    "id": 11213,
                    "name": "VariableDeclaration",
                    "src": "10914:16:51"
                  }
                ],
                "id": 11214,
                "name": "ParameterList",
                "src": "10897:34:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "remaining",
                      "scope": 11225,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 11215,
                        "name": "ElementaryTypeName",
                        "src": "10957:7:51"
                      }
                    ],
                    "id": 11216,
                    "name": "VariableDeclaration",
                    "src": "10957:17:51"
                  }
                ],
                "id": 11217,
                "name": "ParameterList",
                "src": "10956:19:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 11217
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "mapping(address => uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 10883,
                                  "type": "mapping(address => mapping(address => uint256))",
                                  "value": "allowed"
                                },
                                "id": 11218,
                                "name": "Identifier",
                                "src": "10993:7:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11211,
                                  "type": "address",
                                  "value": "_owner"
                                },
                                "id": 11219,
                                "name": "Identifier",
                                "src": "11001:6:51"
                              }
                            ],
                            "id": 11220,
                            "name": "IndexAccess",
                            "src": "10993:15:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11213,
                              "type": "address",
                              "value": "_spender"
                            },
                            "id": 11221,
                            "name": "Identifier",
                            "src": "11009:8:51"
                          }
                        ],
                        "id": 11222,
                        "name": "IndexAccess",
                        "src": "10993:25:51"
                      }
                    ],
                    "id": 11223,
                    "name": "Return",
                    "src": "10986:32:51"
                  }
                ],
                "id": 11224,
                "name": "Block",
                "src": "10976:49:51"
              }
            ],
            "id": 11225,
            "name": "FunctionDefinition",
            "src": "10879:146:51"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "approveAndCall",
              "payable": false,
              "scope": 11873,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_spender",
                      "scope": 11257,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 11226,
                        "name": "ElementaryTypeName",
                        "src": "11566:7:51"
                      }
                    ],
                    "id": 11227,
                    "name": "VariableDeclaration",
                    "src": "11566:16:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 11257,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 11228,
                        "name": "ElementaryTypeName",
                        "src": "11584:7:51"
                      }
                    ],
                    "id": 11229,
                    "name": "VariableDeclaration",
                    "src": "11584:15:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_extraData",
                      "scope": 11257,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 11230,
                        "name": "ElementaryTypeName",
                        "src": "11601:5:51"
                      }
                    ],
                    "id": 11231,
                    "name": "VariableDeclaration",
                    "src": "11601:16:51"
                  }
                ],
                "id": 11232,
                "name": "ParameterList",
                "src": "11565:53:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "success",
                      "scope": 11257,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 11233,
                        "name": "ElementaryTypeName",
                        "src": "11635:4:51"
                      }
                    ],
                    "id": 11234,
                    "name": "VariableDeclaration",
                    "src": "11635:12:51"
                  }
                ],
                "id": 11235,
                "name": "ParameterList",
                "src": "11634:14:51"
              },
              {
                "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": 11236,
                            "name": "Identifier",
                            "src": "11659:7:51"
                          },
                          {
                            "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": 11209,
                                  "type": "function (address,uint256) returns (bool)",
                                  "value": "approve"
                                },
                                "id": 11237,
                                "name": "Identifier",
                                "src": "11667:7:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11227,
                                  "type": "address",
                                  "value": "_spender"
                                },
                                "id": 11238,
                                "name": "Identifier",
                                "src": "11675:8:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11229,
                                  "type": "uint256",
                                  "value": "_amount"
                                },
                                "id": 11239,
                                "name": "Identifier",
                                "src": "11685:7:51"
                              }
                            ],
                            "id": 11240,
                            "name": "FunctionCall",
                            "src": "11667:26:51"
                          }
                        ],
                        "id": 11241,
                        "name": "FunctionCall",
                        "src": "11659:35:51"
                      }
                    ],
                    "id": 11242,
                    "name": "ExpressionStatement",
                    "src": "11659:35:51"
                  },
                  {
                    "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_contract$_MiniMeToken_$11873",
                                  "typeString": "contract MiniMeToken"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "receiveApproval",
                              "referencedDeclaration": 10849,
                              "type": "function (address,uint256,address,bytes memory) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "contract ApproveAndCallFallBack",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 10850,
                                      "type": "type(contract ApproveAndCallFallBack)",
                                      "value": "ApproveAndCallFallBack"
                                    },
                                    "id": 11243,
                                    "name": "Identifier",
                                    "src": "11705:22:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11227,
                                      "type": "address",
                                      "value": "_spender"
                                    },
                                    "id": 11244,
                                    "name": "Identifier",
                                    "src": "11728:8:51"
                                  }
                                ],
                                "id": 11245,
                                "name": "FunctionCall",
                                "src": "11705:32:51"
                              }
                            ],
                            "id": 11246,
                            "name": "MemberAccess",
                            "src": "11705:48:51"
                          },
                          {
                            "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": 11247,
                                "name": "Identifier",
                                "src": "11767:3:51"
                              }
                            ],
                            "id": 11248,
                            "name": "MemberAccess",
                            "src": "11767:10:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11229,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 11249,
                            "name": "Identifier",
                            "src": "11791:7:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12683,
                              "type": "contract MiniMeToken",
                              "value": "this"
                            },
                            "id": 11250,
                            "name": "Identifier",
                            "src": "11812:4:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11231,
                              "type": "bytes memory",
                              "value": "_extraData"
                            },
                            "id": 11251,
                            "name": "Identifier",
                            "src": "11830:10:51"
                          }
                        ],
                        "id": 11252,
                        "name": "FunctionCall",
                        "src": "11705:145:51"
                      }
                    ],
                    "id": 11253,
                    "name": "ExpressionStatement",
                    "src": "11705:145:51"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 11235
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 11254,
                        "name": "Literal",
                        "src": "11868:4:51"
                      }
                    ],
                    "id": 11255,
                    "name": "Return",
                    "src": "11861:11:51"
                  }
                ],
                "id": 11256,
                "name": "Block",
                "src": "11649:230:51"
              }
            ],
            "id": 11257,
            "name": "FunctionDefinition",
            "src": "11542:337:51"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "totalSupply",
              "payable": false,
              "scope": 11873,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 11258,
                "name": "ParameterList",
                "src": "12023:2:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 11268,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 11259,
                        "name": "ElementaryTypeName",
                        "src": "12051:4:51"
                      }
                    ],
                    "id": 11260,
                    "name": "VariableDeclaration",
                    "src": "12051:4:51"
                  }
                ],
                "id": 11261,
                "name": "ParameterList",
                "src": "12050:6:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 11261
                    },
                    "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"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11371,
                              "type": "function (uint256) view returns (uint256)",
                              "value": "totalSupplyAt"
                            },
                            "id": 11262,
                            "name": "Identifier",
                            "src": "12074:13:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "number",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12582,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 11263,
                                "name": "Identifier",
                                "src": "12088:5:51"
                              }
                            ],
                            "id": 11264,
                            "name": "MemberAccess",
                            "src": "12088:12:51"
                          }
                        ],
                        "id": 11265,
                        "name": "FunctionCall",
                        "src": "12074:27:51"
                      }
                    ],
                    "id": 11266,
                    "name": "Return",
                    "src": "12067:34:51"
                  }
                ],
                "id": 11267,
                "name": "Block",
                "src": "12057:51:51"
              }
            ],
            "id": 11268,
            "name": "FunctionDefinition",
            "src": "12003:105:51"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "balanceOfAt",
              "payable": false,
              "scope": 11873,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_owner",
                      "scope": 11324,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 11269,
                        "name": "ElementaryTypeName",
                        "src": "12483:7:51"
                      }
                    ],
                    "id": 11270,
                    "name": "VariableDeclaration",
                    "src": "12483:14:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_blockNumber",
                      "scope": 11324,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 11271,
                        "name": "ElementaryTypeName",
                        "src": "12499:4:51"
                      }
                    ],
                    "id": 11272,
                    "name": "VariableDeclaration",
                    "src": "12499:17:51"
                  }
                ],
                "id": 11273,
                "name": "ParameterList",
                "src": "12482:35:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 11324,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 11274,
                        "name": "ElementaryTypeName",
                        "src": "12543:4:51"
                      }
                    ],
                    "id": 11275,
                    "name": "VariableDeclaration",
                    "src": "12543:4:51"
                  }
                ],
                "id": 11276,
                "name": "ParameterList",
                "src": "12542:6:51"
              },
              {
                "children": [
                  {
                    "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,
                              "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": 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 MiniMeToken.Checkpoint storage ref[] storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 10877,
                                              "type": "mapping(address => struct MiniMeToken.Checkpoint storage ref[] storage ref)",
                                              "value": "balances"
                                            },
                                            "id": 11277,
                                            "name": "Identifier",
                                            "src": "12892:8:51"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11270,
                                              "type": "address",
                                              "value": "_owner"
                                            },
                                            "id": 11278,
                                            "name": "Identifier",
                                            "src": "12901:6:51"
                                          }
                                        ],
                                        "id": 11279,
                                        "name": "IndexAccess",
                                        "src": "12892:16:51"
                                      }
                                    ],
                                    "id": 11280,
                                    "name": "MemberAccess",
                                    "src": "12892:23:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 11281,
                                    "name": "Literal",
                                    "src": "12919:1:51"
                                  }
                                ],
                                "id": 11282,
                                "name": "BinaryOperation",
                                "src": "12892:28:51"
                              }
                            ],
                            "id": 11283,
                            "name": "TupleExpression",
                            "src": "12891:30:51"
                          },
                          {
                            "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": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "fromBlock",
                                      "referencedDeclaration": 10863,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct MiniMeToken.Checkpoint storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "struct MiniMeToken.Checkpoint storage ref[] storage ref"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 10877,
                                                  "type": "mapping(address => struct MiniMeToken.Checkpoint storage ref[] storage ref)",
                                                  "value": "balances"
                                                },
                                                "id": 11284,
                                                "name": "Identifier",
                                                "src": "12926:8:51"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 11270,
                                                  "type": "address",
                                                  "value": "_owner"
                                                },
                                                "id": 11285,
                                                "name": "Identifier",
                                                "src": "12935:6:51"
                                              }
                                            ],
                                            "id": 11286,
                                            "name": "IndexAccess",
                                            "src": "12926:16:51"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 0",
                                              "value": "0"
                                            },
                                            "id": 11287,
                                            "name": "Literal",
                                            "src": "12943:1:51"
                                          }
                                        ],
                                        "id": 11288,
                                        "name": "IndexAccess",
                                        "src": "12926:19:51"
                                      }
                                    ],
                                    "id": 11289,
                                    "name": "MemberAccess",
                                    "src": "12926:29:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11272,
                                      "type": "uint256",
                                      "value": "_blockNumber"
                                    },
                                    "id": 11290,
                                    "name": "Identifier",
                                    "src": "12958:12:51"
                                  }
                                ],
                                "id": 11291,
                                "name": "BinaryOperation",
                                "src": "12926:44:51"
                              }
                            ],
                            "id": 11292,
                            "name": "TupleExpression",
                            "src": "12925:46:51"
                          }
                        ],
                        "id": 11293,
                        "name": "BinaryOperation",
                        "src": "12891:80:51"
                      },
                      {
                        "children": [
                          {
                            "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,
                                      "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": 11294,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "12991:7:51"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 10868,
                                          "type": "contract MiniMeToken",
                                          "value": "parentToken"
                                        },
                                        "id": 11295,
                                        "name": "Identifier",
                                        "src": "12999:11:51"
                                      }
                                    ],
                                    "id": 11296,
                                    "name": "FunctionCall",
                                    "src": "12991:20:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 11297,
                                    "name": "Literal",
                                    "src": "13015:1:51"
                                  }
                                ],
                                "id": 11298,
                                "name": "BinaryOperation",
                                "src": "12991:25:51"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "functionReturnParameters": 11276
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "uint256",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "balanceOfAt",
                                              "referencedDeclaration": 11324,
                                              "type": "function (address,uint256) view external returns (uint256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 10868,
                                                  "type": "contract MiniMeToken",
                                                  "value": "parentToken"
                                                },
                                                "id": 11299,
                                                "name": "Identifier",
                                                "src": "13043:11:51"
                                              }
                                            ],
                                            "id": 11300,
                                            "name": "MemberAccess",
                                            "src": "13043:23:51"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11270,
                                              "type": "address",
                                              "value": "_owner"
                                            },
                                            "id": 11301,
                                            "name": "Identifier",
                                            "src": "13067:6:51"
                                          },
                                          {
                                            "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"
                                                    }
                                                  ],
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 11769,
                                                  "type": "function (uint256,uint256) returns (uint256)",
                                                  "value": "min"
                                                },
                                                "id": 11302,
                                                "name": "Identifier",
                                                "src": "13075:3:51"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 11272,
                                                  "type": "uint256",
                                                  "value": "_blockNumber"
                                                },
                                                "id": 11303,
                                                "name": "Identifier",
                                                "src": "13079:12:51"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 10870,
                                                  "type": "uint256",
                                                  "value": "parentSnapShotBlock"
                                                },
                                                "id": 11304,
                                                "name": "Identifier",
                                                "src": "13093:19:51"
                                              }
                                            ],
                                            "id": 11305,
                                            "name": "FunctionCall",
                                            "src": "13075:38:51"
                                          }
                                        ],
                                        "id": 11306,
                                        "name": "FunctionCall",
                                        "src": "13043:71:51"
                                      }
                                    ],
                                    "id": 11307,
                                    "name": "Return",
                                    "src": "13036:78:51"
                                  }
                                ],
                                "id": 11308,
                                "name": "Block",
                                "src": "13018:111:51"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "functionReturnParameters": 11276
                                    },
                                    "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": 11309,
                                        "name": "Literal",
                                        "src": "13193:1:51"
                                      }
                                    ],
                                    "id": 11310,
                                    "name": "Return",
                                    "src": "13186:8:51"
                                  }
                                ],
                                "id": 11311,
                                "name": "Block",
                                "src": "13135:74:51"
                              }
                            ],
                            "id": 11312,
                            "name": "IfStatement",
                            "src": "12987:222:51"
                          }
                        ],
                        "id": 11313,
                        "name": "Block",
                        "src": "12973:321:51"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 11276
                            },
                            "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_array$_t_struct$_Checkpoint_$10866_storage_$dyn_storage",
                                          "typeString": "struct MiniMeToken.Checkpoint storage ref[] storage ref"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11659,
                                      "type": "function (struct MiniMeToken.Checkpoint storage ref[] storage pointer,uint256) view returns (uint256)",
                                      "value": "getValueAt"
                                    },
                                    "id": 11314,
                                    "name": "Identifier",
                                    "src": "13321:10:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "struct MiniMeToken.Checkpoint storage ref[] storage ref"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 10877,
                                          "type": "mapping(address => struct MiniMeToken.Checkpoint storage ref[] storage ref)",
                                          "value": "balances"
                                        },
                                        "id": 11315,
                                        "name": "Identifier",
                                        "src": "13332:8:51"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11270,
                                          "type": "address",
                                          "value": "_owner"
                                        },
                                        "id": 11316,
                                        "name": "Identifier",
                                        "src": "13341:6:51"
                                      }
                                    ],
                                    "id": 11317,
                                    "name": "IndexAccess",
                                    "src": "13332:16:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11272,
                                      "type": "uint256",
                                      "value": "_blockNumber"
                                    },
                                    "id": 11318,
                                    "name": "Identifier",
                                    "src": "13350:12:51"
                                  }
                                ],
                                "id": 11319,
                                "name": "FunctionCall",
                                "src": "13321:42:51"
                              }
                            ],
                            "id": 11320,
                            "name": "Return",
                            "src": "13314:49:51"
                          }
                        ],
                        "id": 11321,
                        "name": "Block",
                        "src": "13300:74:51"
                      }
                    ],
                    "id": 11322,
                    "name": "IfStatement",
                    "src": "12887:487:51"
                  }
                ],
                "id": 11323,
                "name": "Block",
                "src": "12549:831:51"
              }
            ],
            "id": 11324,
            "name": "FunctionDefinition",
            "src": "12462:918:51"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "totalSupplyAt",
              "payable": false,
              "scope": 11873,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_blockNumber",
                      "scope": 11371,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 11325,
                        "name": "ElementaryTypeName",
                        "src": "13616:4:51"
                      }
                    ],
                    "id": 11326,
                    "name": "VariableDeclaration",
                    "src": "13616:17:51"
                  }
                ],
                "id": 11327,
                "name": "ParameterList",
                "src": "13615:19:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 11371,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 11328,
                        "name": "ElementaryTypeName",
                        "src": "13659:4:51"
                      }
                    ],
                    "id": 11329,
                    "name": "VariableDeclaration",
                    "src": "13659:4:51"
                  }
                ],
                "id": 11330,
                "name": "ParameterList",
                "src": "13658:6:51"
              },
              {
                "children": [
                  {
                    "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,
                              "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": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "length",
                                      "referencedDeclaration": null,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 10886,
                                          "type": "struct MiniMeToken.Checkpoint storage ref[] storage ref",
                                          "value": "totalSupplyHistory"
                                        },
                                        "id": 11331,
                                        "name": "Identifier",
                                        "src": "14032:18:51"
                                      }
                                    ],
                                    "id": 11332,
                                    "name": "MemberAccess",
                                    "src": "14032:25:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 11333,
                                    "name": "Literal",
                                    "src": "14061:1:51"
                                  }
                                ],
                                "id": 11334,
                                "name": "BinaryOperation",
                                "src": "14032:30:51"
                              }
                            ],
                            "id": 11335,
                            "name": "TupleExpression",
                            "src": "14031:32:51"
                          },
                          {
                            "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": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "fromBlock",
                                      "referencedDeclaration": 10863,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct MiniMeToken.Checkpoint storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 10886,
                                              "type": "struct MiniMeToken.Checkpoint storage ref[] storage ref",
                                              "value": "totalSupplyHistory"
                                            },
                                            "id": 11336,
                                            "name": "Identifier",
                                            "src": "14068:18:51"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 0",
                                              "value": "0"
                                            },
                                            "id": 11337,
                                            "name": "Literal",
                                            "src": "14087:1:51"
                                          }
                                        ],
                                        "id": 11338,
                                        "name": "IndexAccess",
                                        "src": "14068:21:51"
                                      }
                                    ],
                                    "id": 11339,
                                    "name": "MemberAccess",
                                    "src": "14068:31:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11326,
                                      "type": "uint256",
                                      "value": "_blockNumber"
                                    },
                                    "id": 11340,
                                    "name": "Identifier",
                                    "src": "14102:12:51"
                                  }
                                ],
                                "id": 11341,
                                "name": "BinaryOperation",
                                "src": "14068:46:51"
                              }
                            ],
                            "id": 11342,
                            "name": "TupleExpression",
                            "src": "14067:48:51"
                          }
                        ],
                        "id": 11343,
                        "name": "BinaryOperation",
                        "src": "14031:84:51"
                      },
                      {
                        "children": [
                          {
                            "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,
                                      "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": 11344,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "14135:7:51"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 10868,
                                          "type": "contract MiniMeToken",
                                          "value": "parentToken"
                                        },
                                        "id": 11345,
                                        "name": "Identifier",
                                        "src": "14143:11:51"
                                      }
                                    ],
                                    "id": 11346,
                                    "name": "FunctionCall",
                                    "src": "14135:20:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 11347,
                                    "name": "Literal",
                                    "src": "14159:1:51"
                                  }
                                ],
                                "id": 11348,
                                "name": "BinaryOperation",
                                "src": "14135:25:51"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "functionReturnParameters": 11330
                                    },
                                    "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": "totalSupplyAt",
                                              "referencedDeclaration": 11371,
                                              "type": "function (uint256) view external returns (uint256)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 10868,
                                                  "type": "contract MiniMeToken",
                                                  "value": "parentToken"
                                                },
                                                "id": 11349,
                                                "name": "Identifier",
                                                "src": "14187:11:51"
                                              }
                                            ],
                                            "id": 11350,
                                            "name": "MemberAccess",
                                            "src": "14187:25:51"
                                          },
                                          {
                                            "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"
                                                    }
                                                  ],
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 11769,
                                                  "type": "function (uint256,uint256) returns (uint256)",
                                                  "value": "min"
                                                },
                                                "id": 11351,
                                                "name": "Identifier",
                                                "src": "14213:3:51"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 11326,
                                                  "type": "uint256",
                                                  "value": "_blockNumber"
                                                },
                                                "id": 11352,
                                                "name": "Identifier",
                                                "src": "14217:12:51"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 10870,
                                                  "type": "uint256",
                                                  "value": "parentSnapShotBlock"
                                                },
                                                "id": 11353,
                                                "name": "Identifier",
                                                "src": "14231:19:51"
                                              }
                                            ],
                                            "id": 11354,
                                            "name": "FunctionCall",
                                            "src": "14213:38:51"
                                          }
                                        ],
                                        "id": 11355,
                                        "name": "FunctionCall",
                                        "src": "14187:65:51"
                                      }
                                    ],
                                    "id": 11356,
                                    "name": "Return",
                                    "src": "14180:72:51"
                                  }
                                ],
                                "id": 11357,
                                "name": "Block",
                                "src": "14162:105:51"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "functionReturnParameters": 11330
                                    },
                                    "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": 11358,
                                        "name": "Literal",
                                        "src": "14298:1:51"
                                      }
                                    ],
                                    "id": 11359,
                                    "name": "Return",
                                    "src": "14291:8:51"
                                  }
                                ],
                                "id": 11360,
                                "name": "Block",
                                "src": "14273:41:51"
                              }
                            ],
                            "id": 11361,
                            "name": "IfStatement",
                            "src": "14131:183:51"
                          }
                        ],
                        "id": 11362,
                        "name": "Block",
                        "src": "14117:286:51"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 11330
                            },
                            "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_array$_t_struct$_Checkpoint_$10866_storage_$dyn_storage",
                                          "typeString": "struct MiniMeToken.Checkpoint storage ref[] storage ref"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11659,
                                      "type": "function (struct MiniMeToken.Checkpoint storage ref[] storage pointer,uint256) view returns (uint256)",
                                      "value": "getValueAt"
                                    },
                                    "id": 11363,
                                    "name": "Identifier",
                                    "src": "14430:10:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 10886,
                                      "type": "struct MiniMeToken.Checkpoint storage ref[] storage ref",
                                      "value": "totalSupplyHistory"
                                    },
                                    "id": 11364,
                                    "name": "Identifier",
                                    "src": "14441:18:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11326,
                                      "type": "uint256",
                                      "value": "_blockNumber"
                                    },
                                    "id": 11365,
                                    "name": "Identifier",
                                    "src": "14461:12:51"
                                  }
                                ],
                                "id": 11366,
                                "name": "FunctionCall",
                                "src": "14430:44:51"
                              }
                            ],
                            "id": 11367,
                            "name": "Return",
                            "src": "14423:51:51"
                          }
                        ],
                        "id": 11368,
                        "name": "Block",
                        "src": "14409:76:51"
                      }
                    ],
                    "id": 11369,
                    "name": "IfStatement",
                    "src": "14027:458:51"
                  }
                ],
                "id": 11370,
                "name": "Block",
                "src": "13665:826:51"
              }
            ],
            "id": 11371,
            "name": "FunctionDefinition",
            "src": "13593:898:51"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "createCloneToken",
              "payable": false,
              "scope": 11873,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_cloneTokenName",
                      "scope": 11429,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 11372,
                        "name": "ElementaryTypeName",
                        "src": "15263:6:51"
                      }
                    ],
                    "id": 11373,
                    "name": "VariableDeclaration",
                    "src": "15263:22:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_cloneDecimalUnits",
                      "scope": 11429,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 11374,
                        "name": "ElementaryTypeName",
                        "src": "15295:5:51"
                      }
                    ],
                    "id": 11375,
                    "name": "VariableDeclaration",
                    "src": "15295:24:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_cloneTokenSymbol",
                      "scope": 11429,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 11376,
                        "name": "ElementaryTypeName",
                        "src": "15329:6:51"
                      }
                    ],
                    "id": 11377,
                    "name": "VariableDeclaration",
                    "src": "15329:24:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_snapshotBlock",
                      "scope": 11429,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 11378,
                        "name": "ElementaryTypeName",
                        "src": "15363:4:51"
                      }
                    ],
                    "id": 11379,
                    "name": "VariableDeclaration",
                    "src": "15363:19:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_transfersEnabled",
                      "scope": 11429,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 11380,
                        "name": "ElementaryTypeName",
                        "src": "15392:4:51"
                      }
                    ],
                    "id": 11381,
                    "name": "VariableDeclaration",
                    "src": "15392:22:51"
                  }
                ],
                "id": 11382,
                "name": "ParameterList",
                "src": "15253:167:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 11429,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 11383,
                        "name": "ElementaryTypeName",
                        "src": "15436:7:51"
                      }
                    ],
                    "id": 11384,
                    "name": "VariableDeclaration",
                    "src": "15436:7:51"
                  }
                ],
                "id": 11385,
                "name": "ParameterList",
                "src": "15435:9:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        11387
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "snapshot",
                          "scope": 11429,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 11386,
                            "name": "ElementaryTypeName",
                            "src": "15459:7:51"
                          }
                        ],
                        "id": 11387,
                        "name": "VariableDeclaration",
                        "src": "15459:16:51"
                      },
                      {
                        "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": 11379,
                                  "type": "uint256",
                                  "value": "_snapshotBlock"
                                },
                                "id": 11388,
                                "name": "Identifier",
                                "src": "15478:14:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 11389,
                                "name": "Literal",
                                "src": "15496:1:51"
                              }
                            ],
                            "id": 11390,
                            "name": "BinaryOperation",
                            "src": "15478:19:51"
                          },
                          {
                            "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,
                                  "lValueRequested": false,
                                  "member_name": "number",
                                  "referencedDeclaration": null,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12582,
                                      "type": "block",
                                      "value": "block"
                                    },
                                    "id": 11391,
                                    "name": "Identifier",
                                    "src": "15500:5:51"
                                  }
                                ],
                                "id": 11392,
                                "name": "MemberAccess",
                                "src": "15500:12:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 11393,
                                "name": "Literal",
                                "src": "15515:1:51"
                              }
                            ],
                            "id": 11394,
                            "name": "BinaryOperation",
                            "src": "15500:16:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11379,
                              "type": "uint256",
                              "value": "_snapshotBlock"
                            },
                            "id": 11395,
                            "name": "Identifier",
                            "src": "15519:14:51"
                          }
                        ],
                        "id": 11396,
                        "name": "Conditional",
                        "src": "15478:55:51"
                      }
                    ],
                    "id": 11397,
                    "name": "VariableDeclarationStatement",
                    "src": "15459:74:51"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        11399
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "cloneToken",
                          "scope": 11429,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract MiniMeToken",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "MiniMeToken",
                              "referencedDeclaration": 11873,
                              "type": "contract MiniMeToken"
                            },
                            "id": 11398,
                            "name": "UserDefinedTypeName",
                            "src": "15544:11:51"
                          }
                        ],
                        "id": 11399,
                        "name": "VariableDeclaration",
                        "src": "15544:22:51"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract MiniMeToken",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MiniMeToken_$11873",
                                  "typeString": "contract MiniMeToken"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "createCloneToken",
                              "referencedDeclaration": 11913,
                              "type": "function (address,uint256,string memory,uint8,string memory,bool) external returns (contract MiniMeToken)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 10890,
                                  "type": "contract MiniMeTokenFactory",
                                  "value": "tokenFactory"
                                },
                                "id": 11400,
                                "name": "Identifier",
                                "src": "15569:12:51"
                              }
                            ],
                            "id": 11401,
                            "name": "MemberAccess",
                            "src": "15569:29:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12683,
                              "type": "contract MiniMeToken",
                              "value": "this"
                            },
                            "id": 11402,
                            "name": "Identifier",
                            "src": "15612:4:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11387,
                              "type": "uint256",
                              "value": "snapshot"
                            },
                            "id": 11403,
                            "name": "Identifier",
                            "src": "15630:8:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11373,
                              "type": "string memory",
                              "value": "_cloneTokenName"
                            },
                            "id": 11404,
                            "name": "Identifier",
                            "src": "15652:15:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11375,
                              "type": "uint8",
                              "value": "_cloneDecimalUnits"
                            },
                            "id": 11405,
                            "name": "Identifier",
                            "src": "15681:18:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11377,
                              "type": "string memory",
                              "value": "_cloneTokenSymbol"
                            },
                            "id": 11406,
                            "name": "Identifier",
                            "src": "15713:17:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11381,
                              "type": "bool",
                              "value": "_transfersEnabled"
                            },
                            "id": 11407,
                            "name": "Identifier",
                            "src": "15744:17:51"
                          }
                        ],
                        "id": 11408,
                        "name": "FunctionCall",
                        "src": "15569:202:51"
                      }
                    ],
                    "id": 11409,
                    "name": "VariableDeclarationStatement",
                    "src": "15544:227:51"
                  },
                  {
                    "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"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "changeController",
                              "referencedDeclaration": 10837,
                              "type": "function (address) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11399,
                                  "type": "contract MiniMeToken",
                                  "value": "cloneToken"
                                },
                                "id": 11410,
                                "name": "Identifier",
                                "src": "15782:10:51"
                              }
                            ],
                            "id": 11412,
                            "name": "MemberAccess",
                            "src": "15782:27:51"
                          },
                          {
                            "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": 11413,
                                "name": "Identifier",
                                "src": "15810:3:51"
                              }
                            ],
                            "id": 11414,
                            "name": "MemberAccess",
                            "src": "15810:10:51"
                          }
                        ],
                        "id": 11415,
                        "name": "FunctionCall",
                        "src": "15782:39:51"
                      }
                    ],
                    "id": 11416,
                    "name": "ExpressionStatement",
                    "src": "15782:39:51"
                  },
                  {
                    "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": 11864,
                              "type": "function (address,uint256)",
                              "value": "NewCloneToken"
                            },
                            "id": 11417,
                            "name": "Identifier",
                            "src": "15901:13:51"
                          },
                          {
                            "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": 11418,
                                "name": "ElementaryTypeNameExpression",
                                "src": "15915:7:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11399,
                                  "type": "contract MiniMeToken",
                                  "value": "cloneToken"
                                },
                                "id": 11419,
                                "name": "Identifier",
                                "src": "15923:10:51"
                              }
                            ],
                            "id": 11420,
                            "name": "FunctionCall",
                            "src": "15915:19:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11387,
                              "type": "uint256",
                              "value": "snapshot"
                            },
                            "id": 11421,
                            "name": "Identifier",
                            "src": "15936:8:51"
                          }
                        ],
                        "id": 11422,
                        "name": "FunctionCall",
                        "src": "15901:44:51"
                      }
                    ],
                    "id": 11423,
                    "name": "ExpressionStatement",
                    "src": "15901:44:51"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 11385
                    },
                    "children": [
                      {
                        "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": 11424,
                            "name": "ElementaryTypeNameExpression",
                            "src": "15962:7:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11399,
                              "type": "contract MiniMeToken",
                              "value": "cloneToken"
                            },
                            "id": 11425,
                            "name": "Identifier",
                            "src": "15970:10:51"
                          }
                        ],
                        "id": 11426,
                        "name": "FunctionCall",
                        "src": "15962:19:51"
                      }
                    ],
                    "id": 11427,
                    "name": "Return",
                    "src": "15955:26:51"
                  }
                ],
                "id": 11428,
                "name": "Block",
                "src": "15449:539:51"
              }
            ],
            "id": 11429,
            "name": "FunctionDefinition",
            "src": "15228:760:51"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "generateTokens",
              "payable": false,
              "scope": 11873,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_owner",
                      "scope": 11492,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 11430,
                        "name": "ElementaryTypeName",
                        "src": "16343:7:51"
                      }
                    ],
                    "id": 11431,
                    "name": "VariableDeclaration",
                    "src": "16343:14:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 11492,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 11432,
                        "name": "ElementaryTypeName",
                        "src": "16359:4:51"
                      }
                    ],
                    "id": 11433,
                    "name": "VariableDeclaration",
                    "src": "16359:12:51"
                  }
                ],
                "id": 11434,
                "name": "ParameterList",
                "src": "16342:30:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 11492,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 11437,
                        "name": "ElementaryTypeName",
                        "src": "16404:4:51"
                      }
                    ],
                    "id": 11438,
                    "name": "VariableDeclaration",
                    "src": "16404:4:51"
                  }
                ],
                "id": 11439,
                "name": "ParameterList",
                "src": "16403:6:51"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 10814,
                      "type": "modifier ()",
                      "value": "onlyController"
                    },
                    "id": 11435,
                    "name": "Identifier",
                    "src": "16373:14:51"
                  }
                ],
                "id": 11436,
                "name": "ModifierInvocation",
                "src": "16373:14:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        11441
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "curTotalSupply",
                          "scope": 11492,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 11440,
                            "name": "ElementaryTypeName",
                            "src": "16420:4:51"
                          }
                        ],
                        "id": 11441,
                        "name": "VariableDeclaration",
                        "src": "16420:19:51"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11268,
                              "type": "function () view returns (uint256)",
                              "value": "totalSupply"
                            },
                            "id": 11442,
                            "name": "Identifier",
                            "src": "16442:11:51"
                          }
                        ],
                        "id": 11443,
                        "name": "FunctionCall",
                        "src": "16442:13:51"
                      }
                    ],
                    "id": 11444,
                    "name": "VariableDeclarationStatement",
                    "src": "16420:35:51"
                  },
                  {
                    "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": 11445,
                            "name": "Identifier",
                            "src": "16465:7:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11441,
                                      "type": "uint256",
                                      "value": "curTotalSupply"
                                    },
                                    "id": 11446,
                                    "name": "Identifier",
                                    "src": "16473:14:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11433,
                                      "type": "uint256",
                                      "value": "_amount"
                                    },
                                    "id": 11447,
                                    "name": "Identifier",
                                    "src": "16490:7:51"
                                  }
                                ],
                                "id": 11448,
                                "name": "BinaryOperation",
                                "src": "16473:24:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11441,
                                  "type": "uint256",
                                  "value": "curTotalSupply"
                                },
                                "id": 11449,
                                "name": "Identifier",
                                "src": "16501:14:51"
                              }
                            ],
                            "id": 11450,
                            "name": "BinaryOperation",
                            "src": "16473:42:51"
                          }
                        ],
                        "id": 11451,
                        "name": "FunctionCall",
                        "src": "16465:51:51"
                      }
                    ],
                    "id": 11452,
                    "name": "ExpressionStatement",
                    "src": "16465:51:51"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        11454
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "previousBalanceTo",
                          "scope": 11492,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 11453,
                            "name": "ElementaryTypeName",
                            "src": "16548:4:51"
                          }
                        ],
                        "id": 11454,
                        "name": "VariableDeclaration",
                        "src": "16548:22:51"
                      },
                      {
                        "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": 11141,
                              "type": "function (address) view returns (uint256)",
                              "value": "balanceOf"
                            },
                            "id": 11455,
                            "name": "Identifier",
                            "src": "16573:9:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11431,
                              "type": "address",
                              "value": "_owner"
                            },
                            "id": 11456,
                            "name": "Identifier",
                            "src": "16583:6:51"
                          }
                        ],
                        "id": 11457,
                        "name": "FunctionCall",
                        "src": "16573:17:51"
                      }
                    ],
                    "id": 11458,
                    "name": "VariableDeclarationStatement",
                    "src": "16548:42:51"
                  },
                  {
                    "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": 11459,
                            "name": "Identifier",
                            "src": "16600:7:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11454,
                                      "type": "uint256",
                                      "value": "previousBalanceTo"
                                    },
                                    "id": 11460,
                                    "name": "Identifier",
                                    "src": "16608:17:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11433,
                                      "type": "uint256",
                                      "value": "_amount"
                                    },
                                    "id": 11461,
                                    "name": "Identifier",
                                    "src": "16628:7:51"
                                  }
                                ],
                                "id": 11462,
                                "name": "BinaryOperation",
                                "src": "16608:27:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11454,
                                  "type": "uint256",
                                  "value": "previousBalanceTo"
                                },
                                "id": 11463,
                                "name": "Identifier",
                                "src": "16639:17:51"
                              }
                            ],
                            "id": 11464,
                            "name": "BinaryOperation",
                            "src": "16608:48:51"
                          }
                        ],
                        "id": 11465,
                        "name": "FunctionCall",
                        "src": "16600:57:51"
                      }
                    ],
                    "id": 11466,
                    "name": "ExpressionStatement",
                    "src": "16600:57:51"
                  },
                  {
                    "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_array$_t_struct$_Checkpoint_$10866_storage_$dyn_storage",
                                  "typeString": "struct MiniMeToken.Checkpoint storage ref[] storage ref"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11730,
                              "type": "function (struct MiniMeToken.Checkpoint storage ref[] storage pointer,uint256)",
                              "value": "updateValueAtNow"
                            },
                            "id": 11467,
                            "name": "Identifier",
                            "src": "16689:16:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10886,
                              "type": "struct MiniMeToken.Checkpoint storage ref[] storage ref",
                              "value": "totalSupplyHistory"
                            },
                            "id": 11468,
                            "name": "Identifier",
                            "src": "16706:18:51"
                          },
                          {
                            "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": 11441,
                                  "type": "uint256",
                                  "value": "curTotalSupply"
                                },
                                "id": 11469,
                                "name": "Identifier",
                                "src": "16726:14:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11433,
                                  "type": "uint256",
                                  "value": "_amount"
                                },
                                "id": 11470,
                                "name": "Identifier",
                                "src": "16743:7:51"
                              }
                            ],
                            "id": 11471,
                            "name": "BinaryOperation",
                            "src": "16726:24:51"
                          }
                        ],
                        "id": 11472,
                        "name": "FunctionCall",
                        "src": "16689:62:51"
                      }
                    ],
                    "id": 11473,
                    "name": "ExpressionStatement",
                    "src": "16689:62:51"
                  },
                  {
                    "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_array$_t_struct$_Checkpoint_$10866_storage_$dyn_storage",
                                  "typeString": "struct MiniMeToken.Checkpoint storage ref[] storage ref"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11730,
                              "type": "function (struct MiniMeToken.Checkpoint storage ref[] storage pointer,uint256)",
                              "value": "updateValueAtNow"
                            },
                            "id": 11474,
                            "name": "Identifier",
                            "src": "16761:16:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "struct MiniMeToken.Checkpoint storage ref[] storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 10877,
                                  "type": "mapping(address => struct MiniMeToken.Checkpoint storage ref[] storage ref)",
                                  "value": "balances"
                                },
                                "id": 11475,
                                "name": "Identifier",
                                "src": "16778:8:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11431,
                                  "type": "address",
                                  "value": "_owner"
                                },
                                "id": 11476,
                                "name": "Identifier",
                                "src": "16787:6:51"
                              }
                            ],
                            "id": 11477,
                            "name": "IndexAccess",
                            "src": "16778:16:51"
                          },
                          {
                            "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": 11454,
                                  "type": "uint256",
                                  "value": "previousBalanceTo"
                                },
                                "id": 11478,
                                "name": "Identifier",
                                "src": "16796:17:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11433,
                                  "type": "uint256",
                                  "value": "_amount"
                                },
                                "id": 11479,
                                "name": "Identifier",
                                "src": "16816:7:51"
                              }
                            ],
                            "id": 11480,
                            "name": "BinaryOperation",
                            "src": "16796:27:51"
                          }
                        ],
                        "id": 11481,
                        "name": "FunctionCall",
                        "src": "16761:63:51"
                      }
                    ],
                    "id": 11482,
                    "name": "ExpressionStatement",
                    "src": "16761:63:51"
                  },
                  {
                    "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_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11858,
                              "type": "function (address,address,uint256)",
                              "value": "Transfer"
                            },
                            "id": 11483,
                            "name": "Identifier",
                            "src": "16834:8:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 11484,
                            "name": "Literal",
                            "src": "16843:1:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11431,
                              "type": "address",
                              "value": "_owner"
                            },
                            "id": 11485,
                            "name": "Identifier",
                            "src": "16846:6:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11433,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 11486,
                            "name": "Identifier",
                            "src": "16854:7:51"
                          }
                        ],
                        "id": 11487,
                        "name": "FunctionCall",
                        "src": "16834:28:51"
                      }
                    ],
                    "id": 11488,
                    "name": "ExpressionStatement",
                    "src": "16834:28:51"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 11439
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 11489,
                        "name": "Literal",
                        "src": "16879:4:51"
                      }
                    ],
                    "id": 11490,
                    "name": "Return",
                    "src": "16872:11:51"
                  }
                ],
                "id": 11491,
                "name": "Block",
                "src": "16410:480:51"
              }
            ],
            "id": 11492,
            "name": "FunctionDefinition",
            "src": "16319:571:51"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "destroyTokens",
              "payable": false,
              "scope": 11873,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_owner",
                      "scope": 11551,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 11493,
                        "name": "ElementaryTypeName",
                        "src": "17143:7:51"
                      }
                    ],
                    "id": 11494,
                    "name": "VariableDeclaration",
                    "src": "17143:14:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amount",
                      "scope": 11551,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 11495,
                        "name": "ElementaryTypeName",
                        "src": "17159:4:51"
                      }
                    ],
                    "id": 11496,
                    "name": "VariableDeclaration",
                    "src": "17159:12:51"
                  }
                ],
                "id": 11497,
                "name": "ParameterList",
                "src": "17142:30:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 11551,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 11500,
                        "name": "ElementaryTypeName",
                        "src": "17204:4:51"
                      }
                    ],
                    "id": 11501,
                    "name": "VariableDeclaration",
                    "src": "17204:4:51"
                  }
                ],
                "id": 11502,
                "name": "ParameterList",
                "src": "17203:6:51"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 10814,
                      "type": "modifier ()",
                      "value": "onlyController"
                    },
                    "id": 11498,
                    "name": "Identifier",
                    "src": "17173:14:51"
                  }
                ],
                "id": 11499,
                "name": "ModifierInvocation",
                "src": "17173:14:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        11504
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "curTotalSupply",
                          "scope": 11551,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 11503,
                            "name": "ElementaryTypeName",
                            "src": "17220:4:51"
                          }
                        ],
                        "id": 11504,
                        "name": "VariableDeclaration",
                        "src": "17220:19:51"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11268,
                              "type": "function () view returns (uint256)",
                              "value": "totalSupply"
                            },
                            "id": 11505,
                            "name": "Identifier",
                            "src": "17242:11:51"
                          }
                        ],
                        "id": 11506,
                        "name": "FunctionCall",
                        "src": "17242:13:51"
                      }
                    ],
                    "id": 11507,
                    "name": "VariableDeclarationStatement",
                    "src": "17220:35:51"
                  },
                  {
                    "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": 11508,
                            "name": "Identifier",
                            "src": "17265:7:51"
                          },
                          {
                            "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": 11504,
                                  "type": "uint256",
                                  "value": "curTotalSupply"
                                },
                                "id": 11509,
                                "name": "Identifier",
                                "src": "17273:14:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11496,
                                  "type": "uint256",
                                  "value": "_amount"
                                },
                                "id": 11510,
                                "name": "Identifier",
                                "src": "17291:7:51"
                              }
                            ],
                            "id": 11511,
                            "name": "BinaryOperation",
                            "src": "17273:25:51"
                          }
                        ],
                        "id": 11512,
                        "name": "FunctionCall",
                        "src": "17265:34:51"
                      }
                    ],
                    "id": 11513,
                    "name": "ExpressionStatement",
                    "src": "17265:34:51"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        11515
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "previousBalanceFrom",
                          "scope": 11551,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 11514,
                            "name": "ElementaryTypeName",
                            "src": "17309:4:51"
                          }
                        ],
                        "id": 11515,
                        "name": "VariableDeclaration",
                        "src": "17309:24:51"
                      },
                      {
                        "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": 11141,
                              "type": "function (address) view returns (uint256)",
                              "value": "balanceOf"
                            },
                            "id": 11516,
                            "name": "Identifier",
                            "src": "17336:9:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11494,
                              "type": "address",
                              "value": "_owner"
                            },
                            "id": 11517,
                            "name": "Identifier",
                            "src": "17346:6:51"
                          }
                        ],
                        "id": 11518,
                        "name": "FunctionCall",
                        "src": "17336:17:51"
                      }
                    ],
                    "id": 11519,
                    "name": "VariableDeclarationStatement",
                    "src": "17309:44:51"
                  },
                  {
                    "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": 11520,
                            "name": "Identifier",
                            "src": "17363:7:51"
                          },
                          {
                            "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": 11515,
                                  "type": "uint256",
                                  "value": "previousBalanceFrom"
                                },
                                "id": 11521,
                                "name": "Identifier",
                                "src": "17371:19:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11496,
                                  "type": "uint256",
                                  "value": "_amount"
                                },
                                "id": 11522,
                                "name": "Identifier",
                                "src": "17394:7:51"
                              }
                            ],
                            "id": 11523,
                            "name": "BinaryOperation",
                            "src": "17371:30:51"
                          }
                        ],
                        "id": 11524,
                        "name": "FunctionCall",
                        "src": "17363:39:51"
                      }
                    ],
                    "id": 11525,
                    "name": "ExpressionStatement",
                    "src": "17363:39:51"
                  },
                  {
                    "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_array$_t_struct$_Checkpoint_$10866_storage_$dyn_storage",
                                  "typeString": "struct MiniMeToken.Checkpoint storage ref[] storage ref"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11730,
                              "type": "function (struct MiniMeToken.Checkpoint storage ref[] storage pointer,uint256)",
                              "value": "updateValueAtNow"
                            },
                            "id": 11526,
                            "name": "Identifier",
                            "src": "17412:16:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10886,
                              "type": "struct MiniMeToken.Checkpoint storage ref[] storage ref",
                              "value": "totalSupplyHistory"
                            },
                            "id": 11527,
                            "name": "Identifier",
                            "src": "17429:18:51"
                          },
                          {
                            "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": 11504,
                                  "type": "uint256",
                                  "value": "curTotalSupply"
                                },
                                "id": 11528,
                                "name": "Identifier",
                                "src": "17449:14:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11496,
                                  "type": "uint256",
                                  "value": "_amount"
                                },
                                "id": 11529,
                                "name": "Identifier",
                                "src": "17466:7:51"
                              }
                            ],
                            "id": 11530,
                            "name": "BinaryOperation",
                            "src": "17449:24:51"
                          }
                        ],
                        "id": 11531,
                        "name": "FunctionCall",
                        "src": "17412:62:51"
                      }
                    ],
                    "id": 11532,
                    "name": "ExpressionStatement",
                    "src": "17412:62:51"
                  },
                  {
                    "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_array$_t_struct$_Checkpoint_$10866_storage_$dyn_storage",
                                  "typeString": "struct MiniMeToken.Checkpoint storage ref[] storage ref"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11730,
                              "type": "function (struct MiniMeToken.Checkpoint storage ref[] storage pointer,uint256)",
                              "value": "updateValueAtNow"
                            },
                            "id": 11533,
                            "name": "Identifier",
                            "src": "17484:16:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "struct MiniMeToken.Checkpoint storage ref[] storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 10877,
                                  "type": "mapping(address => struct MiniMeToken.Checkpoint storage ref[] storage ref)",
                                  "value": "balances"
                                },
                                "id": 11534,
                                "name": "Identifier",
                                "src": "17501:8:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11494,
                                  "type": "address",
                                  "value": "_owner"
                                },
                                "id": 11535,
                                "name": "Identifier",
                                "src": "17510:6:51"
                              }
                            ],
                            "id": 11536,
                            "name": "IndexAccess",
                            "src": "17501:16:51"
                          },
                          {
                            "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": 11515,
                                  "type": "uint256",
                                  "value": "previousBalanceFrom"
                                },
                                "id": 11537,
                                "name": "Identifier",
                                "src": "17519:19:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11496,
                                  "type": "uint256",
                                  "value": "_amount"
                                },
                                "id": 11538,
                                "name": "Identifier",
                                "src": "17541:7:51"
                              }
                            ],
                            "id": 11539,
                            "name": "BinaryOperation",
                            "src": "17519:29:51"
                          }
                        ],
                        "id": 11540,
                        "name": "FunctionCall",
                        "src": "17484:65:51"
                      }
                    ],
                    "id": 11541,
                    "name": "ExpressionStatement",
                    "src": "17484:65:51"
                  },
                  {
                    "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_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11858,
                              "type": "function (address,address,uint256)",
                              "value": "Transfer"
                            },
                            "id": 11542,
                            "name": "Identifier",
                            "src": "17559:8:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11494,
                              "type": "address",
                              "value": "_owner"
                            },
                            "id": 11543,
                            "name": "Identifier",
                            "src": "17568:6:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 11544,
                            "name": "Literal",
                            "src": "17576:1:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11496,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 11545,
                            "name": "Identifier",
                            "src": "17579:7:51"
                          }
                        ],
                        "id": 11546,
                        "name": "FunctionCall",
                        "src": "17559:28:51"
                      }
                    ],
                    "id": 11547,
                    "name": "ExpressionStatement",
                    "src": "17559:28:51"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 11502
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 11548,
                        "name": "Literal",
                        "src": "17604:4:51"
                      }
                    ],
                    "id": 11549,
                    "name": "Return",
                    "src": "17597:11:51"
                  }
                ],
                "id": 11550,
                "name": "Block",
                "src": "17210:405:51"
              }
            ],
            "id": 11551,
            "name": "FunctionDefinition",
            "src": "17120:495:51"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "enableTransfers",
              "payable": false,
              "scope": 11873,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_transfersEnabled",
                      "scope": 11563,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 11552,
                        "name": "ElementaryTypeName",
                        "src": "17863:4:51"
                      }
                    ],
                    "id": 11553,
                    "name": "VariableDeclaration",
                    "src": "17863:22:51"
                  }
                ],
                "id": 11554,
                "name": "ParameterList",
                "src": "17862:24:51"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 11557,
                "name": "ParameterList",
                "src": "17909:0:51"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 10814,
                      "type": "modifier ()",
                      "value": "onlyController"
                    },
                    "id": 11555,
                    "name": "Identifier",
                    "src": "17887:14:51"
                  }
                ],
                "id": 11556,
                "name": "ModifierInvocation",
                "src": "17887:14:51"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10888,
                              "type": "bool",
                              "value": "transfersEnabled"
                            },
                            "id": 11558,
                            "name": "Identifier",
                            "src": "17919:16:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11553,
                              "type": "bool",
                              "value": "_transfersEnabled"
                            },
                            "id": 11559,
                            "name": "Identifier",
                            "src": "17938:17:51"
                          }
                        ],
                        "id": 11560,
                        "name": "Assignment",
                        "src": "17919:36:51"
                      }
                    ],
                    "id": 11561,
                    "name": "ExpressionStatement",
                    "src": "17919:36:51"
                  }
                ],
                "id": 11562,
                "name": "Block",
                "src": "17909:53:51"
              }
            ],
            "id": 11563,
            "name": "FunctionDefinition",
            "src": "17838:124:51"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getValueAt",
              "payable": false,
              "scope": 11873,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "checkpoints",
                      "scope": 11659,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct MiniMeToken.Checkpoint storage ref[] storage pointer",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "length": null,
                          "type": "struct MiniMeToken.Checkpoint storage ref[] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Checkpoint",
                              "referencedDeclaration": 10866,
                              "type": "struct MiniMeToken.Checkpoint storage pointer"
                            },
                            "id": 11564,
                            "name": "UserDefinedTypeName",
                            "src": "18356:10:51"
                          }
                        ],
                        "id": 11565,
                        "name": "ArrayTypeName",
                        "src": "18356:12:51"
                      }
                    ],
                    "id": 11566,
                    "name": "VariableDeclaration",
                    "src": "18356:32:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_block",
                      "scope": 11659,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 11567,
                        "name": "ElementaryTypeName",
                        "src": "18390:4:51"
                      }
                    ],
                    "id": 11568,
                    "name": "VariableDeclaration",
                    "src": "18390:11:51"
                  }
                ],
                "id": 11569,
                "name": "ParameterList",
                "src": "18355:47:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 11659,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 11570,
                        "name": "ElementaryTypeName",
                        "src": "18430:4:51"
                      }
                    ],
                    "id": 11571,
                    "name": "VariableDeclaration",
                    "src": "18430:4:51"
                  }
                ],
                "id": 11572,
                "name": "ParameterList",
                "src": "18429:6:51"
              },
              {
                "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,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11566,
                                  "type": "struct MiniMeToken.Checkpoint storage ref[] storage pointer",
                                  "value": "checkpoints"
                                },
                                "id": 11573,
                                "name": "Identifier",
                                "src": "18450:11:51"
                              }
                            ],
                            "id": 11574,
                            "name": "MemberAccess",
                            "src": "18450:18:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 11575,
                            "name": "Literal",
                            "src": "18472:1:51"
                          }
                        ],
                        "id": 11576,
                        "name": "BinaryOperation",
                        "src": "18450:23:51"
                      },
                      {
                        "attributes": {
                          "functionReturnParameters": 11572
                        },
                        "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": 11577,
                            "name": "Literal",
                            "src": "18494:1:51"
                          }
                        ],
                        "id": 11578,
                        "name": "Return",
                        "src": "18487:8:51"
                      }
                    ],
                    "id": 11579,
                    "name": "IfStatement",
                    "src": "18446:49:51"
                  },
                  {
                    "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": 11568,
                              "type": "uint256",
                              "value": "_block"
                            },
                            "id": 11580,
                            "name": "Identifier",
                            "src": "18551:6:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "fromBlock",
                              "referencedDeclaration": 10863,
                              "type": "uint128"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct MiniMeToken.Checkpoint storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11566,
                                      "type": "struct MiniMeToken.Checkpoint storage ref[] storage pointer",
                                      "value": "checkpoints"
                                    },
                                    "id": 11581,
                                    "name": "Identifier",
                                    "src": "18561:11:51"
                                  },
                                  {
                                    "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": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "length",
                                          "referencedDeclaration": null,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11566,
                                              "type": "struct MiniMeToken.Checkpoint storage ref[] storage pointer",
                                              "value": "checkpoints"
                                            },
                                            "id": 11582,
                                            "name": "Identifier",
                                            "src": "18573:11:51"
                                          }
                                        ],
                                        "id": 11583,
                                        "name": "MemberAccess",
                                        "src": "18573:18:51"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "31",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 1",
                                          "value": "1"
                                        },
                                        "id": 11584,
                                        "name": "Literal",
                                        "src": "18592:1:51"
                                      }
                                    ],
                                    "id": 11585,
                                    "name": "BinaryOperation",
                                    "src": "18573:20:51"
                                  }
                                ],
                                "id": 11586,
                                "name": "IndexAccess",
                                "src": "18561:33:51"
                              }
                            ],
                            "id": 11587,
                            "name": "MemberAccess",
                            "src": "18561:43:51"
                          }
                        ],
                        "id": 11588,
                        "name": "BinaryOperation",
                        "src": "18551:53:51"
                      },
                      {
                        "attributes": {
                          "functionReturnParameters": 11572
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "value",
                              "referencedDeclaration": 10865,
                              "type": "uint128"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct MiniMeToken.Checkpoint storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11566,
                                      "type": "struct MiniMeToken.Checkpoint storage ref[] storage pointer",
                                      "value": "checkpoints"
                                    },
                                    "id": 11589,
                                    "name": "Identifier",
                                    "src": "18625:11:51"
                                  },
                                  {
                                    "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": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "length",
                                          "referencedDeclaration": null,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11566,
                                              "type": "struct MiniMeToken.Checkpoint storage ref[] storage pointer",
                                              "value": "checkpoints"
                                            },
                                            "id": 11590,
                                            "name": "Identifier",
                                            "src": "18637:11:51"
                                          }
                                        ],
                                        "id": 11591,
                                        "name": "MemberAccess",
                                        "src": "18637:18:51"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "31",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 1",
                                          "value": "1"
                                        },
                                        "id": 11592,
                                        "name": "Literal",
                                        "src": "18656:1:51"
                                      }
                                    ],
                                    "id": 11593,
                                    "name": "BinaryOperation",
                                    "src": "18637:20:51"
                                  }
                                ],
                                "id": 11594,
                                "name": "IndexAccess",
                                "src": "18625:33:51"
                              }
                            ],
                            "id": 11595,
                            "name": "MemberAccess",
                            "src": "18625:39:51"
                          }
                        ],
                        "id": 11596,
                        "name": "Return",
                        "src": "18618:46:51"
                      }
                    ],
                    "id": 11597,
                    "name": "IfStatement",
                    "src": "18547:117:51"
                  },
                  {
                    "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": 11568,
                              "type": "uint256",
                              "value": "_block"
                            },
                            "id": 11598,
                            "name": "Identifier",
                            "src": "18678:6:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "fromBlock",
                              "referencedDeclaration": 10863,
                              "type": "uint128"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct MiniMeToken.Checkpoint storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11566,
                                      "type": "struct MiniMeToken.Checkpoint storage ref[] storage pointer",
                                      "value": "checkpoints"
                                    },
                                    "id": 11599,
                                    "name": "Identifier",
                                    "src": "18687:11:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 11600,
                                    "name": "Literal",
                                    "src": "18699:1:51"
                                  }
                                ],
                                "id": 11601,
                                "name": "IndexAccess",
                                "src": "18687:14:51"
                              }
                            ],
                            "id": 11602,
                            "name": "MemberAccess",
                            "src": "18687:24:51"
                          }
                        ],
                        "id": 11603,
                        "name": "BinaryOperation",
                        "src": "18678:33:51"
                      },
                      {
                        "attributes": {
                          "functionReturnParameters": 11572
                        },
                        "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": 11604,
                            "name": "Literal",
                            "src": "18732:1:51"
                          }
                        ],
                        "id": 11605,
                        "name": "Return",
                        "src": "18725:8:51"
                      }
                    ],
                    "id": 11606,
                    "name": "IfStatement",
                    "src": "18674:59:51"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        11608
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "min",
                          "scope": 11659,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 11607,
                            "name": "ElementaryTypeName",
                            "src": "18795:4:51"
                          }
                        ],
                        "id": 11608,
                        "name": "VariableDeclaration",
                        "src": "18795:8:51"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "30",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "number",
                          "type": "int_const 0",
                          "value": "0"
                        },
                        "id": 11609,
                        "name": "Literal",
                        "src": "18806:1:51"
                      }
                    ],
                    "id": 11610,
                    "name": "VariableDeclarationStatement",
                    "src": "18795:12:51"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        11612
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "max",
                          "scope": 11659,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 11611,
                            "name": "ElementaryTypeName",
                            "src": "18817:4:51"
                          }
                        ],
                        "id": 11612,
                        "name": "VariableDeclaration",
                        "src": "18817:8:51"
                      },
                      {
                        "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": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11566,
                                  "type": "struct MiniMeToken.Checkpoint storage ref[] storage pointer",
                                  "value": "checkpoints"
                                },
                                "id": 11613,
                                "name": "Identifier",
                                "src": "18828:11:51"
                              }
                            ],
                            "id": 11614,
                            "name": "MemberAccess",
                            "src": "18828:18:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 11615,
                            "name": "Literal",
                            "src": "18847:1:51"
                          }
                        ],
                        "id": 11616,
                        "name": "BinaryOperation",
                        "src": "18828:20:51"
                      }
                    ],
                    "id": 11617,
                    "name": "VariableDeclarationStatement",
                    "src": "18817:31:51"
                  },
                  {
                    "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": 11612,
                              "type": "uint256",
                              "value": "max"
                            },
                            "id": 11618,
                            "name": "Identifier",
                            "src": "18865:3:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11608,
                              "type": "uint256",
                              "value": "min"
                            },
                            "id": 11619,
                            "name": "Identifier",
                            "src": "18871:3:51"
                          }
                        ],
                        "id": 11620,
                        "name": "BinaryOperation",
                        "src": "18865:9:51"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                11622
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "name": "mid",
                                  "scope": 11659,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint",
                                      "type": "uint256"
                                    },
                                    "id": 11621,
                                    "name": "ElementaryTypeName",
                                    "src": "18890:4:51"
                                  }
                                ],
                                "id": 11622,
                                "name": "VariableDeclaration",
                                "src": "18890:8:51"
                              },
                              {
                                "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,
                                      "isInlineArray": 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": "uint256"
                                        },
                                        "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": 11612,
                                                  "type": "uint256",
                                                  "value": "max"
                                                },
                                                "id": 11623,
                                                "name": "Identifier",
                                                "src": "18902:3:51"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 11608,
                                                  "type": "uint256",
                                                  "value": "min"
                                                },
                                                "id": 11624,
                                                "name": "Identifier",
                                                "src": "18908:3:51"
                                              }
                                            ],
                                            "id": 11625,
                                            "name": "BinaryOperation",
                                            "src": "18902:9:51"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "31",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 1",
                                              "value": "1"
                                            },
                                            "id": 11626,
                                            "name": "Literal",
                                            "src": "18914:1:51"
                                          }
                                        ],
                                        "id": 11627,
                                        "name": "BinaryOperation",
                                        "src": "18902:13:51"
                                      }
                                    ],
                                    "id": 11628,
                                    "name": "TupleExpression",
                                    "src": "18901:15:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "32",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 2",
                                      "value": "2"
                                    },
                                    "id": 11629,
                                    "name": "Literal",
                                    "src": "18919:1:51"
                                  }
                                ],
                                "id": 11630,
                                "name": "BinaryOperation",
                                "src": "18901:19:51"
                              }
                            ],
                            "id": 11631,
                            "name": "VariableDeclarationStatement",
                            "src": "18890:30:51"
                          },
                          {
                            "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": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "fromBlock",
                                      "referencedDeclaration": 10863,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct MiniMeToken.Checkpoint storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11566,
                                              "type": "struct MiniMeToken.Checkpoint storage ref[] storage pointer",
                                              "value": "checkpoints"
                                            },
                                            "id": 11632,
                                            "name": "Identifier",
                                            "src": "18938:11:51"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11622,
                                              "type": "uint256",
                                              "value": "mid"
                                            },
                                            "id": 11633,
                                            "name": "Identifier",
                                            "src": "18950:3:51"
                                          }
                                        ],
                                        "id": 11634,
                                        "name": "IndexAccess",
                                        "src": "18938:16:51"
                                      }
                                    ],
                                    "id": 11635,
                                    "name": "MemberAccess",
                                    "src": "18938:26:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11568,
                                      "type": "uint256",
                                      "value": "_block"
                                    },
                                    "id": 11636,
                                    "name": "Identifier",
                                    "src": "18966:6:51"
                                  }
                                ],
                                "id": 11637,
                                "name": "BinaryOperation",
                                "src": "18938:34:51"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11608,
                                              "type": "uint256",
                                              "value": "min"
                                            },
                                            "id": 11638,
                                            "name": "Identifier",
                                            "src": "18992:3:51"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11622,
                                              "type": "uint256",
                                              "value": "mid"
                                            },
                                            "id": 11639,
                                            "name": "Identifier",
                                            "src": "18998:3:51"
                                          }
                                        ],
                                        "id": 11640,
                                        "name": "Assignment",
                                        "src": "18992:9:51"
                                      }
                                    ],
                                    "id": 11641,
                                    "name": "ExpressionStatement",
                                    "src": "18992:9:51"
                                  }
                                ],
                                "id": 11642,
                                "name": "Block",
                                "src": "18974:42:51"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11612,
                                              "type": "uint256",
                                              "value": "max"
                                            },
                                            "id": 11643,
                                            "name": "Identifier",
                                            "src": "19040:3:51"
                                          },
                                          {
                                            "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": 11622,
                                                  "type": "uint256",
                                                  "value": "mid"
                                                },
                                                "id": 11644,
                                                "name": "Identifier",
                                                "src": "19046:3:51"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "31",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 1",
                                                  "value": "1"
                                                },
                                                "id": 11645,
                                                "name": "Literal",
                                                "src": "19050:1:51"
                                              }
                                            ],
                                            "id": 11646,
                                            "name": "BinaryOperation",
                                            "src": "19046:5:51"
                                          }
                                        ],
                                        "id": 11647,
                                        "name": "Assignment",
                                        "src": "19040:11:51"
                                      }
                                    ],
                                    "id": 11648,
                                    "name": "ExpressionStatement",
                                    "src": "19040:11:51"
                                  }
                                ],
                                "id": 11649,
                                "name": "Block",
                                "src": "19022:44:51"
                              }
                            ],
                            "id": 11650,
                            "name": "IfStatement",
                            "src": "18934:132:51"
                          }
                        ],
                        "id": 11651,
                        "name": "Block",
                        "src": "18876:200:51"
                      }
                    ],
                    "id": 11652,
                    "name": "WhileStatement",
                    "src": "18858:218:51"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 11572
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "value",
                          "referencedDeclaration": 10865,
                          "type": "uint128"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "struct MiniMeToken.Checkpoint storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11566,
                                  "type": "struct MiniMeToken.Checkpoint storage ref[] storage pointer",
                                  "value": "checkpoints"
                                },
                                "id": 11653,
                                "name": "Identifier",
                                "src": "19092:11:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11608,
                                  "type": "uint256",
                                  "value": "min"
                                },
                                "id": 11654,
                                "name": "Identifier",
                                "src": "19104:3:51"
                              }
                            ],
                            "id": 11655,
                            "name": "IndexAccess",
                            "src": "19092:16:51"
                          }
                        ],
                        "id": 11656,
                        "name": "MemberAccess",
                        "src": "19092:22:51"
                      }
                    ],
                    "id": 11657,
                    "name": "Return",
                    "src": "19085:29:51"
                  }
                ],
                "id": 11658,
                "name": "Block",
                "src": "18436:685:51"
              }
            ],
            "id": 11659,
            "name": "FunctionDefinition",
            "src": "18336:785:51"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "updateValueAtNow",
              "payable": false,
              "scope": 11873,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "checkpoints",
                      "scope": 11730,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct MiniMeToken.Checkpoint storage ref[] storage pointer",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "length": null,
                          "type": "struct MiniMeToken.Checkpoint storage ref[] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Checkpoint",
                              "referencedDeclaration": 10866,
                              "type": "struct MiniMeToken.Checkpoint storage pointer"
                            },
                            "id": 11660,
                            "name": "UserDefinedTypeName",
                            "src": "19365:10:51"
                          }
                        ],
                        "id": 11661,
                        "name": "ArrayTypeName",
                        "src": "19365:12:51"
                      }
                    ],
                    "id": 11662,
                    "name": "VariableDeclaration",
                    "src": "19365:32:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_value",
                      "scope": 11730,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 11663,
                        "name": "ElementaryTypeName",
                        "src": "19399:4:51"
                      }
                    ],
                    "id": 11664,
                    "name": "VariableDeclaration",
                    "src": "19399:11:51"
                  }
                ],
                "id": 11665,
                "name": "ParameterList",
                "src": "19364:47:51"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 11666,
                "name": "ParameterList",
                "src": "19421:0:51"
              },
              {
                "children": [
                  {
                    "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,
                              "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": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "length",
                                      "referencedDeclaration": null,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11662,
                                          "type": "struct MiniMeToken.Checkpoint storage ref[] storage pointer",
                                          "value": "checkpoints"
                                        },
                                        "id": 11667,
                                        "name": "Identifier",
                                        "src": "19436:11:51"
                                      }
                                    ],
                                    "id": 11668,
                                    "name": "MemberAccess",
                                    "src": "19436:18:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 11669,
                                    "name": "Literal",
                                    "src": "19458:1:51"
                                  }
                                ],
                                "id": 11670,
                                "name": "BinaryOperation",
                                "src": "19436:23:51"
                              }
                            ],
                            "id": 11671,
                            "name": "TupleExpression",
                            "src": "19435:25:51"
                          },
                          {
                            "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": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "fromBlock",
                                      "referencedDeclaration": 10863,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct MiniMeToken.Checkpoint storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11662,
                                              "type": "struct MiniMeToken.Checkpoint storage ref[] storage pointer",
                                              "value": "checkpoints"
                                            },
                                            "id": 11672,
                                            "name": "Identifier",
                                            "src": "19465:11:51"
                                          },
                                          {
                                            "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": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "length",
                                                  "referencedDeclaration": null,
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 11662,
                                                      "type": "struct MiniMeToken.Checkpoint storage ref[] storage pointer",
                                                      "value": "checkpoints"
                                                    },
                                                    "id": 11673,
                                                    "name": "Identifier",
                                                    "src": "19477:11:51"
                                                  }
                                                ],
                                                "id": 11674,
                                                "name": "MemberAccess",
                                                "src": "19477:18:51"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "31",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 1",
                                                  "value": "1"
                                                },
                                                "id": 11675,
                                                "name": "Literal",
                                                "src": "19498:1:51"
                                              }
                                            ],
                                            "id": 11676,
                                            "name": "BinaryOperation",
                                            "src": "19477:22:51"
                                          }
                                        ],
                                        "id": 11677,
                                        "name": "IndexAccess",
                                        "src": "19465:35:51"
                                      }
                                    ],
                                    "id": 11678,
                                    "name": "MemberAccess",
                                    "src": "19465:45:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "number",
                                      "referencedDeclaration": null,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12582,
                                          "type": "block",
                                          "value": "block"
                                        },
                                        "id": 11679,
                                        "name": "Identifier",
                                        "src": "19513:5:51"
                                      }
                                    ],
                                    "id": 11680,
                                    "name": "MemberAccess",
                                    "src": "19513:12:51"
                                  }
                                ],
                                "id": 11681,
                                "name": "BinaryOperation",
                                "src": "19465:60:51"
                              }
                            ],
                            "id": 11682,
                            "name": "TupleExpression",
                            "src": "19464:62:51"
                          }
                        ],
                        "id": 11683,
                        "name": "BinaryOperation",
                        "src": "19435:91:51"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                11685
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "name": "newCheckPoint",
                                  "scope": 11730,
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "type": "struct MiniMeToken.Checkpoint storage pointer",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "contractScope": null,
                                      "name": "Checkpoint",
                                      "referencedDeclaration": 10866,
                                      "type": "struct MiniMeToken.Checkpoint storage pointer"
                                    },
                                    "id": 11684,
                                    "name": "UserDefinedTypeName",
                                    "src": "19542:10:51"
                                  }
                                ],
                                "id": 11685,
                                "name": "VariableDeclaration",
                                "src": "19542:32:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct MiniMeToken.Checkpoint storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11662,
                                      "type": "struct MiniMeToken.Checkpoint storage ref[] storage pointer",
                                      "value": "checkpoints"
                                    },
                                    "id": 11686,
                                    "name": "Identifier",
                                    "src": "19577:11:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "++",
                                      "prefix": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "member_name": "length",
                                          "referencedDeclaration": null,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11662,
                                              "type": "struct MiniMeToken.Checkpoint storage ref[] storage pointer",
                                              "value": "checkpoints"
                                            },
                                            "id": 11687,
                                            "name": "Identifier",
                                            "src": "19589:11:51"
                                          }
                                        ],
                                        "id": 11688,
                                        "name": "MemberAccess",
                                        "src": "19589:18:51"
                                      }
                                    ],
                                    "id": 11689,
                                    "name": "UnaryOperation",
                                    "src": "19589:20:51"
                                  }
                                ],
                                "id": 11690,
                                "name": "IndexAccess",
                                "src": "19577:33:51"
                              }
                            ],
                            "id": 11691,
                            "name": "VariableDeclarationStatement",
                            "src": "19542:68:51"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint128"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "member_name": "fromBlock",
                                      "referencedDeclaration": 10863,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11685,
                                          "type": "struct MiniMeToken.Checkpoint storage pointer",
                                          "value": "newCheckPoint"
                                        },
                                        "id": 11692,
                                        "name": "Identifier",
                                        "src": "19624:13:51"
                                      }
                                    ],
                                    "id": 11694,
                                    "name": "MemberAccess",
                                    "src": "19624:23:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint128",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint128)",
                                          "value": "uint128"
                                        },
                                        "id": 11695,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "19650:7:51"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "number",
                                          "referencedDeclaration": null,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 12582,
                                              "type": "block",
                                              "value": "block"
                                            },
                                            "id": 11696,
                                            "name": "Identifier",
                                            "src": "19658:5:51"
                                          }
                                        ],
                                        "id": 11697,
                                        "name": "MemberAccess",
                                        "src": "19658:12:51"
                                      }
                                    ],
                                    "id": 11698,
                                    "name": "FunctionCall",
                                    "src": "19650:21:51"
                                  }
                                ],
                                "id": 11699,
                                "name": "Assignment",
                                "src": "19624:47:51"
                              }
                            ],
                            "id": 11700,
                            "name": "ExpressionStatement",
                            "src": "19624:47:51"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint128"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "member_name": "value",
                                      "referencedDeclaration": 10865,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11685,
                                          "type": "struct MiniMeToken.Checkpoint storage pointer",
                                          "value": "newCheckPoint"
                                        },
                                        "id": 11701,
                                        "name": "Identifier",
                                        "src": "19685:13:51"
                                      }
                                    ],
                                    "id": 11703,
                                    "name": "MemberAccess",
                                    "src": "19685:19:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint128",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint128)",
                                          "value": "uint128"
                                        },
                                        "id": 11704,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "19707:7:51"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11664,
                                          "type": "uint256",
                                          "value": "_value"
                                        },
                                        "id": 11705,
                                        "name": "Identifier",
                                        "src": "19715:6:51"
                                      }
                                    ],
                                    "id": 11706,
                                    "name": "FunctionCall",
                                    "src": "19707:15:51"
                                  }
                                ],
                                "id": 11707,
                                "name": "Assignment",
                                "src": "19685:37:51"
                              }
                            ],
                            "id": 11708,
                            "name": "ExpressionStatement",
                            "src": "19685:37:51"
                          }
                        ],
                        "id": 11709,
                        "name": "Block",
                        "src": "19528:205:51"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                11711
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "name": "oldCheckPoint",
                                  "scope": 11730,
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "type": "struct MiniMeToken.Checkpoint storage pointer",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "contractScope": null,
                                      "name": "Checkpoint",
                                      "referencedDeclaration": 10866,
                                      "type": "struct MiniMeToken.Checkpoint storage pointer"
                                    },
                                    "id": 11710,
                                    "name": "UserDefinedTypeName",
                                    "src": "19753:10:51"
                                  }
                                ],
                                "id": 11711,
                                "name": "VariableDeclaration",
                                "src": "19753:32:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct MiniMeToken.Checkpoint storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 11662,
                                      "type": "struct MiniMeToken.Checkpoint storage ref[] storage pointer",
                                      "value": "checkpoints"
                                    },
                                    "id": 11712,
                                    "name": "Identifier",
                                    "src": "19788:11:51"
                                  },
                                  {
                                    "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": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "length",
                                          "referencedDeclaration": null,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 11662,
                                              "type": "struct MiniMeToken.Checkpoint storage ref[] storage pointer",
                                              "value": "checkpoints"
                                            },
                                            "id": 11713,
                                            "name": "Identifier",
                                            "src": "19800:11:51"
                                          }
                                        ],
                                        "id": 11714,
                                        "name": "MemberAccess",
                                        "src": "19800:18:51"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "31",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 1",
                                          "value": "1"
                                        },
                                        "id": 11715,
                                        "name": "Literal",
                                        "src": "19821:1:51"
                                      }
                                    ],
                                    "id": 11716,
                                    "name": "BinaryOperation",
                                    "src": "19800:22:51"
                                  }
                                ],
                                "id": 11717,
                                "name": "IndexAccess",
                                "src": "19788:35:51"
                              }
                            ],
                            "id": 11718,
                            "name": "VariableDeclarationStatement",
                            "src": "19753:70:51"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint128"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "member_name": "value",
                                      "referencedDeclaration": 10865,
                                      "type": "uint128"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11711,
                                          "type": "struct MiniMeToken.Checkpoint storage pointer",
                                          "value": "oldCheckPoint"
                                        },
                                        "id": 11719,
                                        "name": "Identifier",
                                        "src": "19837:13:51"
                                      }
                                    ],
                                    "id": 11721,
                                    "name": "MemberAccess",
                                    "src": "19837:19:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint128",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint128)",
                                          "value": "uint128"
                                        },
                                        "id": 11722,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "19859:7:51"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 11664,
                                          "type": "uint256",
                                          "value": "_value"
                                        },
                                        "id": 11723,
                                        "name": "Identifier",
                                        "src": "19867:6:51"
                                      }
                                    ],
                                    "id": 11724,
                                    "name": "FunctionCall",
                                    "src": "19859:15:51"
                                  }
                                ],
                                "id": 11725,
                                "name": "Assignment",
                                "src": "19837:37:51"
                              }
                            ],
                            "id": 11726,
                            "name": "ExpressionStatement",
                            "src": "19837:37:51"
                          }
                        ],
                        "id": 11727,
                        "name": "Block",
                        "src": "19739:146:51"
                      }
                    ],
                    "id": 11728,
                    "name": "IfStatement",
                    "src": "19431:454:51"
                  }
                ],
                "id": 11729,
                "name": "Block",
                "src": "19421:470:51"
              }
            ],
            "id": 11730,
            "name": "FunctionDefinition",
            "src": "19339:552:51"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "isContract",
              "payable": false,
              "scope": 11873,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_addr",
                      "scope": 11752,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 11731,
                        "name": "ElementaryTypeName",
                        "src": "20082:7:51"
                      }
                    ],
                    "id": 11732,
                    "name": "VariableDeclaration",
                    "src": "20082:13:51"
                  }
                ],
                "id": 11733,
                "name": "ParameterList",
                "src": "20081:15:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 11752,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 11734,
                        "name": "ElementaryTypeName",
                        "src": "20123:4:51"
                      }
                    ],
                    "id": 11735,
                    "name": "VariableDeclaration",
                    "src": "20123:4:51"
                  }
                ],
                "id": 11736,
                "name": "ParameterList",
                "src": "20122:6:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        null
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "size",
                          "scope": 11752,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 11737,
                            "name": "ElementaryTypeName",
                            "src": "20139:4:51"
                          }
                        ],
                        "id": 11738,
                        "name": "VariableDeclaration",
                        "src": "20139:9:51"
                      }
                    ],
                    "id": 11739,
                    "name": "VariableDeclarationStatement",
                    "src": "20139:9:51"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "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": 11732,
                              "type": "address",
                              "value": "_addr"
                            },
                            "id": 11740,
                            "name": "Identifier",
                            "src": "20162:5:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 11741,
                            "name": "Literal",
                            "src": "20171:1:51"
                          }
                        ],
                        "id": 11742,
                        "name": "BinaryOperation",
                        "src": "20162:10:51"
                      },
                      {
                        "attributes": {
                          "functionReturnParameters": 11736
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "66616c7365",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "bool",
                              "type": "bool",
                              "value": "false"
                            },
                            "id": 11743,
                            "name": "Literal",
                            "src": "20193:5:51"
                          }
                        ],
                        "id": 11744,
                        "name": "Return",
                        "src": "20186:12:51"
                      }
                    ],
                    "id": 11745,
                    "name": "IfStatement",
                    "src": "20158:40:51"
                  },
                  {
                    "attributes": {
                      "externalReferences": [
                        {
                          "size": {
                            "declaration": 11738,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20232:4:51",
                            "valueSize": 1
                          }
                        },
                        {
                          "_addr": {
                            "declaration": 11732,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20252:5:51",
                            "valueSize": 1
                          }
                        }
                      ],
                      "operations": "{\n    size := extcodesize(_addr)\n}"
                    },
                    "children": [],
                    "id": 11746,
                    "name": "InlineAssembly",
                    "src": "20209:75:51"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 11736
                    },
                    "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": 11738,
                              "type": "uint256",
                              "value": "size"
                            },
                            "id": 11747,
                            "name": "Identifier",
                            "src": "20285:4:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 11748,
                            "name": "Literal",
                            "src": "20290:1:51"
                          }
                        ],
                        "id": 11749,
                        "name": "BinaryOperation",
                        "src": "20285:6:51"
                      }
                    ],
                    "id": 11750,
                    "name": "Return",
                    "src": "20278:13:51"
                  }
                ],
                "id": 11751,
                "name": "Block",
                "src": "20129:169:51"
              }
            ],
            "id": 11752,
            "name": "FunctionDefinition",
            "src": "20062:236:51"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "min",
              "payable": false,
              "scope": 11873,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "a",
                      "scope": 11769,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 11753,
                        "name": "ElementaryTypeName",
                        "src": "20383:4:51"
                      }
                    ],
                    "id": 11754,
                    "name": "VariableDeclaration",
                    "src": "20383:6:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "b",
                      "scope": 11769,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 11755,
                        "name": "ElementaryTypeName",
                        "src": "20391:4:51"
                      }
                    ],
                    "id": 11756,
                    "name": "VariableDeclaration",
                    "src": "20391:6:51"
                  }
                ],
                "id": 11757,
                "name": "ParameterList",
                "src": "20382:16:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 11769,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 11758,
                        "name": "ElementaryTypeName",
                        "src": "20417:4:51"
                      }
                    ],
                    "id": 11759,
                    "name": "VariableDeclaration",
                    "src": "20417:4:51"
                  }
                ],
                "id": 11760,
                "name": "ParameterList",
                "src": "20416:6:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 11760
                    },
                    "children": [
                      {
                        "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": 11754,
                                  "type": "uint256",
                                  "value": "a"
                                },
                                "id": 11761,
                                "name": "Identifier",
                                "src": "20440:1:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11756,
                                  "type": "uint256",
                                  "value": "b"
                                },
                                "id": 11762,
                                "name": "Identifier",
                                "src": "20444:1:51"
                              }
                            ],
                            "id": 11763,
                            "name": "BinaryOperation",
                            "src": "20440:5:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11754,
                              "type": "uint256",
                              "value": "a"
                            },
                            "id": 11764,
                            "name": "Identifier",
                            "src": "20448:1:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11756,
                              "type": "uint256",
                              "value": "b"
                            },
                            "id": 11765,
                            "name": "Identifier",
                            "src": "20452:1:51"
                          }
                        ],
                        "id": 11766,
                        "name": "Conditional",
                        "src": "20440:13:51"
                      }
                    ],
                    "id": 11767,
                    "name": "Return",
                    "src": "20433:20:51"
                  }
                ],
                "id": 11768,
                "name": "Block",
                "src": "20423:37:51"
              }
            ],
            "id": 11769,
            "name": "FunctionDefinition",
            "src": "20370:90:51"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "",
              "payable": true,
              "scope": 11873,
              "stateMutability": "payable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 11770,
                "name": "ParameterList",
                "src": "20713:2:51"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 11771,
                "name": "ParameterList",
                "src": "20733:0:51"
              },
              {
                "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": 11772,
                            "name": "Identifier",
                            "src": "20743:7:51"
                          },
                          {
                            "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"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11752,
                                  "type": "function (address) view returns (bool)",
                                  "value": "isContract"
                                },
                                "id": 11773,
                                "name": "Identifier",
                                "src": "20751:10:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 10816,
                                  "type": "address",
                                  "value": "controller"
                                },
                                "id": 11774,
                                "name": "Identifier",
                                "src": "20762:10:51"
                              }
                            ],
                            "id": 11775,
                            "name": "FunctionCall",
                            "src": "20751:22:51"
                          }
                        ],
                        "id": 11776,
                        "name": "FunctionCall",
                        "src": "20743:31:51"
                      }
                    ],
                    "id": 11777,
                    "name": "ExpressionStatement",
                    "src": "20743:31:51"
                  },
                  {
                    "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": 11778,
                            "name": "Identifier",
                            "src": "20848:7:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "function (address) payable external returns (bool)",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "value",
                                          "referencedDeclaration": null,
                                          "type": "function (uint256) returns (function (address) payable external returns (bool))"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "proxyPayment",
                                              "referencedDeclaration": 10777,
                                              "type": "function (address) payable external returns (bool)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "type": "contract ITokenController",
                                                  "type_conversion": true
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_address",
                                                          "typeString": "address"
                                                        }
                                                      ],
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 10800,
                                                      "type": "type(contract ITokenController)",
                                                      "value": "ITokenController"
                                                    },
                                                    "id": 11779,
                                                    "name": "Identifier",
                                                    "src": "20856:16:51"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 10816,
                                                      "type": "address",
                                                      "value": "controller"
                                                    },
                                                    "id": 11780,
                                                    "name": "Identifier",
                                                    "src": "20873:10:51"
                                                  }
                                                ],
                                                "id": 11781,
                                                "name": "FunctionCall",
                                                "src": "20856:28:51"
                                              }
                                            ],
                                            "id": 11782,
                                            "name": "MemberAccess",
                                            "src": "20856:41:51"
                                          }
                                        ],
                                        "id": 11783,
                                        "name": "MemberAccess",
                                        "src": "20856:47:51"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "value",
                                          "referencedDeclaration": null,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 12590,
                                              "type": "msg",
                                              "value": "msg"
                                            },
                                            "id": 11784,
                                            "name": "Identifier",
                                            "src": "20904:3:51"
                                          }
                                        ],
                                        "id": 11785,
                                        "name": "MemberAccess",
                                        "src": "20904:9:51"
                                      }
                                    ],
                                    "id": 11786,
                                    "name": "FunctionCall",
                                    "src": "20856:58:51"
                                  },
                                  {
                                    "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": 11787,
                                        "name": "Identifier",
                                        "src": "20915:3:51"
                                      }
                                    ],
                                    "id": 11788,
                                    "name": "MemberAccess",
                                    "src": "20915:10:51"
                                  }
                                ],
                                "id": 11789,
                                "name": "FunctionCall",
                                "src": "20856:70:51"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "74727565",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "true"
                                },
                                "id": 11790,
                                "name": "Literal",
                                "src": "20930:4:51"
                              }
                            ],
                            "id": 11791,
                            "name": "BinaryOperation",
                            "src": "20856:78:51"
                          }
                        ],
                        "id": 11792,
                        "name": "FunctionCall",
                        "src": "20848:87:51"
                      }
                    ],
                    "id": 11793,
                    "name": "ExpressionStatement",
                    "src": "20848:87:51"
                  }
                ],
                "id": 11794,
                "name": "Block",
                "src": "20733:209:51"
              }
            ],
            "id": 11795,
            "name": "FunctionDefinition",
            "src": "20704:238:51"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "claimTokens",
              "payable": false,
              "scope": 11873,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_token",
                      "scope": 11842,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 11796,
                        "name": "ElementaryTypeName",
                        "src": "21263:7:51"
                      }
                    ],
                    "id": 11797,
                    "name": "VariableDeclaration",
                    "src": "21263:14:51"
                  }
                ],
                "id": 11798,
                "name": "ParameterList",
                "src": "21262:16:51"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 11801,
                "name": "ParameterList",
                "src": "21302:0:51"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 10814,
                      "type": "modifier ()",
                      "value": "onlyController"
                    },
                    "id": 11799,
                    "name": "Identifier",
                    "src": "21279:14:51"
                  }
                ],
                "id": 11800,
                "name": "ModifierInvocation",
                "src": "21279:14:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "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": 11797,
                              "type": "address",
                              "value": "_token"
                            },
                            "id": 11802,
                            "name": "Identifier",
                            "src": "21316:6:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "307830",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0x0"
                            },
                            "id": 11803,
                            "name": "Literal",
                            "src": "21326:3:51"
                          }
                        ],
                        "id": 11804,
                        "name": "BinaryOperation",
                        "src": "21316:13:51"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "transfer",
                                      "referencedDeclaration": null,
                                      "type": "function (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 10816,
                                          "type": "address",
                                          "value": "controller"
                                        },
                                        "id": 11805,
                                        "name": "Identifier",
                                        "src": "21345:10:51"
                                      }
                                    ],
                                    "id": 11807,
                                    "name": "MemberAccess",
                                    "src": "21345:19:51"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "balance",
                                      "referencedDeclaration": null,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 12683,
                                          "type": "contract MiniMeToken",
                                          "value": "this"
                                        },
                                        "id": 11808,
                                        "name": "Identifier",
                                        "src": "21365:4:51"
                                      }
                                    ],
                                    "id": 11809,
                                    "name": "MemberAccess",
                                    "src": "21365:12:51"
                                  }
                                ],
                                "id": 11810,
                                "name": "FunctionCall",
                                "src": "21345:33:51"
                              }
                            ],
                            "id": 11811,
                            "name": "ExpressionStatement",
                            "src": "21345:33:51"
                          },
                          {
                            "attributes": {
                              "expression": null,
                              "functionReturnParameters": 11801
                            },
                            "id": 11812,
                            "name": "Return",
                            "src": "21392:7:51"
                          }
                        ],
                        "id": 11813,
                        "name": "Block",
                        "src": "21331:78:51"
                      }
                    ],
                    "id": 11814,
                    "name": "IfStatement",
                    "src": "21312:97:51"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        11816
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "token",
                          "scope": 11842,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract MiniMeToken",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "MiniMeToken",
                              "referencedDeclaration": 11873,
                              "type": "contract MiniMeToken"
                            },
                            "id": 11815,
                            "name": "UserDefinedTypeName",
                            "src": "21419:11:51"
                          }
                        ],
                        "id": 11816,
                        "name": "VariableDeclaration",
                        "src": "21419:17:51"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract MiniMeToken",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11873,
                              "type": "type(contract MiniMeToken)",
                              "value": "MiniMeToken"
                            },
                            "id": 11817,
                            "name": "Identifier",
                            "src": "21439:11:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11797,
                              "type": "address",
                              "value": "_token"
                            },
                            "id": 11818,
                            "name": "Identifier",
                            "src": "21451:6:51"
                          }
                        ],
                        "id": 11819,
                        "name": "FunctionCall",
                        "src": "21439:19:51"
                      }
                    ],
                    "id": 11820,
                    "name": "VariableDeclarationStatement",
                    "src": "21419:39:51"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        11822
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "balance",
                          "scope": 11842,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 11821,
                            "name": "ElementaryTypeName",
                            "src": "21468:4:51"
                          }
                        ],
                        "id": 11822,
                        "name": "VariableDeclaration",
                        "src": "21468:12:51"
                      },
                      {
                        "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_contract$_MiniMeToken_$11873",
                                  "typeString": "contract MiniMeToken"
                                }
                              ],
                              "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": 11816,
                                  "type": "contract MiniMeToken",
                                  "value": "token"
                                },
                                "id": 11823,
                                "name": "Identifier",
                                "src": "21483:5:51"
                              }
                            ],
                            "id": 11824,
                            "name": "MemberAccess",
                            "src": "21483:15:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12683,
                              "type": "contract MiniMeToken",
                              "value": "this"
                            },
                            "id": 11825,
                            "name": "Identifier",
                            "src": "21499:4:51"
                          }
                        ],
                        "id": 11826,
                        "name": "FunctionCall",
                        "src": "21483:21:51"
                      }
                    ],
                    "id": 11827,
                    "name": "VariableDeclarationStatement",
                    "src": "21468:36:51"
                  },
                  {
                    "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": "transfer",
                              "referencedDeclaration": 10966,
                              "type": "function (address,uint256) external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11816,
                                  "type": "contract MiniMeToken",
                                  "value": "token"
                                },
                                "id": 11828,
                                "name": "Identifier",
                                "src": "21514:5:51"
                              }
                            ],
                            "id": 11830,
                            "name": "MemberAccess",
                            "src": "21514:14:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10816,
                              "type": "address",
                              "value": "controller"
                            },
                            "id": 11831,
                            "name": "Identifier",
                            "src": "21529:10:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11822,
                              "type": "uint256",
                              "value": "balance"
                            },
                            "id": 11832,
                            "name": "Identifier",
                            "src": "21541:7:51"
                          }
                        ],
                        "id": 11833,
                        "name": "FunctionCall",
                        "src": "21514:35:51"
                      }
                    ],
                    "id": 11834,
                    "name": "ExpressionStatement",
                    "src": "21514:35:51"
                  },
                  {
                    "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_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11850,
                              "type": "function (address,address,uint256)",
                              "value": "ClaimedTokens"
                            },
                            "id": 11835,
                            "name": "Identifier",
                            "src": "21559:13:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11797,
                              "type": "address",
                              "value": "_token"
                            },
                            "id": 11836,
                            "name": "Identifier",
                            "src": "21573:6:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10816,
                              "type": "address",
                              "value": "controller"
                            },
                            "id": 11837,
                            "name": "Identifier",
                            "src": "21581:10:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11822,
                              "type": "uint256",
                              "value": "balance"
                            },
                            "id": 11838,
                            "name": "Identifier",
                            "src": "21593:7:51"
                          }
                        ],
                        "id": 11839,
                        "name": "FunctionCall",
                        "src": "21559:42:51"
                      }
                    ],
                    "id": 11840,
                    "name": "ExpressionStatement",
                    "src": "21559:42:51"
                  }
                ],
                "id": 11841,
                "name": "Block",
                "src": "21302:306:51"
              }
            ],
            "id": 11842,
            "name": "FunctionDefinition",
            "src": "21242:366:51"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "ClaimedTokens"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_token",
                      "scope": 11850,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 11843,
                        "name": "ElementaryTypeName",
                        "src": "21678:7:51"
                      }
                    ],
                    "id": 11844,
                    "name": "VariableDeclaration",
                    "src": "21678:22:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_controller",
                      "scope": 11850,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 11845,
                        "name": "ElementaryTypeName",
                        "src": "21702:7:51"
                      }
                    ],
                    "id": 11846,
                    "name": "VariableDeclaration",
                    "src": "21702:27:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_amount",
                      "scope": 11850,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 11847,
                        "name": "ElementaryTypeName",
                        "src": "21731:4:51"
                      }
                    ],
                    "id": 11848,
                    "name": "VariableDeclaration",
                    "src": "21731:12:51"
                  }
                ],
                "id": 11849,
                "name": "ParameterList",
                "src": "21677:67:51"
              }
            ],
            "id": 11850,
            "name": "EventDefinition",
            "src": "21658:87:51"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "Transfer"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_from",
                      "scope": 11858,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 11851,
                        "name": "ElementaryTypeName",
                        "src": "21765:7:51"
                      }
                    ],
                    "id": 11852,
                    "name": "VariableDeclaration",
                    "src": "21765:21:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_to",
                      "scope": 11858,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 11853,
                        "name": "ElementaryTypeName",
                        "src": "21788:7:51"
                      }
                    ],
                    "id": 11854,
                    "name": "VariableDeclaration",
                    "src": "21788:19:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_amount",
                      "scope": 11858,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 11855,
                        "name": "ElementaryTypeName",
                        "src": "21809:7:51"
                      }
                    ],
                    "id": 11856,
                    "name": "VariableDeclaration",
                    "src": "21809:15:51"
                  }
                ],
                "id": 11857,
                "name": "ParameterList",
                "src": "21764:61:51"
              }
            ],
            "id": 11858,
            "name": "EventDefinition",
            "src": "21750:76:51"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "NewCloneToken"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_cloneToken",
                      "scope": 11864,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 11859,
                        "name": "ElementaryTypeName",
                        "src": "21851:7:51"
                      }
                    ],
                    "id": 11860,
                    "name": "VariableDeclaration",
                    "src": "21851:27:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_snapshotBlock",
                      "scope": 11864,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 11861,
                        "name": "ElementaryTypeName",
                        "src": "21880:4:51"
                      }
                    ],
                    "id": 11862,
                    "name": "VariableDeclaration",
                    "src": "21880:19:51"
                  }
                ],
                "id": 11863,
                "name": "ParameterList",
                "src": "21850:50:51"
              }
            ],
            "id": 11864,
            "name": "EventDefinition",
            "src": "21831:70:51"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "Approval"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_owner",
                      "scope": 11872,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 11865,
                        "name": "ElementaryTypeName",
                        "src": "21930:7:51"
                      }
                    ],
                    "id": 11866,
                    "name": "VariableDeclaration",
                    "src": "21930:22:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_spender",
                      "scope": 11872,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 11867,
                        "name": "ElementaryTypeName",
                        "src": "21962:7:51"
                      }
                    ],
                    "id": 11868,
                    "name": "VariableDeclaration",
                    "src": "21962:24:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_amount",
                      "scope": 11872,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 11869,
                        "name": "ElementaryTypeName",
                        "src": "21996:7:51"
                      }
                    ],
                    "id": 11870,
                    "name": "VariableDeclaration",
                    "src": "21996:15:51"
                  }
                ],
                "id": 11871,
                "name": "ParameterList",
                "src": "21920:101:51"
              }
            ],
            "id": 11872,
            "name": "EventDefinition",
            "src": "21906:116:51"
          }
        ],
        "id": 11873,
        "name": "ContractDefinition",
        "src": "2124:19901:51"
      },
      {
        "attributes": {
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            11873
          ],
          "contractKind": "contract",
          "documentation": "/////////////\n @dev This contract is used to generate clone contracts from a contract.\n  In solidity this is the way to create a contract from a contract of the\n  same class",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            11914
          ],
          "name": "MiniMeTokenFactory",
          "scope": 11915
        },
        "children": [
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "createCloneToken",
              "payable": false,
              "scope": 11914,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_parentToken",
                      "scope": 11913,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 11874,
                        "name": "ElementaryTypeName",
                        "src": "22969:7:51"
                      }
                    ],
                    "id": 11875,
                    "name": "VariableDeclaration",
                    "src": "22969:20:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_snapshotBlock",
                      "scope": 11913,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 11876,
                        "name": "ElementaryTypeName",
                        "src": "22999:4:51"
                      }
                    ],
                    "id": 11877,
                    "name": "VariableDeclaration",
                    "src": "22999:19:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_tokenName",
                      "scope": 11913,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 11878,
                        "name": "ElementaryTypeName",
                        "src": "23028:6:51"
                      }
                    ],
                    "id": 11879,
                    "name": "VariableDeclaration",
                    "src": "23028:17:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_decimalUnits",
                      "scope": 11913,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 11880,
                        "name": "ElementaryTypeName",
                        "src": "23055:5:51"
                      }
                    ],
                    "id": 11881,
                    "name": "VariableDeclaration",
                    "src": "23055:19:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_tokenSymbol",
                      "scope": 11913,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 11882,
                        "name": "ElementaryTypeName",
                        "src": "23084:6:51"
                      }
                    ],
                    "id": 11883,
                    "name": "VariableDeclaration",
                    "src": "23084:19:51"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_transfersEnabled",
                      "scope": 11913,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 11884,
                        "name": "ElementaryTypeName",
                        "src": "23113:4:51"
                      }
                    ],
                    "id": 11885,
                    "name": "VariableDeclaration",
                    "src": "23113:22:51"
                  }
                ],
                "id": 11886,
                "name": "ParameterList",
                "src": "22959:182:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 11913,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract MiniMeToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "MiniMeToken",
                          "referencedDeclaration": 11873,
                          "type": "contract MiniMeToken"
                        },
                        "id": 11887,
                        "name": "UserDefinedTypeName",
                        "src": "23158:11:51"
                      }
                    ],
                    "id": 11888,
                    "name": "VariableDeclaration",
                    "src": "23158:11:51"
                  }
                ],
                "id": 11889,
                "name": "ParameterList",
                "src": "23157:13:51"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        11891
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "newToken",
                          "scope": 11913,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract MiniMeToken",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "MiniMeToken",
                              "referencedDeclaration": 11873,
                              "type": "contract MiniMeToken"
                            },
                            "id": 11890,
                            "name": "UserDefinedTypeName",
                            "src": "23185:11:51"
                          }
                        ],
                        "id": 11891,
                        "name": "VariableDeclaration",
                        "src": "23185:20:51"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract MiniMeToken",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MiniMeTokenFactory_$11914",
                                  "typeString": "contract MiniMeTokenFactory"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "function (address,address,uint256,string memory,uint8,string memory,bool) returns (contract MiniMeToken)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "contractScope": null,
                                  "name": "MiniMeToken",
                                  "referencedDeclaration": 11873,
                                  "type": "contract MiniMeToken"
                                },
                                "id": 11892,
                                "name": "UserDefinedTypeName",
                                "src": "23212:11:51"
                              }
                            ],
                            "id": 11893,
                            "name": "NewExpression",
                            "src": "23208:15:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12685,
                              "type": "contract MiniMeTokenFactory",
                              "value": "this"
                            },
                            "id": 11894,
                            "name": "Identifier",
                            "src": "23237:4:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11875,
                              "type": "address",
                              "value": "_parentToken"
                            },
                            "id": 11895,
                            "name": "Identifier",
                            "src": "23255:12:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11877,
                              "type": "uint256",
                              "value": "_snapshotBlock"
                            },
                            "id": 11896,
                            "name": "Identifier",
                            "src": "23281:14:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11879,
                              "type": "string memory",
                              "value": "_tokenName"
                            },
                            "id": 11897,
                            "name": "Identifier",
                            "src": "23309:10:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11881,
                              "type": "uint8",
                              "value": "_decimalUnits"
                            },
                            "id": 11898,
                            "name": "Identifier",
                            "src": "23333:13:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11883,
                              "type": "string memory",
                              "value": "_tokenSymbol"
                            },
                            "id": 11899,
                            "name": "Identifier",
                            "src": "23360:12:51"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 11885,
                              "type": "bool",
                              "value": "_transfersEnabled"
                            },
                            "id": 11900,
                            "name": "Identifier",
                            "src": "23386:17:51"
                          }
                        ],
                        "id": 11901,
                        "name": "FunctionCall",
                        "src": "23208:205:51"
                      }
                    ],
                    "id": 11902,
                    "name": "VariableDeclarationStatement",
                    "src": "23185:228:51"
                  },
                  {
                    "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"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "changeController",
                              "referencedDeclaration": 10837,
                              "type": "function (address) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 11891,
                                  "type": "contract MiniMeToken",
                                  "value": "newToken"
                                },
                                "id": 11903,
                                "name": "Identifier",
                                "src": "23424:8:51"
                              }
                            ],
                            "id": 11905,
                            "name": "MemberAccess",
                            "src": "23424:25:51"
                          },
                          {
                            "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": 11906,
                                "name": "Identifier",
                                "src": "23450:3:51"
                              }
                            ],
                            "id": 11907,
                            "name": "MemberAccess",
                            "src": "23450:10:51"
                          }
                        ],
                        "id": 11908,
                        "name": "FunctionCall",
                        "src": "23424:37:51"
                      }
                    ],
                    "id": 11909,
                    "name": "ExpressionStatement",
                    "src": "23424:37:51"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 11889
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 11891,
                          "type": "contract MiniMeToken",
                          "value": "newToken"
                        },
                        "id": 11910,
                        "name": "Identifier",
                        "src": "23478:8:51"
                      }
                    ],
                    "id": 11911,
                    "name": "Return",
                    "src": "23471:15:51"
                  }
                ],
                "id": 11912,
                "name": "Block",
                "src": "23175:318:51"
              }
            ],
            "id": 11913,
            "name": "FunctionDefinition",
            "src": "22934:559:51"
          }
        ],
        "id": 11914,
        "name": "ContractDefinition",
        "src": "22254:1241:51"
      }
    ],
    "id": 11915,
    "name": "SourceUnit",
    "src": "0:23496:51"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-03-14T08:41:25.099Z"
}