{
    "contractName": "ERC20",
    "abi": [
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "name": "to",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "name": "value",
                    "type": "uint256"
                }
            ],
            "name": "Transfer",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "owner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "name": "spender",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "name": "value",
                    "type": "uint256"
                }
            ],
            "name": "Approval",
            "type": "event"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "name",
            "outputs": [
                {
                    "name": "",
                    "type": "string"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "symbol",
            "outputs": [
                {
                    "name": "",
                    "type": "string"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "decimals",
            "outputs": [
                {
                    "name": "",
                    "type": "uint8"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "totalSupply",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "balanceOf",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "recipient",
                    "type": "address"
                },
                {
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "transfer",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "owner",
                    "type": "address"
                },
                {
                    "name": "spender",
                    "type": "address"
                }
            ],
            "name": "allowance",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "spender",
                    "type": "address"
                },
                {
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "approve",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "sender",
                    "type": "address"
                },
                {
                    "name": "recipient",
                    "type": "address"
                },
                {
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "transferFrom",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "spender",
                    "type": "address"
                },
                {
                    "name": "addedValue",
                    "type": "uint256"
                }
            ],
            "name": "increaseAllowance",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "spender",
                    "type": "address"
                },
                {
                    "name": "subtractedValue",
                    "type": "uint256"
                }
            ],
            "name": "decreaseAllowance",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.5.7+commit.6da8b019\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface.\\r  * This implementation is agnostic to the way tokens are created. This means\\r that a supply mechanism has to be added in a derived contract using {_mint}.\\r For a generic mechanism see {ERC20Mintable}.\\r  * TIP: For a detailed writeup see our guide\\r https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\\r to implement supply mechanisms].\\r  * We have followed general OpenZeppelin guidelines: functions revert instead\\r of returning `false` on failure. This behavior is nonetheless conventional\\r and does not conflict with the expectations of ERC20 applications.\\r  * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\r This allows applications to reconstruct the allowance for all accounts just\\r by listening to said events. Other implementations of the EIP may not emit\\r these events, as it isn't required by the specification.\\r  * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\r functions have been added to mitigate the well-known issues around setting\\r allowances. See {IERC20-approve}.\\r\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\\r\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}.\\r      * Requirements:\\r      * - `spender` cannot be the zero address.\\r\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\\r\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation.\\r For example, if `decimals` equals `2`, a balance of `505` tokens should\\r be displayed to a user as `5.05` (`505 / 10 ** 2`).\\r      * Tokens usually opt for a value of 18, imitating the relationship between\\r Ether and Wei. This is the default value returned by this function, unless\\r it's overridden.\\r      * NOTE: This information is only used for _display_ purposes: it in\\r no way affects any of the arithmetic of the contract, including\\r {IERC20-balanceOf} and {IERC20-transfer}.\\r\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller.\\r      * This is an alternative to {approve} that can be used as a mitigation for\\r problems described in {IERC20-approve}.\\r      * Emits an {Approval} event indicating the updated allowance.\\r      * Requirements:\\r      * - `spender` cannot be the zero address.\\r - `spender` must have allowance for the caller of at least\\r `subtractedValue`.\\r\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller.\\r      * This is an alternative to {approve} that can be used as a mitigation for\\r problems described in {IERC20-approve}.\\r      * Emits an {Approval} event indicating the updated allowance.\\r      * Requirements:\\r      * - `spender` cannot be the zero address.\\r\"},\"name()\":{\"details\":\"Returns the name of the token.\\r\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the\\r name.\\r\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\\r\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}.\\r      * Requirements:\\r      * - `recipient` cannot be the zero address.\\r - the caller must have a balance of at least `amount`.\\r\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}.\\r      * Emits an {Approval} event indicating the updated allowance. This is not\\r required by the EIP. See the note at the beginning of {ERC20};\\r      * Requirements:\\r - `sender` and `recipient` cannot be the zero address.\\r - `sender` must have a balance of at least `amount`.\\r - the caller must have allowance for `sender`'s tokens of at least\\r `amount`.\\r\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/utilities/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-ethereum-package/contracts/GSN/Context.sol\":{\"keccak256\":\"0x3491510fa4862af1a43f6c860d9cf7392240196540cd3c0eea79d374d419c5a1\",\"urls\":[\"bzzr://5cddbf3b74b775a8670757a6b8e108dac17dac20253f35f4c729e9cb6bea4ed3\"]},\"@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzzr://292843005e754e752644f767477ec5ad7a1ffc91ddb18c38b8079c62f3993cad\"]},\"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzzr://cf2d583b8dce38d0617fdcd65f2fd9f126fe17b7f683b5a515ea9d2762d8b062\"]},\"@openzeppelin/upgrades/contracts/Initializable.sol\":{\"keccak256\":\"0x9bfec92e36234ecc99b5d37230acb6cd1f99560233753162204104a4897e8721\",\"urls\":[\"bzzr://f75d88b16fe25a9e19b3512691c496e2bb6d8451bc9a636196c4e17ca9b40201\"]},\"project:/contracts/utilities/ERC20.sol\":{\"keccak256\":\"0x410b1bfe4ae45185f9d971ef497cf28ea3f0efb18ced3760fa781aaa150835a8\",\"urls\":[\"bzzr://ce908881afa94cfdc13d8e9afd3aa1edb50cae8469eee123f1169ffbbb0f7f16\"]}},\"version\":1}",
    "bytecode": "0x6080604052610a06806100136000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063395093511161007157806339509351146101d957806370a082311461020557806395d89b411461022b578063a457c2d714610233578063a9059cbb1461025f578063dd62ed3e1461028b576100a9565b806306fdde03146100ae578063095ea7b31461012b57806318160ddd1461016b57806323b872dd14610185578063313ce567146101bb575b600080fd5b6100b66102b9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f05781810151838201526020016100d8565b50505050905090810190601f16801561011d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101576004803603604081101561014157600080fd5b506001600160a01b03813516906020013561034f565b604080519115158252519081900360200190f35b61017361036c565b60408051918252519081900360200190f35b6101576004803603606081101561019b57600080fd5b506001600160a01b03813581169160208101359091169060400135610372565b6101c36103ff565b6040805160ff9092168252519081900360200190f35b610157600480360360408110156101ef57600080fd5b506001600160a01b038135169060200135610404565b6101736004803603602081101561021b57600080fd5b50356001600160a01b0316610458565b6100b6610473565b6101576004803603604081101561024957600080fd5b506001600160a01b0381351690602001356104d4565b6101576004803603604081101561027557600080fd5b506001600160a01b038135169060200135610542565b610173600480360360408110156102a157600080fd5b506001600160a01b0381358116916020013516610556565b60368054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b820191906000526020600020905b81548152906001019060200180831161032857829003601f168201915b5050505050905090565b600061036361035c610581565b8484610585565b50600192915050565b60355490565b600061037f848484610677565b6103f58461038b610581565b6103f085604051806060016040528060288152602001610945602891396001600160a01b038a166000908152603460205260408120906103c9610581565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6107db16565b610585565b5060019392505050565b601290565b6000610363610411610581565b846103f08560346000610422610581565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61087516565b6001600160a01b031660009081526033602052604090205490565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b60006103636104e1610581565b846103f0856040518060600160405280602581526020016109b6602591396034600061050b610581565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6107db16565b600061036361054f610581565b8484610677565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105cd57604051600160e51b62461bcd0281526004018080602001828103825260248152602001806109926024913960400191505060405180910390fd5b6001600160a01b03821661061557604051600160e51b62461bcd0281526004018080602001828103825260228152602001806108fd6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260346020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106bf57604051600160e51b62461bcd02815260040180806020018281038252602581526020018061096d6025913960400191505060405180910390fd5b6001600160a01b03821661070757604051600160e51b62461bcd0281526004018080602001828103825260238152602001806108da6023913960400191505060405180910390fd5b61074a8160405180606001604052806026815260200161091f602691396001600160a01b038616600090815260336020526040902054919063ffffffff6107db16565b6001600160a01b03808516600090815260336020526040808220939093559084168152205461077f908263ffffffff61087516565b6001600160a01b0380841660008181526033602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561086d57604051600160e51b62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561083257818101518382015260200161081a565b50505050905090810190601f16801561085f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108d25760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a723058205620aed8f5a1d39c72d346256789279685aa70ff7cf566b0b482a0cc3e0e8d810029",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063395093511161007157806339509351146101d957806370a082311461020557806395d89b411461022b578063a457c2d714610233578063a9059cbb1461025f578063dd62ed3e1461028b576100a9565b806306fdde03146100ae578063095ea7b31461012b57806318160ddd1461016b57806323b872dd14610185578063313ce567146101bb575b600080fd5b6100b66102b9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f05781810151838201526020016100d8565b50505050905090810190601f16801561011d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101576004803603604081101561014157600080fd5b506001600160a01b03813516906020013561034f565b604080519115158252519081900360200190f35b61017361036c565b60408051918252519081900360200190f35b6101576004803603606081101561019b57600080fd5b506001600160a01b03813581169160208101359091169060400135610372565b6101c36103ff565b6040805160ff9092168252519081900360200190f35b610157600480360360408110156101ef57600080fd5b506001600160a01b038135169060200135610404565b6101736004803603602081101561021b57600080fd5b50356001600160a01b0316610458565b6100b6610473565b6101576004803603604081101561024957600080fd5b506001600160a01b0381351690602001356104d4565b6101576004803603604081101561027557600080fd5b506001600160a01b038135169060200135610542565b610173600480360360408110156102a157600080fd5b506001600160a01b0381358116916020013516610556565b60368054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b820191906000526020600020905b81548152906001019060200180831161032857829003601f168201915b5050505050905090565b600061036361035c610581565b8484610585565b50600192915050565b60355490565b600061037f848484610677565b6103f58461038b610581565b6103f085604051806060016040528060288152602001610945602891396001600160a01b038a166000908152603460205260408120906103c9610581565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6107db16565b610585565b5060019392505050565b601290565b6000610363610411610581565b846103f08560346000610422610581565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61087516565b6001600160a01b031660009081526033602052604090205490565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b60006103636104e1610581565b846103f0856040518060600160405280602581526020016109b6602591396034600061050b610581565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6107db16565b600061036361054f610581565b8484610677565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105cd57604051600160e51b62461bcd0281526004018080602001828103825260248152602001806109926024913960400191505060405180910390fd5b6001600160a01b03821661061557604051600160e51b62461bcd0281526004018080602001828103825260228152602001806108fd6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260346020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106bf57604051600160e51b62461bcd02815260040180806020018281038252602581526020018061096d6025913960400191505060405180910390fd5b6001600160a01b03821661070757604051600160e51b62461bcd0281526004018080602001828103825260238152602001806108da6023913960400191505060405180910390fd5b61074a8160405180606001604052806026815260200161091f602691396001600160a01b038616600090815260336020526040902054919063ffffffff6107db16565b6001600160a01b03808516600090815260336020526040808220939093559084168152205461077f908263ffffffff61087516565b6001600160a01b0380841660008181526033602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561086d57604051600160e51b62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561083257818101518382015260200161081a565b50505050905090810190601f16801561085f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108d25760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a723058205620aed8f5a1d39c72d346256789279685aa70ff7cf566b0b482a0cc3e0e8d810029",
    "sourceMap": "1449:8567:32:-;;;;;;;;;",
    "deployedSourceMap": "1449:8567:32:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1449:8567:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1999:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1999:83:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4238:152;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4238:152:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3259:91;;;:::i;:::-;;;;;;;;;;;;;;;;4862:304;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4862:304:32;;;;;;;;;;;;;;;;;:::i;3118:76::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5575:210;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5575:210:32;;;;;;;;:::i;3413:110::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3413:110:32;-1:-1:-1;;;;;3413:110:32;;:::i;2288:87::-;;;:::i;6288:261::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6288:261:32;;;;;;;;:::i;3736:158::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3736:158:32;;;;;;;;:::i;3957:134::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3957:134:32;;;;;;;;;;:::i;1999:83::-;2069:5;2062:12;;;;;;;;-1:-1:-1;;2062:12:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2036:13;;2062:12;;2069:5;;2062:12;;2069:5;2062:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1999:83;:::o;4238:152::-;4304:4;4321:39;4330:12;:10;:12::i;:::-;4344:7;4353:6;4321:8;:39::i;:::-;-1:-1:-1;4378:4:32;4238:152;;;;:::o;3259:91::-;3330:12;;3259:91;:::o;4862:304::-;4951:4;4968:36;4978:6;4986:9;4997:6;4968:9;:36::i;:::-;5015:121;5024:6;5032:12;:10;:12::i;:::-;5046:89;5084:6;5046:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5046:19:32;;;;;;:11;:19;;;;;;5066:12;:10;:12::i;:::-;-1:-1:-1;;;;;5046:33:32;;;;;;;;;;;;-1:-1:-1;5046:33:32;;;:89;;:37;:89;:::i;:::-;5015:8;:121::i;:::-;-1:-1:-1;5154:4:32;4862:304;;;;;:::o;3118:76::-;3184:2;3118:76;:::o;5575:210::-;5655:4;5672:83;5681:12;:10;:12::i;:::-;5695:7;5704:50;5743:10;5704:11;:25;5716:12;:10;:12::i;:::-;-1:-1:-1;;;;;5704:25:32;;;;;;;;;;;;;;;;;-1:-1:-1;5704:25:32;;;:34;;;;;;;;;;;:50;:38;:50;:::i;3413:110::-;-1:-1:-1;;;;;3497:18:32;3470:7;3497:18;;;:9;:18;;;;;;;3413:110::o;2288:87::-;2360:7;2353:14;;;;;;;;-1:-1:-1;;2353:14:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2327:13;;2353:14;;2360:7;;2353:14;;2360:7;2353:14;;;;;;;;;;;;;;;;;;;;;;;;6288:261;6373:4;6390:129;6399:12;:10;:12::i;:::-;6413:7;6422:96;6461:15;6422:96;;;;;;;;;;;;;;;;;:11;:25;6434:12;:10;:12::i;:::-;-1:-1:-1;;;;;6422:25:32;;;;;;;;;;;;;;;;;-1:-1:-1;6422:25:32;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;3736:158::-;3805:4;3822:42;3832:12;:10;:12::i;:::-;3846:9;3857:6;3822:9;:42::i;3957:134::-;-1:-1:-1;;;;;4056:18:32;;;4029:7;4056:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3957:134::o;867:96:0:-;946:10;867:96;:::o;9219:338:32:-;-1:-1:-1;;;;;9313:19:32;;9305:68;;;;-1:-1:-1;;;;;9305:68:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9392:21:32;;9384:68;;;;-1:-1:-1;;;;;9384:68:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9465:18:32;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9517:32;;;;;;;;;;;;;;;;;9219:338;;;:::o;7039:471::-;-1:-1:-1;;;;;7137:20:32;;7129:70;;;;-1:-1:-1;;;;;7129:70:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7218:23:32;;7210:71;;;;-1:-1:-1;;;;;7210:71:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7314;7336:6;7314:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7314:17:32;;;;;;:9;:17;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;7294:17:32;;;;;;;:9;:17;;;;;;:91;;;;7419:20;;;;;;;:32;;7444:6;7419:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;7396:20:32;;;;;;;:9;:20;;;;;;;;;:55;;;;7467:35;;;;;;;7396:20;;7467:35;;;;;;;;;;;;;7039:471;;;:::o;1732:187:1:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;;;1837:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1837:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:1;;;1732:187::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;;;938:46:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:1:o",
    "source": "pragma solidity ^0.5.0;\r\n\r\nimport \"@openzeppelin/contracts-ethereum-package/contracts/GSN/Context.sol\";\r\nimport \"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol\";\r\nimport \"@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol\";\r\n\r\n/**\r\n * @dev Implementation of the {IERC20} interface.\r\n *\r\n * This implementation is agnostic to the way tokens are created. This means\r\n * that a supply mechanism has to be added in a derived contract using {_mint}.\r\n * For a generic mechanism see {ERC20Mintable}.\r\n *\r\n * TIP: For a detailed writeup see our guide\r\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\r\n * to implement supply mechanisms].\r\n *\r\n * We have followed general OpenZeppelin guidelines: functions revert instead\r\n * of returning `false` on failure. This behavior is nonetheless conventional\r\n * and does not conflict with the expectations of ERC20 applications.\r\n *\r\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\r\n * This allows applications to reconstruct the allowance for all accounts just\r\n * by listening to said events. Other implementations of the EIP may not emit\r\n * these events, as it isn't required by the specification.\r\n *\r\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\r\n * functions have been added to mitigate the well-known issues around setting\r\n * allowances. See {IERC20-approve}.\r\n */\r\ncontract ERC20 is Context, IERC20 {\r\n    using SafeMath for uint256;\r\n\r\n    mapping (address => uint256) private _balances;\r\n\r\n    mapping (address => mapping (address => uint256)) private _allowances;\r\n\r\n    uint256 private _totalSupply;\r\n\r\n    string private _name;\r\n    string private _symbol;\r\n\r\n    /**\r\n     * @dev Sets the values for {name} and {symbol}.\r\n     *\r\n     * All two of these values are immutable: they can only be set once during\r\n     * construction.\r\n     */\r\n\r\n    /**\r\n     * @dev Returns the name of the token.\r\n     */\r\n    function name() public view returns (string memory) {\r\n        return _name;\r\n    }\r\n\r\n    function setName(string memory name_) internal {\r\n        _name = name_;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the symbol of the token, usually a shorter version of the\r\n     * name.\r\n     */\r\n    function symbol() public view returns (string memory) {\r\n        return _symbol;\r\n    }\r\n\r\n    function setSymbol(string memory symbol_) internal {\r\n        _symbol = symbol_;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the number of decimals used to get its user representation.\r\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\r\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\r\n     *\r\n     * Tokens usually opt for a value of 18, imitating the relationship between\r\n     * Ether and Wei. This is the default value returned by this function, unless\r\n     * it's overridden.\r\n     *\r\n     * NOTE: This information is only used for _display_ purposes: it in\r\n     * no way affects any of the arithmetic of the contract, including\r\n     * {IERC20-balanceOf} and {IERC20-transfer}.\r\n     */\r\n    function decimals() public view returns (uint8) {\r\n        return 18;\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-totalSupply}.\r\n     */\r\n    function totalSupply() public view returns (uint256) {\r\n        return _totalSupply;\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-balanceOf}.\r\n     */\r\n    function balanceOf(address account) public view returns (uint256) {\r\n        return _balances[account];\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-transfer}.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `recipient` cannot be the zero address.\r\n     * - the caller must have a balance of at least `amount`.\r\n     */\r\n    function transfer(address recipient, uint256 amount) public returns (bool) {\r\n        _transfer(_msgSender(), recipient, amount);\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-allowance}.\r\n     */\r\n    function allowance(address owner, address spender) public view returns (uint256) {\r\n        return _allowances[owner][spender];\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-approve}.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `spender` cannot be the zero address.\r\n     */\r\n    function approve(address spender, uint256 amount) public returns (bool) {\r\n        _approve(_msgSender(), spender, amount);\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-transferFrom}.\r\n     *\r\n     * Emits an {Approval} event indicating the updated allowance. This is not\r\n     * required by the EIP. See the note at the beginning of {ERC20};\r\n     *\r\n     * Requirements:\r\n     * - `sender` and `recipient` cannot be the zero address.\r\n     * - `sender` must have a balance of at least `amount`.\r\n     * - the caller must have allowance for `sender`'s tokens of at least\r\n     * `amount`.\r\n     */\r\n    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {\r\n        _transfer(sender, recipient, amount);\r\n        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \"ERC20: transfer amount exceeds allowance\"));\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * @dev Atomically increases the allowance granted to `spender` by the caller.\r\n     *\r\n     * This is an alternative to {approve} that can be used as a mitigation for\r\n     * problems described in {IERC20-approve}.\r\n     *\r\n     * Emits an {Approval} event indicating the updated allowance.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `spender` cannot be the zero address.\r\n     */\r\n    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {\r\n        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * @dev Atomically decreases the allowance granted to `spender` by the caller.\r\n     *\r\n     * This is an alternative to {approve} that can be used as a mitigation for\r\n     * problems described in {IERC20-approve}.\r\n     *\r\n     * Emits an {Approval} event indicating the updated allowance.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `spender` cannot be the zero address.\r\n     * - `spender` must have allowance for the caller of at least\r\n     * `subtractedValue`.\r\n     */\r\n    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {\r\n        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \"ERC20: decreased allowance below zero\"));\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * @dev Moves tokens `amount` from `sender` to `recipient`.\r\n     *\r\n     * This is internal function is equivalent to {transfer}, and can be used to\r\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\r\n     *\r\n     * Emits a {Transfer} event.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `sender` cannot be the zero address.\r\n     * - `recipient` cannot be the zero address.\r\n     * - `sender` must have a balance of at least `amount`.\r\n     */\r\n    function _transfer(address sender, address recipient, uint256 amount) internal {\r\n        require(sender != address(0), \"ERC20: transfer from the zero address\");\r\n        require(recipient != address(0), \"ERC20: transfer to the zero address\");\r\n\r\n        _balances[sender] = _balances[sender].sub(amount, \"ERC20: transfer amount exceeds balance\");\r\n        _balances[recipient] = _balances[recipient].add(amount);\r\n        emit Transfer(sender, recipient, amount);\r\n    }\r\n\r\n    /** @dev Creates `amount` tokens and assigns them to `account`, increasing\r\n     * the total supply.\r\n     *\r\n     * Emits a {Transfer} event with `from` set to the zero address.\r\n     *\r\n     * Requirements\r\n     *\r\n     * - `to` cannot be the zero address.\r\n     */\r\n    function _mint(address account, uint256 amount) internal {\r\n        require(account != address(0), \"ERC20: mint to the zero address\");\r\n\r\n        _totalSupply = _totalSupply.add(amount);\r\n        _balances[account] = _balances[account].add(amount);\r\n        emit Transfer(address(0), account, amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Destroys `amount` tokens from `account`, reducing the\r\n     * total supply.\r\n     *\r\n     * Emits a {Transfer} event with `to` set to the zero address.\r\n     *\r\n     * Requirements\r\n     *\r\n     * - `account` cannot be the zero address.\r\n     * - `account` must have at least `amount` tokens.\r\n     */\r\n    function _burn(address account, uint256 amount) internal {\r\n        require(account != address(0), \"ERC20: burn from the zero address\");\r\n\r\n        _balances[account] = _balances[account].sub(amount, \"ERC20: burn amount exceeds balance\");\r\n        _totalSupply = _totalSupply.sub(amount);\r\n        emit Transfer(account, address(0), amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\r\n     *\r\n     * This is internal function is equivalent to `approve`, and can be used to\r\n     * e.g. set automatic allowances for certain subsystems, etc.\r\n     *\r\n     * Emits an {Approval} event.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `owner` cannot be the zero address.\r\n     * - `spender` cannot be the zero address.\r\n     */\r\n    function _approve(address owner, address spender, uint256 amount) internal {\r\n        require(owner != address(0), \"ERC20: approve from the zero address\");\r\n        require(spender != address(0), \"ERC20: approve to the zero address\");\r\n\r\n        _allowances[owner][spender] = amount;\r\n        emit Approval(owner, spender, amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Destroys `amount` tokens from `account`.`amount` is then deducted\r\n     * from the caller's allowance.\r\n     *\r\n     * See {_burn} and {_approve}.\r\n     */\r\n    function _burnFrom(address account, uint256 amount) internal {\r\n        _burn(account, amount);\r\n        _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, \"ERC20: burn amount exceeds allowance\"));\r\n    }\r\n\r\n    uint256[50] private ______gap;\r\n}\r\n",
    "sourcePath": "D:\\Code\\verified-payments\\contracts\\utilities\\ERC20.sol",
    "ast": {
        "absolutePath": "project:/contracts/utilities/ERC20.sol",
        "exportedSymbols": {
            "ERC20": [
                12530
            ]
        },
        "id": 12531,
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 12075,
                "literals": [
                    "solidity",
                    "^",
                    "0.5",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "0:23:32"
            },
            {
                "absolutePath": "@openzeppelin/contracts-ethereum-package/contracts/GSN/Context.sol",
                "file": "@openzeppelin/contracts-ethereum-package/contracts/GSN/Context.sol",
                "id": 12076,
                "nodeType": "ImportDirective",
                "scope": 12531,
                "sourceUnit": 30,
                "src": "27:76:32",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol",
                "file": "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol",
                "id": 12077,
                "nodeType": "ImportDirective",
                "scope": 12531,
                "sourceUnit": 410,
                "src": "105:83:32",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol",
                "file": "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol",
                "id": 12078,
                "nodeType": "ImportDirective",
                "scope": 12531,
                "sourceUnit": 217,
                "src": "190:78:32",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "baseContracts": [
                    {
                        "arguments": null,
                        "baseName": {
                            "contractScope": null,
                            "id": 12079,
                            "name": "Context",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 29,
                            "src": "1467:7:32",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Context_$29",
                                "typeString": "contract Context"
                            }
                        },
                        "id": 12080,
                        "nodeType": "InheritanceSpecifier",
                        "src": "1467:7:32"
                    },
                    {
                        "arguments": null,
                        "baseName": {
                            "contractScope": null,
                            "id": 12081,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 409,
                            "src": "1476:6:32",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$409",
                                "typeString": "contract IERC20"
                            }
                        },
                        "id": 12082,
                        "nodeType": "InheritanceSpecifier",
                        "src": "1476:6:32"
                    }
                ],
                "contractDependencies": [
                    29,
                    409,
                    478
                ],
                "contractKind": "contract",
                "documentation": "@dev Implementation of the {IERC20} interface.\r\n\n * This implementation is agnostic to the way tokens are created. This means\r\nthat a supply mechanism has to be added in a derived contract using {_mint}.\r\nFor a generic mechanism see {ERC20Mintable}.\r\n\n * TIP: For a detailed writeup see our guide\r\nhttps://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\r\nto implement supply mechanisms].\r\n\n * We have followed general OpenZeppelin guidelines: functions revert instead\r\nof returning `false` on failure. This behavior is nonetheless conventional\r\nand does not conflict with the expectations of ERC20 applications.\r\n\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\r\nThis allows applications to reconstruct the allowance for all accounts just\r\nby listening to said events. Other implementations of the EIP may not emit\r\nthese events, as it isn't required by the specification.\r\n\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\r\nfunctions have been added to mitigate the well-known issues around setting\r\nallowances. See {IERC20-approve}.\r",
                "fullyImplemented": true,
                "id": 12530,
                "linearizedBaseContracts": [
                    12530,
                    409,
                    29,
                    478
                ],
                "name": "ERC20",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "id": 12085,
                        "libraryName": {
                            "contractScope": null,
                            "id": 12083,
                            "name": "SafeMath",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 216,
                            "src": "1496:8:32",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_SafeMath_$216",
                                "typeString": "library SafeMath"
                            }
                        },
                        "nodeType": "UsingForDirective",
                        "src": "1490:27:32",
                        "typeName": {
                            "id": 12084,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1509:7:32",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        }
                    },
                    {
                        "constant": false,
                        "id": 12089,
                        "name": "_balances",
                        "nodeType": "VariableDeclaration",
                        "scope": 12530,
                        "src": "1525:46:32",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                        },
                        "typeName": {
                            "id": 12088,
                            "keyType": {
                                "id": 12086,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1534:7:32",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "1525:28:32",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                            },
                            "valueType": {
                                "id": 12087,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1545:7:32",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                }
                            }
                        },
                        "value": null,
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 12095,
                        "name": "_allowances",
                        "nodeType": "VariableDeclaration",
                        "scope": 12530,
                        "src": "1580:69:32",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(address => mapping(address => uint256))"
                        },
                        "typeName": {
                            "id": 12094,
                            "keyType": {
                                "id": 12090,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1589:7:32",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "1580:49:32",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                            },
                            "valueType": {
                                "id": 12093,
                                "keyType": {
                                    "id": 12091,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1609:7:32",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "nodeType": "Mapping",
                                "src": "1600:28:32",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                },
                                "valueType": {
                                    "id": 12092,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1620:7:32",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                }
                            }
                        },
                        "value": null,
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 12097,
                        "name": "_totalSupply",
                        "nodeType": "VariableDeclaration",
                        "scope": 12530,
                        "src": "1658:28:32",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 12096,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1658:7:32",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "value": null,
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 12099,
                        "name": "_name",
                        "nodeType": "VariableDeclaration",
                        "scope": 12530,
                        "src": "1695:20:32",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string"
                        },
                        "typeName": {
                            "id": 12098,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "1695:6:32",
                            "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                            }
                        },
                        "value": null,
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 12101,
                        "name": "_symbol",
                        "nodeType": "VariableDeclaration",
                        "scope": 12530,
                        "src": "1722:22:32",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string"
                        },
                        "typeName": {
                            "id": 12100,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "1722:6:32",
                            "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                            }
                        },
                        "value": null,
                        "visibility": "private"
                    },
                    {
                        "body": {
                            "id": 12108,
                            "nodeType": "Block",
                            "src": "2051:31:32",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "id": 12106,
                                        "name": "_name",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12099,
                                        "src": "2069:5:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage",
                                            "typeString": "string storage ref"
                                        }
                                    },
                                    "functionReturnParameters": 12105,
                                    "id": 12107,
                                    "nodeType": "Return",
                                    "src": "2062:12:32"
                                }
                            ]
                        },
                        "documentation": "@dev Returns the name of the token.\r",
                        "id": 12109,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "name",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12102,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2012:2:32"
                        },
                        "returnParameters": {
                            "id": 12105,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12104,
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12109,
                                    "src": "2036:13:32",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 12103,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2036:6:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2035:15:32"
                        },
                        "scope": 12530,
                        "src": "1999:83:32",
                        "stateMutability": "view",
                        "superFunction": null,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 12118,
                            "nodeType": "Block",
                            "src": "2137:32:32",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "id": 12116,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "argumentTypes": null,
                                            "id": 12114,
                                            "name": "_name",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12099,
                                            "src": "2148:5:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_string_storage",
                                                "typeString": "string storage ref"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "argumentTypes": null,
                                            "id": 12115,
                                            "name": "name_",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12111,
                                            "src": "2156:5:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                            }
                                        },
                                        "src": "2148:13:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage",
                                            "typeString": "string storage ref"
                                        }
                                    },
                                    "id": 12117,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2148:13:32"
                                }
                            ]
                        },
                        "documentation": null,
                        "id": 12119,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "setName",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12112,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12111,
                                    "name": "name_",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12119,
                                    "src": "2107:19:32",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 12110,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2107:6:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2106:21:32"
                        },
                        "returnParameters": {
                            "id": 12113,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2137:0:32"
                        },
                        "scope": 12530,
                        "src": "2090:79:32",
                        "stateMutability": "nonpayable",
                        "superFunction": null,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 12126,
                            "nodeType": "Block",
                            "src": "2342:33:32",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "id": 12124,
                                        "name": "_symbol",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12101,
                                        "src": "2360:7:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage",
                                            "typeString": "string storage ref"
                                        }
                                    },
                                    "functionReturnParameters": 12123,
                                    "id": 12125,
                                    "nodeType": "Return",
                                    "src": "2353:14:32"
                                }
                            ]
                        },
                        "documentation": "@dev Returns the symbol of the token, usually a shorter version of the\r\nname.\r",
                        "id": 12127,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "symbol",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12120,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2303:2:32"
                        },
                        "returnParameters": {
                            "id": 12123,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12122,
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12127,
                                    "src": "2327:13:32",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 12121,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2327:6:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2326:15:32"
                        },
                        "scope": 12530,
                        "src": "2288:87:32",
                        "stateMutability": "view",
                        "superFunction": null,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 12136,
                            "nodeType": "Block",
                            "src": "2434:36:32",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "id": 12134,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "argumentTypes": null,
                                            "id": 12132,
                                            "name": "_symbol",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12101,
                                            "src": "2445:7:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_string_storage",
                                                "typeString": "string storage ref"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "argumentTypes": null,
                                            "id": 12133,
                                            "name": "symbol_",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12129,
                                            "src": "2455:7:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                            }
                                        },
                                        "src": "2445:17:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage",
                                            "typeString": "string storage ref"
                                        }
                                    },
                                    "id": 12135,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2445:17:32"
                                }
                            ]
                        },
                        "documentation": null,
                        "id": 12137,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "setSymbol",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12130,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12129,
                                    "name": "symbol_",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12137,
                                    "src": "2402:21:32",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 12128,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2402:6:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2401:23:32"
                        },
                        "returnParameters": {
                            "id": 12131,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2434:0:32"
                        },
                        "scope": 12530,
                        "src": "2383:87:32",
                        "stateMutability": "nonpayable",
                        "superFunction": null,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 12144,
                            "nodeType": "Block",
                            "src": "3166:28:32",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "hexValue": "3138",
                                        "id": 12142,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3184:2:32",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_18_by_1",
                                            "typeString": "int_const 18"
                                        },
                                        "value": "18"
                                    },
                                    "functionReturnParameters": 12141,
                                    "id": 12143,
                                    "nodeType": "Return",
                                    "src": "3177:9:32"
                                }
                            ]
                        },
                        "documentation": "@dev Returns the number of decimals used to get its user representation.\r\nFor example, if `decimals` equals `2`, a balance of `505` tokens should\r\nbe displayed to a user as `5.05` (`505 / 10 ** 2`).\r\n\n     * Tokens usually opt for a value of 18, imitating the relationship between\r\nEther and Wei. This is the default value returned by this function, unless\r\nit's overridden.\r\n\n     * NOTE: This information is only used for _display_ purposes: it in\r\nno way affects any of the arithmetic of the contract, including\r\n{IERC20-balanceOf} and {IERC20-transfer}.\r",
                        "id": 12145,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "decimals",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12138,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "3135:2:32"
                        },
                        "returnParameters": {
                            "id": 12141,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12140,
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12145,
                                    "src": "3159:5:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                    },
                                    "typeName": {
                                        "id": 12139,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3159:5:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3158:7:32"
                        },
                        "scope": 12530,
                        "src": "3118:76:32",
                        "stateMutability": "view",
                        "superFunction": null,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 12152,
                            "nodeType": "Block",
                            "src": "3312:38:32",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "id": 12150,
                                        "name": "_totalSupply",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12097,
                                        "src": "3330:12:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 12149,
                                    "id": 12151,
                                    "nodeType": "Return",
                                    "src": "3323:19:32"
                                }
                            ]
                        },
                        "documentation": "@dev See {IERC20-totalSupply}.\r",
                        "id": 12153,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "totalSupply",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12146,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "3279:2:32"
                        },
                        "returnParameters": {
                            "id": 12149,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12148,
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12153,
                                    "src": "3303:7:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12147,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3303:7:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3302:9:32"
                        },
                        "scope": 12530,
                        "src": "3259:91:32",
                        "stateMutability": "view",
                        "superFunction": 347,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 12164,
                            "nodeType": "Block",
                            "src": "3479:44:32",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 12160,
                                            "name": "_balances",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12089,
                                            "src": "3497:9:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                "typeString": "mapping(address => uint256)"
                                            }
                                        },
                                        "id": 12162,
                                        "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 12161,
                                            "name": "account",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12155,
                                            "src": "3507:7:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3497:18:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 12159,
                                    "id": 12163,
                                    "nodeType": "Return",
                                    "src": "3490:25:32"
                                }
                            ]
                        },
                        "documentation": "@dev See {IERC20-balanceOf}.\r",
                        "id": 12165,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "balanceOf",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12156,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12155,
                                    "name": "account",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12165,
                                    "src": "3432:15:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 12154,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3432:7:32",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3431:17:32"
                        },
                        "returnParameters": {
                            "id": 12159,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12158,
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12165,
                                    "src": "3470:7:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12157,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3470:7:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3469:9:32"
                        },
                        "scope": 12530,
                        "src": "3413:110:32",
                        "stateMutability": "view",
                        "superFunction": 354,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 12183,
                            "nodeType": "Block",
                            "src": "3811:83:32",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "id": 12175,
                                                    "name": "_msgSender",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 17,
                                                    "src": "3832:10:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                                        "typeString": "function () view returns (address payable)"
                                                    }
                                                },
                                                "id": 12176,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "3832:12:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 12177,
                                                "name": "recipient",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12167,
                                                "src": "3846:9:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 12178,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12169,
                                                "src": "3857:6:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 12174,
                                            "name": "_transfer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12367,
                                            "src": "3822:9:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256)"
                                            }
                                        },
                                        "id": 12179,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3822:42:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 12180,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3822:42:32"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "hexValue": "74727565",
                                        "id": 12181,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3882:4:32",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "value": "true"
                                    },
                                    "functionReturnParameters": 12173,
                                    "id": 12182,
                                    "nodeType": "Return",
                                    "src": "3875:11:32"
                                }
                            ]
                        },
                        "documentation": "@dev See {IERC20-transfer}.\r\n\n     * Requirements:\r\n\n     * - `recipient` cannot be the zero address.\r\n- the caller must have a balance of at least `amount`.\r",
                        "id": 12184,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "transfer",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12170,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12167,
                                    "name": "recipient",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12184,
                                    "src": "3754:17:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 12166,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3754:7:32",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12169,
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12184,
                                    "src": "3773:14:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12168,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3773:7:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3753:35:32"
                        },
                        "returnParameters": {
                            "id": 12173,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12172,
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12184,
                                    "src": "3805:4:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 12171,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3805:4:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3804:6:32"
                        },
                        "scope": 12530,
                        "src": "3736:158:32",
                        "stateMutability": "nonpayable",
                        "superFunction": 363,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 12199,
                            "nodeType": "Block",
                            "src": "4038:53:32",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 12193,
                                                "name": "_allowances",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12095,
                                                "src": "4056:11:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                    "typeString": "mapping(address => mapping(address => uint256))"
                                                }
                                            },
                                            "id": 12195,
                                            "indexExpression": {
                                                "argumentTypes": null,
                                                "id": 12194,
                                                "name": "owner",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12186,
                                                "src": "4068:5:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "4056:18:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                "typeString": "mapping(address => uint256)"
                                            }
                                        },
                                        "id": 12197,
                                        "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 12196,
                                            "name": "spender",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12188,
                                            "src": "4075:7:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4056:27:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 12192,
                                    "id": 12198,
                                    "nodeType": "Return",
                                    "src": "4049:34:32"
                                }
                            ]
                        },
                        "documentation": "@dev See {IERC20-allowance}.\r",
                        "id": 12200,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "allowance",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12189,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12186,
                                    "name": "owner",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12200,
                                    "src": "3976:13:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 12185,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3976:7:32",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12188,
                                    "name": "spender",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12200,
                                    "src": "3991:15:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 12187,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3991:7:32",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3975:32:32"
                        },
                        "returnParameters": {
                            "id": 12192,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12191,
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12200,
                                    "src": "4029:7:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12190,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4029:7:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4028:9:32"
                        },
                        "scope": 12530,
                        "src": "3957:134:32",
                        "stateMutability": "view",
                        "superFunction": 372,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 12218,
                            "nodeType": "Block",
                            "src": "4310:80:32",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "id": 12210,
                                                    "name": "_msgSender",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 17,
                                                    "src": "4330:10:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                                        "typeString": "function () view returns (address payable)"
                                                    }
                                                },
                                                "id": 12211,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "4330:12:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 12212,
                                                "name": "spender",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12202,
                                                "src": "4344:7:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 12213,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12204,
                                                "src": "4353:6:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 12209,
                                            "name": "_approve",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12496,
                                            "src": "4321:8:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256)"
                                            }
                                        },
                                        "id": 12214,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4321:39:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 12215,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4321:39:32"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "hexValue": "74727565",
                                        "id": 12216,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4378:4:32",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "value": "true"
                                    },
                                    "functionReturnParameters": 12208,
                                    "id": 12217,
                                    "nodeType": "Return",
                                    "src": "4371:11:32"
                                }
                            ]
                        },
                        "documentation": "@dev See {IERC20-approve}.\r\n\n     * Requirements:\r\n\n     * - `spender` cannot be the zero address.\r",
                        "id": 12219,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "approve",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12205,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12202,
                                    "name": "spender",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12219,
                                    "src": "4255:15:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 12201,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4255:7:32",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12204,
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12219,
                                    "src": "4272:14:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12203,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4272:7:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4254:33:32"
                        },
                        "returnParameters": {
                            "id": 12208,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12207,
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12219,
                                    "src": "4304:4:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 12206,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4304:4:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4303:6:32"
                        },
                        "scope": 12530,
                        "src": "4238:152:32",
                        "stateMutability": "nonpayable",
                        "superFunction": 381,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 12254,
                            "nodeType": "Block",
                            "src": "4957:209:32",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 12231,
                                                "name": "sender",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12221,
                                                "src": "4978:6:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 12232,
                                                "name": "recipient",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12223,
                                                "src": "4986:9:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 12233,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12225,
                                                "src": "4997:6:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 12230,
                                            "name": "_transfer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12367,
                                            "src": "4968:9:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256)"
                                            }
                                        },
                                        "id": 12234,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4968:36:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 12235,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4968:36:32"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 12237,
                                                "name": "sender",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12221,
                                                "src": "5024:6:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "id": 12238,
                                                    "name": "_msgSender",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 17,
                                                    "src": "5032:10:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                                        "typeString": "function () view returns (address payable)"
                                                    }
                                                },
                                                "id": 12239,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5032:12:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "arguments": [
                                                    {
                                                        "argumentTypes": null,
                                                        "id": 12247,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12225,
                                                        "src": "5084:6:32",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    {
                                                        "argumentTypes": null,
                                                        "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365",
                                                        "id": 12248,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "string",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "5092:42:32",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                                            "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                                                        },
                                                        "value": "ERC20: transfer amount exceeds allowance"
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                                            "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "baseExpression": {
                                                            "argumentTypes": null,
                                                            "baseExpression": {
                                                                "argumentTypes": null,
                                                                "id": 12240,
                                                                "name": "_allowances",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 12095,
                                                                "src": "5046:11:32",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                    "typeString": "mapping(address => mapping(address => uint256))"
                                                                }
                                                            },
                                                            "id": 12242,
                                                            "indexExpression": {
                                                                "argumentTypes": null,
                                                                "id": 12241,
                                                                "name": "sender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 12221,
                                                                "src": "5058:6:32",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "5046:19:32",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                "typeString": "mapping(address => uint256)"
                                                            }
                                                        },
                                                        "id": 12245,
                                                        "indexExpression": {
                                                            "argumentTypes": null,
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 12243,
                                                                "name": "_msgSender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 17,
                                                                "src": "5066:10:32",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                                                    "typeString": "function () view returns (address payable)"
                                                                }
                                                            },
                                                            "id": 12244,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5066:12:32",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address_payable",
                                                                "typeString": "address payable"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "5046:33:32",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 12246,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sub",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 99,
                                                    "src": "5046:37:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                                                    }
                                                },
                                                "id": 12249,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5046:89:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 12236,
                                            "name": "_approve",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12496,
                                            "src": "5015:8:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256)"
                                            }
                                        },
                                        "id": 12250,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5015:121:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 12251,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5015:121:32"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "hexValue": "74727565",
                                        "id": 12252,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5154:4:32",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "value": "true"
                                    },
                                    "functionReturnParameters": 12229,
                                    "id": 12253,
                                    "nodeType": "Return",
                                    "src": "5147:11:32"
                                }
                            ]
                        },
                        "documentation": "@dev See {IERC20-transferFrom}.\r\n\n     * Emits an {Approval} event indicating the updated allowance. This is not\r\nrequired by the EIP. See the note at the beginning of {ERC20};\r\n\n     * Requirements:\r\n- `sender` and `recipient` cannot be the zero address.\r\n- `sender` must have a balance of at least `amount`.\r\n- the caller must have allowance for `sender`'s tokens of at least\r\n`amount`.\r",
                        "id": 12255,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "transferFrom",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12226,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12221,
                                    "name": "sender",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12255,
                                    "src": "4884:14:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 12220,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4884:7:32",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12223,
                                    "name": "recipient",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12255,
                                    "src": "4900:17:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 12222,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4900:7:32",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12225,
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12255,
                                    "src": "4919:14:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12224,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4919:7:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4883:51:32"
                        },
                        "returnParameters": {
                            "id": 12229,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12228,
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12255,
                                    "src": "4951:4:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 12227,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4951:4:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4950:6:32"
                        },
                        "scope": 12530,
                        "src": "4862:304:32",
                        "stateMutability": "nonpayable",
                        "superFunction": 392,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 12281,
                            "nodeType": "Block",
                            "src": "5661:124:32",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "id": 12265,
                                                    "name": "_msgSender",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 17,
                                                    "src": "5681:10:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                                        "typeString": "function () view returns (address payable)"
                                                    }
                                                },
                                                "id": 12266,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5681:12:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 12267,
                                                "name": "spender",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12257,
                                                "src": "5695:7:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "arguments": [
                                                    {
                                                        "argumentTypes": null,
                                                        "id": 12275,
                                                        "name": "addedValue",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12259,
                                                        "src": "5743:10:32",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "baseExpression": {
                                                            "argumentTypes": null,
                                                            "baseExpression": {
                                                                "argumentTypes": null,
                                                                "id": 12268,
                                                                "name": "_allowances",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 12095,
                                                                "src": "5704:11:32",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                    "typeString": "mapping(address => mapping(address => uint256))"
                                                                }
                                                            },
                                                            "id": 12271,
                                                            "indexExpression": {
                                                                "argumentTypes": null,
                                                                "arguments": [],
                                                                "expression": {
                                                                    "argumentTypes": [],
                                                                    "id": 12269,
                                                                    "name": "_msgSender",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 17,
                                                                    "src": "5716:10:32",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                                                        "typeString": "function () view returns (address payable)"
                                                                    }
                                                                },
                                                                "id": 12270,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "5716:12:32",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "5704:25:32",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                "typeString": "mapping(address => uint256)"
                                                            }
                                                        },
                                                        "id": 12273,
                                                        "indexExpression": {
                                                            "argumentTypes": null,
                                                            "id": 12272,
                                                            "name": "spender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12257,
                                                            "src": "5730:7:32",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "5704:34:32",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 12274,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "add",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 56,
                                                    "src": "5704:38:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                    }
                                                },
                                                "id": 12276,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5704:50:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 12264,
                                            "name": "_approve",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12496,
                                            "src": "5672:8:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256)"
                                            }
                                        },
                                        "id": 12277,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5672:83:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 12278,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5672:83:32"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "hexValue": "74727565",
                                        "id": 12279,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5773:4:32",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "value": "true"
                                    },
                                    "functionReturnParameters": 12263,
                                    "id": 12280,
                                    "nodeType": "Return",
                                    "src": "5766:11:32"
                                }
                            ]
                        },
                        "documentation": "@dev Atomically increases the allowance granted to `spender` by the caller.\r\n\n     * This is an alternative to {approve} that can be used as a mitigation for\r\nproblems described in {IERC20-approve}.\r\n\n     * Emits an {Approval} event indicating the updated allowance.\r\n\n     * Requirements:\r\n\n     * - `spender` cannot be the zero address.\r",
                        "id": 12282,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "increaseAllowance",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12260,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12257,
                                    "name": "spender",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12282,
                                    "src": "5602:15:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 12256,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5602:7:32",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12259,
                                    "name": "addedValue",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12282,
                                    "src": "5619:18:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12258,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5619:7:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "5601:37:32"
                        },
                        "returnParameters": {
                            "id": 12263,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12262,
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12282,
                                    "src": "5655:4:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 12261,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5655:4:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "5654:6:32"
                        },
                        "scope": 12530,
                        "src": "5575:210:32",
                        "stateMutability": "nonpayable",
                        "superFunction": null,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 12309,
                            "nodeType": "Block",
                            "src": "6379:170:32",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "id": 12292,
                                                    "name": "_msgSender",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 17,
                                                    "src": "6399:10:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                                        "typeString": "function () view returns (address payable)"
                                                    }
                                                },
                                                "id": 12293,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6399:12:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 12294,
                                                "name": "spender",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12284,
                                                "src": "6413:7:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "arguments": [
                                                    {
                                                        "argumentTypes": null,
                                                        "id": 12302,
                                                        "name": "subtractedValue",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12286,
                                                        "src": "6461:15:32",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    {
                                                        "argumentTypes": null,
                                                        "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f",
                                                        "id": 12303,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "string",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "6478:39:32",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                                                            "typeString": "literal_string \"ERC20: decreased allowance below zero\""
                                                        },
                                                        "value": "ERC20: decreased allowance below zero"
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                                                            "typeString": "literal_string \"ERC20: decreased allowance below zero\""
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "baseExpression": {
                                                            "argumentTypes": null,
                                                            "baseExpression": {
                                                                "argumentTypes": null,
                                                                "id": 12295,
                                                                "name": "_allowances",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 12095,
                                                                "src": "6422:11:32",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                    "typeString": "mapping(address => mapping(address => uint256))"
                                                                }
                                                            },
                                                            "id": 12298,
                                                            "indexExpression": {
                                                                "argumentTypes": null,
                                                                "arguments": [],
                                                                "expression": {
                                                                    "argumentTypes": [],
                                                                    "id": 12296,
                                                                    "name": "_msgSender",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 17,
                                                                    "src": "6434:10:32",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                                                        "typeString": "function () view returns (address payable)"
                                                                    }
                                                                },
                                                                "id": 12297,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "6434:12:32",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "6422:25:32",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                "typeString": "mapping(address => uint256)"
                                                            }
                                                        },
                                                        "id": 12300,
                                                        "indexExpression": {
                                                            "argumentTypes": null,
                                                            "id": 12299,
                                                            "name": "spender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12284,
                                                            "src": "6448:7:32",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "6422:34:32",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 12301,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sub",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 99,
                                                    "src": "6422:38:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                                                    }
                                                },
                                                "id": 12304,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6422:96:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 12291,
                                            "name": "_approve",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12496,
                                            "src": "6390:8:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256)"
                                            }
                                        },
                                        "id": 12305,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6390:129:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 12306,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6390:129:32"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "hexValue": "74727565",
                                        "id": 12307,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6537:4:32",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "value": "true"
                                    },
                                    "functionReturnParameters": 12290,
                                    "id": 12308,
                                    "nodeType": "Return",
                                    "src": "6530:11:32"
                                }
                            ]
                        },
                        "documentation": "@dev Atomically decreases the allowance granted to `spender` by the caller.\r\n\n     * This is an alternative to {approve} that can be used as a mitigation for\r\nproblems described in {IERC20-approve}.\r\n\n     * Emits an {Approval} event indicating the updated allowance.\r\n\n     * Requirements:\r\n\n     * - `spender` cannot be the zero address.\r\n- `spender` must have allowance for the caller of at least\r\n`subtractedValue`.\r",
                        "id": 12310,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "decreaseAllowance",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12287,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12284,
                                    "name": "spender",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12310,
                                    "src": "6315:15:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 12283,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6315:7:32",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12286,
                                    "name": "subtractedValue",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12310,
                                    "src": "6332:23:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12285,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6332:7:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6314:42:32"
                        },
                        "returnParameters": {
                            "id": 12290,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12289,
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12310,
                                    "src": "6373:4:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 12288,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6373:4:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6372:6:32"
                        },
                        "scope": 12530,
                        "src": "6288:261:32",
                        "stateMutability": "nonpayable",
                        "superFunction": null,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 12366,
                            "nodeType": "Block",
                            "src": "7118:392:32",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 12324,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "argumentTypes": null,
                                                    "id": 12320,
                                                    "name": "sender",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12312,
                                                    "src": "7137:6:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                        {
                                                            "argumentTypes": null,
                                                            "hexValue": "30",
                                                            "id": 12322,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "7155:1:32",
                                                            "subdenomination": null,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            }
                                                        ],
                                                        "id": 12321,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "7147:7:32",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": "address"
                                                    },
                                                    "id": 12323,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7147:10:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "src": "7137:20:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373",
                                                "id": 12325,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7159:39:32",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                                                    "typeString": "literal_string \"ERC20: transfer from the zero address\""
                                                },
                                                "value": "ERC20: transfer from the zero address"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                                                    "typeString": "literal_string \"ERC20: transfer from the zero address\""
                                                }
                                            ],
                                            "id": 12319,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                13002,
                                                13003
                                            ],
                                            "referencedDeclaration": 13003,
                                            "src": "7129:7:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 12326,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7129:70:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 12327,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7129:70:32"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 12333,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "argumentTypes": null,
                                                    "id": 12329,
                                                    "name": "recipient",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12314,
                                                    "src": "7218:9:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                        {
                                                            "argumentTypes": null,
                                                            "hexValue": "30",
                                                            "id": 12331,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "7239:1:32",
                                                            "subdenomination": null,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            }
                                                        ],
                                                        "id": 12330,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "7231:7:32",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": "address"
                                                    },
                                                    "id": 12332,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7231:10:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "src": "7218:23:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373",
                                                "id": 12334,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7243:37:32",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                                                    "typeString": "literal_string \"ERC20: transfer to the zero address\""
                                                },
                                                "value": "ERC20: transfer to the zero address"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                                                    "typeString": "literal_string \"ERC20: transfer to the zero address\""
                                                }
                                            ],
                                            "id": 12328,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                13002,
                                                13003
                                            ],
                                            "referencedDeclaration": 13003,
                                            "src": "7210:7:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 12335,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7210:71:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 12336,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7210:71:32"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "id": 12347,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 12337,
                                                "name": "_balances",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12089,
                                                "src": "7294:9:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 12339,
                                            "indexExpression": {
                                                "argumentTypes": null,
                                                "id": 12338,
                                                "name": "sender",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12312,
                                                "src": "7304:6:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "7294:17:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "argumentTypes": null,
                                            "arguments": [
                                                {
                                                    "argumentTypes": null,
                                                    "id": 12344,
                                                    "name": "amount",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12316,
                                                    "src": "7336:6:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                {
                                                    "argumentTypes": null,
                                                    "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365",
                                                    "id": 12345,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "string",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "7344:40:32",
                                                    "subdenomination": null,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                                                        "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
                                                    },
                                                    "value": "ERC20: transfer amount exceeds balance"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    {
                                                        "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                                                        "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                        "argumentTypes": null,
                                                        "id": 12340,
                                                        "name": "_balances",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12089,
                                                        "src": "7314:9:32",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 12342,
                                                    "indexExpression": {
                                                        "argumentTypes": null,
                                                        "id": 12341,
                                                        "name": "sender",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12312,
                                                        "src": "7324:6:32",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "7314:17:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12343,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sub",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 99,
                                                "src": "7314:21:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                                                }
                                            },
                                            "id": 12346,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7314:71:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "7294:91:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 12348,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7294:91:32"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "id": 12358,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 12349,
                                                "name": "_balances",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12089,
                                                "src": "7396:9:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 12351,
                                            "indexExpression": {
                                                "argumentTypes": null,
                                                "id": 12350,
                                                "name": "recipient",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12314,
                                                "src": "7406:9:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "7396:20:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "argumentTypes": null,
                                            "arguments": [
                                                {
                                                    "argumentTypes": null,
                                                    "id": 12356,
                                                    "name": "amount",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12316,
                                                    "src": "7444:6:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                        "argumentTypes": null,
                                                        "id": 12352,
                                                        "name": "_balances",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12089,
                                                        "src": "7419:9:32",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 12354,
                                                    "indexExpression": {
                                                        "argumentTypes": null,
                                                        "id": 12353,
                                                        "name": "recipient",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12314,
                                                        "src": "7429:9:32",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "7419:20:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12355,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "add",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 56,
                                                "src": "7419:24:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                            },
                                            "id": 12357,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7419:32:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "7396:55:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 12359,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7396:55:32"
                                },
                                {
                                    "eventCall": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 12361,
                                                "name": "sender",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12312,
                                                "src": "7476:6:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 12362,
                                                "name": "recipient",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12314,
                                                "src": "7484:9:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 12363,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12316,
                                                "src": "7495:6:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 12360,
                                            "name": "Transfer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 400,
                                            "src": "7467:8:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256)"
                                            }
                                        },
                                        "id": 12364,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7467:35:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 12365,
                                    "nodeType": "EmitStatement",
                                    "src": "7462:40:32"
                                }
                            ]
                        },
                        "documentation": "@dev Moves tokens `amount` from `sender` to `recipient`.\r\n\n     * This is internal function is equivalent to {transfer}, and can be used to\r\ne.g. implement automatic token fees, slashing mechanisms, etc.\r\n\n     * Emits a {Transfer} event.\r\n\n     * Requirements:\r\n\n     * - `sender` cannot be the zero address.\r\n- `recipient` cannot be the zero address.\r\n- `sender` must have a balance of at least `amount`.\r",
                        "id": 12367,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_transfer",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12317,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12312,
                                    "name": "sender",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12367,
                                    "src": "7058:14:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 12311,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7058:7:32",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12314,
                                    "name": "recipient",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12367,
                                    "src": "7074:17:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 12313,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7074:7:32",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12316,
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12367,
                                    "src": "7093:14:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12315,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7093:7:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "7057:51:32"
                        },
                        "returnParameters": {
                            "id": 12318,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "7118:0:32"
                        },
                        "scope": 12530,
                        "src": "7039:471:32",
                        "stateMutability": "nonpayable",
                        "superFunction": null,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 12409,
                            "nodeType": "Block",
                            "src": "7848:251:32",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 12379,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "argumentTypes": null,
                                                    "id": 12375,
                                                    "name": "account",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12369,
                                                    "src": "7867:7:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                        {
                                                            "argumentTypes": null,
                                                            "hexValue": "30",
                                                            "id": 12377,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "7886:1:32",
                                                            "subdenomination": null,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            }
                                                        ],
                                                        "id": 12376,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "7878:7:32",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": "address"
                                                    },
                                                    "id": 12378,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7878:10:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "src": "7867:21:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
                                                "id": 12380,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7890:33:32",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                                                    "typeString": "literal_string \"ERC20: mint to the zero address\""
                                                },
                                                "value": "ERC20: mint to the zero address"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                                                    "typeString": "literal_string \"ERC20: mint to the zero address\""
                                                }
                                            ],
                                            "id": 12374,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                13002,
                                                13003
                                            ],
                                            "referencedDeclaration": 13003,
                                            "src": "7859:7:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 12381,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7859:65:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 12382,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7859:65:32"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "id": 12388,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "argumentTypes": null,
                                            "id": 12383,
                                            "name": "_totalSupply",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12097,
                                            "src": "7937:12:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "argumentTypes": null,
                                            "arguments": [
                                                {
                                                    "argumentTypes": null,
                                                    "id": 12386,
                                                    "name": "amount",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12371,
                                                    "src": "7969:6:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": null,
                                                    "id": 12384,
                                                    "name": "_totalSupply",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12097,
                                                    "src": "7952:12:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12385,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "add",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 56,
                                                "src": "7952:16:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                            },
                                            "id": 12387,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7952:24:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "7937:39:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 12389,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7937:39:32"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "id": 12399,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 12390,
                                                "name": "_balances",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12089,
                                                "src": "7987:9:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 12392,
                                            "indexExpression": {
                                                "argumentTypes": null,
                                                "id": 12391,
                                                "name": "account",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12369,
                                                "src": "7997:7:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "7987:18:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "argumentTypes": null,
                                            "arguments": [
                                                {
                                                    "argumentTypes": null,
                                                    "id": 12397,
                                                    "name": "amount",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12371,
                                                    "src": "8031:6:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                        "argumentTypes": null,
                                                        "id": 12393,
                                                        "name": "_balances",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12089,
                                                        "src": "8008:9:32",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 12395,
                                                    "indexExpression": {
                                                        "argumentTypes": null,
                                                        "id": 12394,
                                                        "name": "account",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12369,
                                                        "src": "8018:7:32",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "8008:18:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12396,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "add",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 56,
                                                "src": "8008:22:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                            },
                                            "id": 12398,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "8008:30:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "7987:51:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 12400,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7987:51:32"
                                },
                                {
                                    "eventCall": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "arguments": [
                                                    {
                                                        "argumentTypes": null,
                                                        "hexValue": "30",
                                                        "id": 12403,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "8071:1:32",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        }
                                                    ],
                                                    "id": 12402,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "8063:7:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": "address"
                                                },
                                                "id": 12404,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "8063:10:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 12405,
                                                "name": "account",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12369,
                                                "src": "8075:7:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 12406,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12371,
                                                "src": "8084:6:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 12401,
                                            "name": "Transfer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 400,
                                            "src": "8054:8:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256)"
                                            }
                                        },
                                        "id": 12407,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8054:37:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 12408,
                                    "nodeType": "EmitStatement",
                                    "src": "8049:42:32"
                                }
                            ]
                        },
                        "documentation": "@dev Creates `amount` tokens and assigns them to `account`, increasing\r\nthe total supply.\r\n\n     * Emits a {Transfer} event with `from` set to the zero address.\r\n\n     * Requirements\r\n\n     * - `to` cannot be the zero address.\r",
                        "id": 12410,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_mint",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12372,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12369,
                                    "name": "account",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12410,
                                    "src": "7806:15:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 12368,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7806:7:32",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12371,
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12410,
                                    "src": "7823:14:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12370,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7823:7:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "7805:33:32"
                        },
                        "returnParameters": {
                            "id": 12373,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "7848:0:32"
                        },
                        "scope": 12530,
                        "src": "7791:308:32",
                        "stateMutability": "nonpayable",
                        "superFunction": null,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 12453,
                            "nodeType": "Block",
                            "src": "8488:291:32",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 12422,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "argumentTypes": null,
                                                    "id": 12418,
                                                    "name": "account",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12412,
                                                    "src": "8507:7:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                        {
                                                            "argumentTypes": null,
                                                            "hexValue": "30",
                                                            "id": 12420,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "8526:1:32",
                                                            "subdenomination": null,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            }
                                                        ],
                                                        "id": 12419,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "8518:7:32",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": "address"
                                                    },
                                                    "id": 12421,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8518:10:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "src": "8507:21:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373",
                                                "id": 12423,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "8530:35:32",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
                                                    "typeString": "literal_string \"ERC20: burn from the zero address\""
                                                },
                                                "value": "ERC20: burn from the zero address"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
                                                    "typeString": "literal_string \"ERC20: burn from the zero address\""
                                                }
                                            ],
                                            "id": 12417,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                13002,
                                                13003
                                            ],
                                            "referencedDeclaration": 13003,
                                            "src": "8499:7:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 12424,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8499:67:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 12425,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8499:67:32"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "id": 12436,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 12426,
                                                "name": "_balances",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12089,
                                                "src": "8579:9:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 12428,
                                            "indexExpression": {
                                                "argumentTypes": null,
                                                "id": 12427,
                                                "name": "account",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12412,
                                                "src": "8589:7:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "8579:18:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "argumentTypes": null,
                                            "arguments": [
                                                {
                                                    "argumentTypes": null,
                                                    "id": 12433,
                                                    "name": "amount",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12414,
                                                    "src": "8623:6:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                {
                                                    "argumentTypes": null,
                                                    "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365",
                                                    "id": 12434,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "string",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "8631:36:32",
                                                    "subdenomination": null,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
                                                        "typeString": "literal_string \"ERC20: burn amount exceeds balance\""
                                                    },
                                                    "value": "ERC20: burn amount exceeds balance"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    {
                                                        "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
                                                        "typeString": "literal_string \"ERC20: burn amount exceeds balance\""
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                        "argumentTypes": null,
                                                        "id": 12429,
                                                        "name": "_balances",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12089,
                                                        "src": "8600:9:32",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 12431,
                                                    "indexExpression": {
                                                        "argumentTypes": null,
                                                        "id": 12430,
                                                        "name": "account",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12412,
                                                        "src": "8610:7:32",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "8600:18:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12432,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sub",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 99,
                                                "src": "8600:22:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                                                }
                                            },
                                            "id": 12435,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "8600:68:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "8579:89:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 12437,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8579:89:32"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "id": 12443,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "argumentTypes": null,
                                            "id": 12438,
                                            "name": "_totalSupply",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12097,
                                            "src": "8679:12:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "argumentTypes": null,
                                            "arguments": [
                                                {
                                                    "argumentTypes": null,
                                                    "id": 12441,
                                                    "name": "amount",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12414,
                                                    "src": "8711:6:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": null,
                                                    "id": 12439,
                                                    "name": "_totalSupply",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12097,
                                                    "src": "8694:12:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12440,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sub",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 72,
                                                "src": "8694:16:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                            },
                                            "id": 12442,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "8694:24:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "8679:39:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 12444,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8679:39:32"
                                },
                                {
                                    "eventCall": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 12446,
                                                "name": "account",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12412,
                                                "src": "8743:7:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "arguments": [
                                                    {
                                                        "argumentTypes": null,
                                                        "hexValue": "30",
                                                        "id": 12448,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "8760:1:32",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        }
                                                    ],
                                                    "id": 12447,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "8752:7:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": "address"
                                                },
                                                "id": 12449,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "8752:10:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 12450,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12414,
                                                "src": "8764:6:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 12445,
                                            "name": "Transfer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 400,
                                            "src": "8734:8:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256)"
                                            }
                                        },
                                        "id": 12451,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8734:37:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 12452,
                                    "nodeType": "EmitStatement",
                                    "src": "8729:42:32"
                                }
                            ]
                        },
                        "documentation": "@dev Destroys `amount` tokens from `account`, reducing the\r\ntotal supply.\r\n\n     * Emits a {Transfer} event with `to` set to the zero address.\r\n\n     * Requirements\r\n\n     * - `account` cannot be the zero address.\r\n- `account` must have at least `amount` tokens.\r",
                        "id": 12454,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_burn",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12415,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12412,
                                    "name": "account",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12454,
                                    "src": "8446:15:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 12411,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8446:7:32",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12414,
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12454,
                                    "src": "8463:14:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12413,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8463:7:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "8445:33:32"
                        },
                        "returnParameters": {
                            "id": 12416,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "8488:0:32"
                        },
                        "scope": 12530,
                        "src": "8431:348:32",
                        "stateMutability": "nonpayable",
                        "superFunction": null,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 12495,
                            "nodeType": "Block",
                            "src": "9294:263:32",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 12468,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "argumentTypes": null,
                                                    "id": 12464,
                                                    "name": "owner",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12456,
                                                    "src": "9313:5:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                        {
                                                            "argumentTypes": null,
                                                            "hexValue": "30",
                                                            "id": 12466,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "9330:1:32",
                                                            "subdenomination": null,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            }
                                                        ],
                                                        "id": 12465,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "9322:7:32",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": "address"
                                                    },
                                                    "id": 12467,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9322:10:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "src": "9313:19:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373",
                                                "id": 12469,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "9334:38:32",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                                                    "typeString": "literal_string \"ERC20: approve from the zero address\""
                                                },
                                                "value": "ERC20: approve from the zero address"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                                                    "typeString": "literal_string \"ERC20: approve from the zero address\""
                                                }
                                            ],
                                            "id": 12463,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                13002,
                                                13003
                                            ],
                                            "referencedDeclaration": 13003,
                                            "src": "9305:7:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 12470,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9305:68:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 12471,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9305:68:32"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 12477,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "argumentTypes": null,
                                                    "id": 12473,
                                                    "name": "spender",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12458,
                                                    "src": "9392:7:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                        {
                                                            "argumentTypes": null,
                                                            "hexValue": "30",
                                                            "id": 12475,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "9411:1:32",
                                                            "subdenomination": null,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            }
                                                        ],
                                                        "id": 12474,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "9403:7:32",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": "address"
                                                    },
                                                    "id": 12476,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9403:10:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "src": "9392:21:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373",
                                                "id": 12478,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "9415:36:32",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                                                    "typeString": "literal_string \"ERC20: approve to the zero address\""
                                                },
                                                "value": "ERC20: approve to the zero address"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                                                    "typeString": "literal_string \"ERC20: approve to the zero address\""
                                                }
                                            ],
                                            "id": 12472,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                13002,
                                                13003
                                            ],
                                            "referencedDeclaration": 13003,
                                            "src": "9384:7:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 12479,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9384:68:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 12480,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9384:68:32"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "id": 12487,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                    "argumentTypes": null,
                                                    "id": 12481,
                                                    "name": "_allowances",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12095,
                                                    "src": "9465:11:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                        "typeString": "mapping(address => mapping(address => uint256))"
                                                    }
                                                },
                                                "id": 12484,
                                                "indexExpression": {
                                                    "argumentTypes": null,
                                                    "id": 12482,
                                                    "name": "owner",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12456,
                                                    "src": "9477:5:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "9465:18:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 12485,
                                            "indexExpression": {
                                                "argumentTypes": null,
                                                "id": 12483,
                                                "name": "spender",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12458,
                                                "src": "9484:7:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "9465:27:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "argumentTypes": null,
                                            "id": 12486,
                                            "name": "amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12460,
                                            "src": "9495:6:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "9465:36:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 12488,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9465:36:32"
                                },
                                {
                                    "eventCall": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 12490,
                                                "name": "owner",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12456,
                                                "src": "9526:5:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 12491,
                                                "name": "spender",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12458,
                                                "src": "9533:7:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 12492,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12460,
                                                "src": "9542:6:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 12489,
                                            "name": "Approval",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 408,
                                            "src": "9517:8:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256)"
                                            }
                                        },
                                        "id": 12493,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9517:32:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 12494,
                                    "nodeType": "EmitStatement",
                                    "src": "9512:37:32"
                                }
                            ]
                        },
                        "documentation": "@dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\r\n\n     * This is internal function is equivalent to `approve`, and can be used to\r\ne.g. set automatic allowances for certain subsystems, etc.\r\n\n     * Emits an {Approval} event.\r\n\n     * Requirements:\r\n\n     * - `owner` cannot be the zero address.\r\n- `spender` cannot be the zero address.\r",
                        "id": 12496,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_approve",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12461,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12456,
                                    "name": "owner",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12496,
                                    "src": "9237:13:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 12455,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9237:7:32",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12458,
                                    "name": "spender",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12496,
                                    "src": "9252:15:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 12457,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9252:7:32",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12460,
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12496,
                                    "src": "9269:14:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12459,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9269:7:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "9236:48:32"
                        },
                        "returnParameters": {
                            "id": 12462,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "9294:0:32"
                        },
                        "scope": 12530,
                        "src": "9219:338:32",
                        "stateMutability": "nonpayable",
                        "superFunction": null,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 12524,
                            "nodeType": "Block",
                            "src": "9804:171:32",
                            "statements": [
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 12504,
                                                "name": "account",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12498,
                                                "src": "9821:7:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "id": 12505,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12500,
                                                "src": "9830:6:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 12503,
                                            "name": "_burn",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12454,
                                            "src": "9815:5:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256)"
                                            }
                                        },
                                        "id": 12506,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9815:22:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 12507,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9815:22:32"
                                },
                                {
                                    "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                            {
                                                "argumentTypes": null,
                                                "id": 12509,
                                                "name": "account",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12498,
                                                "src": "9857:7:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "id": 12510,
                                                    "name": "_msgSender",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 17,
                                                    "src": "9866:10:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                                        "typeString": "function () view returns (address payable)"
                                                    }
                                                },
                                                "id": 12511,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "9866:12:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            {
                                                "argumentTypes": null,
                                                "arguments": [
                                                    {
                                                        "argumentTypes": null,
                                                        "id": 12519,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12500,
                                                        "src": "9919:6:32",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    {
                                                        "argumentTypes": null,
                                                        "hexValue": "45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e6365",
                                                        "id": 12520,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "string",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "9927:38:32",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db",
                                                            "typeString": "literal_string \"ERC20: burn amount exceeds allowance\""
                                                        },
                                                        "value": "ERC20: burn amount exceeds allowance"
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db",
                                                            "typeString": "literal_string \"ERC20: burn amount exceeds allowance\""
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": null,
                                                        "baseExpression": {
                                                            "argumentTypes": null,
                                                            "baseExpression": {
                                                                "argumentTypes": null,
                                                                "id": 12512,
                                                                "name": "_allowances",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 12095,
                                                                "src": "9880:11:32",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                    "typeString": "mapping(address => mapping(address => uint256))"
                                                                }
                                                            },
                                                            "id": 12514,
                                                            "indexExpression": {
                                                                "argumentTypes": null,
                                                                "id": 12513,
                                                                "name": "account",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 12498,
                                                                "src": "9892:7:32",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "9880:20:32",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                "typeString": "mapping(address => uint256)"
                                                            }
                                                        },
                                                        "id": 12517,
                                                        "indexExpression": {
                                                            "argumentTypes": null,
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 12515,
                                                                "name": "_msgSender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 17,
                                                                "src": "9901:10:32",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                                                    "typeString": "function () view returns (address payable)"
                                                                }
                                                            },
                                                            "id": 12516,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "9901:12:32",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address_payable",
                                                                "typeString": "address payable"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "9880:34:32",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 12518,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sub",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 99,
                                                    "src": "9880:38:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                                                    }
                                                },
                                                "id": 12521,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "9880:86:32",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 12508,
                                            "name": "_approve",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12496,
                                            "src": "9848:8:32",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256)"
                                            }
                                        },
                                        "id": 12522,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9848:119:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 12523,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9848:119:32"
                                }
                            ]
                        },
                        "documentation": "@dev Destroys `amount` tokens from `account`.`amount` is then deducted\r\nfrom the caller's allowance.\r\n\n     * See {_burn} and {_approve}.\r",
                        "id": 12525,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_burnFrom",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12501,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12498,
                                    "name": "account",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12525,
                                    "src": "9762:15:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 12497,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9762:7:32",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12500,
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12525,
                                    "src": "9779:14:32",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12499,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9779:7:32",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                }
                            ],
                            "src": "9761:33:32"
                        },
                        "returnParameters": {
                            "id": 12502,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "9804:0:32"
                        },
                        "scope": 12530,
                        "src": "9743:232:32",
                        "stateMutability": "nonpayable",
                        "superFunction": null,
                        "visibility": "internal"
                    },
                    {
                        "constant": false,
                        "id": 12529,
                        "name": "______gap",
                        "nodeType": "VariableDeclaration",
                        "scope": 12530,
                        "src": "9983:29:32",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$50_storage",
                            "typeString": "uint256[50]"
                        },
                        "typeName": {
                            "baseType": {
                                "id": 12526,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "9983:7:32",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                }
                            },
                            "id": 12528,
                            "length": {
                                "argumentTypes": null,
                                "hexValue": "3530",
                                "id": 12527,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9991:2:32",
                                "subdenomination": null,
                                "typeDescriptions": {
                                    "typeIdentifier": "t_rational_50_by_1",
                                    "typeString": "int_const 50"
                                },
                                "value": "50"
                            },
                            "nodeType": "ArrayTypeName",
                            "src": "9983:11:32",
                            "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$50_storage_ptr",
                                "typeString": "uint256[50]"
                            }
                        },
                        "value": null,
                        "visibility": "private"
                    }
                ],
                "scope": 12531,
                "src": "1449:8567:32"
            }
        ],
        "src": "0:10018:32"
    },
    "legacyAST": {
        "attributes": {
            "absolutePath": "project:/contracts/utilities/ERC20.sol",
            "exportedSymbols": {
                "ERC20": [
                    12530
                ]
            }
        },
        "children": [
            {
                "attributes": {
                    "literals": [
                        "solidity",
                        "^",
                        "0.5",
                        ".0"
                    ]
                },
                "id": 12075,
                "name": "PragmaDirective",
                "src": "0:23:32"
            },
            {
                "attributes": {
                    "SourceUnit": 30,
                    "absolutePath": "@openzeppelin/contracts-ethereum-package/contracts/GSN/Context.sol",
                    "file": "@openzeppelin/contracts-ethereum-package/contracts/GSN/Context.sol",
                    "scope": 12531,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 12076,
                "name": "ImportDirective",
                "src": "27:76:32"
            },
            {
                "attributes": {
                    "SourceUnit": 410,
                    "absolutePath": "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol",
                    "file": "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol",
                    "scope": 12531,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 12077,
                "name": "ImportDirective",
                "src": "105:83:32"
            },
            {
                "attributes": {
                    "SourceUnit": 217,
                    "absolutePath": "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol",
                    "file": "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol",
                    "scope": 12531,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 12078,
                "name": "ImportDirective",
                "src": "190:78:32"
            },
            {
                "attributes": {
                    "contractDependencies": [
                        29,
                        409,
                        478
                    ],
                    "contractKind": "contract",
                    "documentation": "@dev Implementation of the {IERC20} interface.\r\n\n * This implementation is agnostic to the way tokens are created. This means\r\nthat a supply mechanism has to be added in a derived contract using {_mint}.\r\nFor a generic mechanism see {ERC20Mintable}.\r\n\n * TIP: For a detailed writeup see our guide\r\nhttps://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\r\nto implement supply mechanisms].\r\n\n * We have followed general OpenZeppelin guidelines: functions revert instead\r\nof returning `false` on failure. This behavior is nonetheless conventional\r\nand does not conflict with the expectations of ERC20 applications.\r\n\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\r\nThis allows applications to reconstruct the allowance for all accounts just\r\nby listening to said events. Other implementations of the EIP may not emit\r\nthese events, as it isn't required by the specification.\r\n\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\r\nfunctions have been added to mitigate the well-known issues around setting\r\nallowances. See {IERC20-approve}.\r",
                    "fullyImplemented": true,
                    "linearizedBaseContracts": [
                        12530,
                        409,
                        29,
                        478
                    ],
                    "name": "ERC20",
                    "scope": 12531
                },
                "children": [
                    {
                        "attributes": {
                            "arguments": null
                        },
                        "children": [
                            {
                                "attributes": {
                                    "contractScope": null,
                                    "name": "Context",
                                    "referencedDeclaration": 29,
                                    "type": "contract Context"
                                },
                                "id": 12079,
                                "name": "UserDefinedTypeName",
                                "src": "1467:7:32"
                            }
                        ],
                        "id": 12080,
                        "name": "InheritanceSpecifier",
                        "src": "1467:7:32"
                    },
                    {
                        "attributes": {
                            "arguments": null
                        },
                        "children": [
                            {
                                "attributes": {
                                    "contractScope": null,
                                    "name": "IERC20",
                                    "referencedDeclaration": 409,
                                    "type": "contract IERC20"
                                },
                                "id": 12081,
                                "name": "UserDefinedTypeName",
                                "src": "1476:6:32"
                            }
                        ],
                        "id": 12082,
                        "name": "InheritanceSpecifier",
                        "src": "1476:6:32"
                    },
                    {
                        "children": [
                            {
                                "attributes": {
                                    "contractScope": null,
                                    "name": "SafeMath",
                                    "referencedDeclaration": 216,
                                    "type": "library SafeMath"
                                },
                                "id": 12083,
                                "name": "UserDefinedTypeName",
                                "src": "1496:8:32"
                            },
                            {
                                "attributes": {
                                    "name": "uint256",
                                    "type": "uint256"
                                },
                                "id": 12084,
                                "name": "ElementaryTypeName",
                                "src": "1509:7:32"
                            }
                        ],
                        "id": 12085,
                        "name": "UsingForDirective",
                        "src": "1490:27:32"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "name": "_balances",
                            "scope": 12530,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "mapping(address => uint256)",
                            "value": null,
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "type": "mapping(address => uint256)"
                                },
                                "children": [
                                    {
                                        "attributes": {
                                            "name": "address",
                                            "type": "address"
                                        },
                                        "id": 12086,
                                        "name": "ElementaryTypeName",
                                        "src": "1534:7:32"
                                    },
                                    {
                                        "attributes": {
                                            "name": "uint256",
                                            "type": "uint256"
                                        },
                                        "id": 12087,
                                        "name": "ElementaryTypeName",
                                        "src": "1545:7:32"
                                    }
                                ],
                                "id": 12088,
                                "name": "Mapping",
                                "src": "1525:28:32"
                            }
                        ],
                        "id": 12089,
                        "name": "VariableDeclaration",
                        "src": "1525:46:32"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "name": "_allowances",
                            "scope": 12530,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "mapping(address => mapping(address => uint256))",
                            "value": null,
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "type": "mapping(address => mapping(address => uint256))"
                                },
                                "children": [
                                    {
                                        "attributes": {
                                            "name": "address",
                                            "type": "address"
                                        },
                                        "id": 12090,
                                        "name": "ElementaryTypeName",
                                        "src": "1589:7:32"
                                    },
                                    {
                                        "attributes": {
                                            "type": "mapping(address => uint256)"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "type": "address"
                                                },
                                                "id": 12091,
                                                "name": "ElementaryTypeName",
                                                "src": "1609:7:32"
                                            },
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 12092,
                                                "name": "ElementaryTypeName",
                                                "src": "1620:7:32"
                                            }
                                        ],
                                        "id": 12093,
                                        "name": "Mapping",
                                        "src": "1600:28:32"
                                    }
                                ],
                                "id": 12094,
                                "name": "Mapping",
                                "src": "1580:49:32"
                            }
                        ],
                        "id": 12095,
                        "name": "VariableDeclaration",
                        "src": "1580:69:32"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "name": "_totalSupply",
                            "scope": 12530,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "uint256",
                            "value": null,
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "name": "uint256",
                                    "type": "uint256"
                                },
                                "id": 12096,
                                "name": "ElementaryTypeName",
                                "src": "1658:7:32"
                            }
                        ],
                        "id": 12097,
                        "name": "VariableDeclaration",
                        "src": "1658:28:32"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "name": "_name",
                            "scope": 12530,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "string",
                            "value": null,
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "name": "string",
                                    "type": "string"
                                },
                                "id": 12098,
                                "name": "ElementaryTypeName",
                                "src": "1695:6:32"
                            }
                        ],
                        "id": 12099,
                        "name": "VariableDeclaration",
                        "src": "1695:20:32"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "name": "_symbol",
                            "scope": 12530,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "string",
                            "value": null,
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "name": "string",
                                    "type": "string"
                                },
                                "id": 12100,
                                "name": "ElementaryTypeName",
                                "src": "1722:6:32"
                            }
                        ],
                        "id": 12101,
                        "name": "VariableDeclaration",
                        "src": "1722:22:32"
                    },
                    {
                        "attributes": {
                            "documentation": "@dev Returns the name of the token.\r",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "name",
                            "scope": 12530,
                            "stateMutability": "view",
                            "superFunction": null,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 12102,
                                "name": "ParameterList",
                                "src": "2012:2:32"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "",
                                            "scope": 12109,
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "type": "string",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "string",
                                                    "type": "string"
                                                },
                                                "id": 12103,
                                                "name": "ElementaryTypeName",
                                                "src": "2036:6:32"
                                            }
                                        ],
                                        "id": 12104,
                                        "name": "VariableDeclaration",
                                        "src": "2036:13:32"
                                    }
                                ],
                                "id": 12105,
                                "name": "ParameterList",
                                "src": "2035:15:32"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 12105
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "overloadedDeclarations": [
                                                        null
                                                    ],
                                                    "referencedDeclaration": 12099,
                                                    "type": "string storage ref",
                                                    "value": "_name"
                                                },
                                                "id": 12106,
                                                "name": "Identifier",
                                                "src": "2069:5:32"
                                            }
                                        ],
                                        "id": 12107,
                                        "name": "Return",
                                        "src": "2062:12:32"
                                    }
                                ],
                                "id": 12108,
                                "name": "Block",
                                "src": "2051:31:32"
                            }
                        ],
                        "id": 12109,
                        "name": "FunctionDefinition",
                        "src": "1999:83:32"
                    },
                    {
                        "attributes": {
                            "documentation": null,
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "setName",
                            "scope": 12530,
                            "stateMutability": "nonpayable",
                            "superFunction": null,
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "name_",
                                            "scope": 12119,
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "type": "string",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "string",
                                                    "type": "string"
                                                },
                                                "id": 12110,
                                                "name": "ElementaryTypeName",
                                                "src": "2107:6:32"
                                            }
                                        ],
                                        "id": 12111,
                                        "name": "VariableDeclaration",
                                        "src": "2107:19:32"
                                    }
                                ],
                                "id": 12112,
                                "name": "ParameterList",
                                "src": "2106:21:32"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 12113,
                                "name": "ParameterList",
                                "src": "2137:0:32"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "string storage ref"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12099,
                                                            "type": "string storage ref",
                                                            "value": "_name"
                                                        },
                                                        "id": 12114,
                                                        "name": "Identifier",
                                                        "src": "2148:5:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12111,
                                                            "type": "string memory",
                                                            "value": "name_"
                                                        },
                                                        "id": 12115,
                                                        "name": "Identifier",
                                                        "src": "2156:5:32"
                                                    }
                                                ],
                                                "id": 12116,
                                                "name": "Assignment",
                                                "src": "2148:13:32"
                                            }
                                        ],
                                        "id": 12117,
                                        "name": "ExpressionStatement",
                                        "src": "2148:13:32"
                                    }
                                ],
                                "id": 12118,
                                "name": "Block",
                                "src": "2137:32:32"
                            }
                        ],
                        "id": 12119,
                        "name": "FunctionDefinition",
                        "src": "2090:79:32"
                    },
                    {
                        "attributes": {
                            "documentation": "@dev Returns the symbol of the token, usually a shorter version of the\r\nname.\r",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "symbol",
                            "scope": 12530,
                            "stateMutability": "view",
                            "superFunction": null,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 12120,
                                "name": "ParameterList",
                                "src": "2303:2:32"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "",
                                            "scope": 12127,
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "type": "string",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "string",
                                                    "type": "string"
                                                },
                                                "id": 12121,
                                                "name": "ElementaryTypeName",
                                                "src": "2327:6:32"
                                            }
                                        ],
                                        "id": 12122,
                                        "name": "VariableDeclaration",
                                        "src": "2327:13:32"
                                    }
                                ],
                                "id": 12123,
                                "name": "ParameterList",
                                "src": "2326:15:32"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 12123
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "overloadedDeclarations": [
                                                        null
                                                    ],
                                                    "referencedDeclaration": 12101,
                                                    "type": "string storage ref",
                                                    "value": "_symbol"
                                                },
                                                "id": 12124,
                                                "name": "Identifier",
                                                "src": "2360:7:32"
                                            }
                                        ],
                                        "id": 12125,
                                        "name": "Return",
                                        "src": "2353:14:32"
                                    }
                                ],
                                "id": 12126,
                                "name": "Block",
                                "src": "2342:33:32"
                            }
                        ],
                        "id": 12127,
                        "name": "FunctionDefinition",
                        "src": "2288:87:32"
                    },
                    {
                        "attributes": {
                            "documentation": null,
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "setSymbol",
                            "scope": 12530,
                            "stateMutability": "nonpayable",
                            "superFunction": null,
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "symbol_",
                                            "scope": 12137,
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "type": "string",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "string",
                                                    "type": "string"
                                                },
                                                "id": 12128,
                                                "name": "ElementaryTypeName",
                                                "src": "2402:6:32"
                                            }
                                        ],
                                        "id": 12129,
                                        "name": "VariableDeclaration",
                                        "src": "2402:21:32"
                                    }
                                ],
                                "id": 12130,
                                "name": "ParameterList",
                                "src": "2401:23:32"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 12131,
                                "name": "ParameterList",
                                "src": "2434:0:32"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "string storage ref"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12101,
                                                            "type": "string storage ref",
                                                            "value": "_symbol"
                                                        },
                                                        "id": 12132,
                                                        "name": "Identifier",
                                                        "src": "2445:7:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12129,
                                                            "type": "string memory",
                                                            "value": "symbol_"
                                                        },
                                                        "id": 12133,
                                                        "name": "Identifier",
                                                        "src": "2455:7:32"
                                                    }
                                                ],
                                                "id": 12134,
                                                "name": "Assignment",
                                                "src": "2445:17:32"
                                            }
                                        ],
                                        "id": 12135,
                                        "name": "ExpressionStatement",
                                        "src": "2445:17:32"
                                    }
                                ],
                                "id": 12136,
                                "name": "Block",
                                "src": "2434:36:32"
                            }
                        ],
                        "id": 12137,
                        "name": "FunctionDefinition",
                        "src": "2383:87:32"
                    },
                    {
                        "attributes": {
                            "documentation": "@dev Returns the number of decimals used to get its user representation.\r\nFor example, if `decimals` equals `2`, a balance of `505` tokens should\r\nbe displayed to a user as `5.05` (`505 / 10 ** 2`).\r\n\n     * Tokens usually opt for a value of 18, imitating the relationship between\r\nEther and Wei. This is the default value returned by this function, unless\r\nit's overridden.\r\n\n     * NOTE: This information is only used for _display_ purposes: it in\r\nno way affects any of the arithmetic of the contract, including\r\n{IERC20-balanceOf} and {IERC20-transfer}.\r",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "decimals",
                            "scope": 12530,
                            "stateMutability": "view",
                            "superFunction": null,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 12138,
                                "name": "ParameterList",
                                "src": "3135:2:32"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "",
                                            "scope": 12145,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint8",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint8",
                                                    "type": "uint8"
                                                },
                                                "id": 12139,
                                                "name": "ElementaryTypeName",
                                                "src": "3159:5:32"
                                            }
                                        ],
                                        "id": 12140,
                                        "name": "VariableDeclaration",
                                        "src": "3159:5:32"
                                    }
                                ],
                                "id": 12141,
                                "name": "ParameterList",
                                "src": "3158:7:32"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 12141
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "hexvalue": "3138",
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "subdenomination": null,
                                                    "token": "number",
                                                    "type": "int_const 18",
                                                    "value": "18"
                                                },
                                                "id": 12142,
                                                "name": "Literal",
                                                "src": "3184:2:32"
                                            }
                                        ],
                                        "id": 12143,
                                        "name": "Return",
                                        "src": "3177:9:32"
                                    }
                                ],
                                "id": 12144,
                                "name": "Block",
                                "src": "3166:28:32"
                            }
                        ],
                        "id": 12145,
                        "name": "FunctionDefinition",
                        "src": "3118:76:32"
                    },
                    {
                        "attributes": {
                            "documentation": "@dev See {IERC20-totalSupply}.\r",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "totalSupply",
                            "scope": 12530,
                            "stateMutability": "view",
                            "superFunction": 347,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 12146,
                                "name": "ParameterList",
                                "src": "3279:2:32"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "",
                                            "scope": 12153,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 12147,
                                                "name": "ElementaryTypeName",
                                                "src": "3303:7:32"
                                            }
                                        ],
                                        "id": 12148,
                                        "name": "VariableDeclaration",
                                        "src": "3303:7:32"
                                    }
                                ],
                                "id": 12149,
                                "name": "ParameterList",
                                "src": "3302:9:32"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 12149
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "overloadedDeclarations": [
                                                        null
                                                    ],
                                                    "referencedDeclaration": 12097,
                                                    "type": "uint256",
                                                    "value": "_totalSupply"
                                                },
                                                "id": 12150,
                                                "name": "Identifier",
                                                "src": "3330:12:32"
                                            }
                                        ],
                                        "id": 12151,
                                        "name": "Return",
                                        "src": "3323:19:32"
                                    }
                                ],
                                "id": 12152,
                                "name": "Block",
                                "src": "3312:38:32"
                            }
                        ],
                        "id": 12153,
                        "name": "FunctionDefinition",
                        "src": "3259:91:32"
                    },
                    {
                        "attributes": {
                            "documentation": "@dev See {IERC20-balanceOf}.\r",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "balanceOf",
                            "scope": 12530,
                            "stateMutability": "view",
                            "superFunction": 354,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "account",
                                            "scope": 12165,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 12154,
                                                "name": "ElementaryTypeName",
                                                "src": "3432:7:32"
                                            }
                                        ],
                                        "id": 12155,
                                        "name": "VariableDeclaration",
                                        "src": "3432:15:32"
                                    }
                                ],
                                "id": 12156,
                                "name": "ParameterList",
                                "src": "3431:17:32"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "",
                                            "scope": 12165,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 12157,
                                                "name": "ElementaryTypeName",
                                                "src": "3470:7:32"
                                            }
                                        ],
                                        "id": 12158,
                                        "name": "VariableDeclaration",
                                        "src": "3470:7:32"
                                    }
                                ],
                                "id": 12159,
                                "name": "ParameterList",
                                "src": "3469:9:32"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 12159
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "type": "uint256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12089,
                                                            "type": "mapping(address => uint256)",
                                                            "value": "_balances"
                                                        },
                                                        "id": 12160,
                                                        "name": "Identifier",
                                                        "src": "3497:9:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12155,
                                                            "type": "address",
                                                            "value": "account"
                                                        },
                                                        "id": 12161,
                                                        "name": "Identifier",
                                                        "src": "3507:7:32"
                                                    }
                                                ],
                                                "id": 12162,
                                                "name": "IndexAccess",
                                                "src": "3497:18:32"
                                            }
                                        ],
                                        "id": 12163,
                                        "name": "Return",
                                        "src": "3490:25:32"
                                    }
                                ],
                                "id": 12164,
                                "name": "Block",
                                "src": "3479:44:32"
                            }
                        ],
                        "id": 12165,
                        "name": "FunctionDefinition",
                        "src": "3413:110:32"
                    },
                    {
                        "attributes": {
                            "documentation": "@dev See {IERC20-transfer}.\r\n\n     * Requirements:\r\n\n     * - `recipient` cannot be the zero address.\r\n- the caller must have a balance of at least `amount`.\r",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "transfer",
                            "scope": 12530,
                            "stateMutability": "nonpayable",
                            "superFunction": 363,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "recipient",
                                            "scope": 12184,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 12166,
                                                "name": "ElementaryTypeName",
                                                "src": "3754:7:32"
                                            }
                                        ],
                                        "id": 12167,
                                        "name": "VariableDeclaration",
                                        "src": "3754:17:32"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "amount",
                                            "scope": 12184,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 12168,
                                                "name": "ElementaryTypeName",
                                                "src": "3773:7:32"
                                            }
                                        ],
                                        "id": 12169,
                                        "name": "VariableDeclaration",
                                        "src": "3773:14:32"
                                    }
                                ],
                                "id": 12170,
                                "name": "ParameterList",
                                "src": "3753:35:32"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "",
                                            "scope": 12184,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bool",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bool",
                                                    "type": "bool"
                                                },
                                                "id": 12171,
                                                "name": "ElementaryTypeName",
                                                "src": "3805:4:32"
                                            }
                                        ],
                                        "id": 12172,
                                        "name": "VariableDeclaration",
                                        "src": "3805:4:32"
                                    }
                                ],
                                "id": 12173,
                                "name": "ParameterList",
                                "src": "3804:6:32"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12367,
                                                            "type": "function (address,address,uint256)",
                                                            "value": "_transfer"
                                                        },
                                                        "id": 12174,
                                                        "name": "Identifier",
                                                        "src": "3822:9:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "arguments": [
                                                                null
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "type": "address payable",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        null
                                                                    ],
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 17,
                                                                    "type": "function () view returns (address payable)",
                                                                    "value": "_msgSender"
                                                                },
                                                                "id": 12175,
                                                                "name": "Identifier",
                                                                "src": "3832:10:32"
                                                            }
                                                        ],
                                                        "id": 12176,
                                                        "name": "FunctionCall",
                                                        "src": "3832:12:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12167,
                                                            "type": "address",
                                                            "value": "recipient"
                                                        },
                                                        "id": 12177,
                                                        "name": "Identifier",
                                                        "src": "3846:9:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12169,
                                                            "type": "uint256",
                                                            "value": "amount"
                                                        },
                                                        "id": 12178,
                                                        "name": "Identifier",
                                                        "src": "3857:6:32"
                                                    }
                                                ],
                                                "id": 12179,
                                                "name": "FunctionCall",
                                                "src": "3822:42:32"
                                            }
                                        ],
                                        "id": 12180,
                                        "name": "ExpressionStatement",
                                        "src": "3822:42:32"
                                    },
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 12173
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "hexvalue": "74727565",
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "subdenomination": null,
                                                    "token": "bool",
                                                    "type": "bool",
                                                    "value": "true"
                                                },
                                                "id": 12181,
                                                "name": "Literal",
                                                "src": "3882:4:32"
                                            }
                                        ],
                                        "id": 12182,
                                        "name": "Return",
                                        "src": "3875:11:32"
                                    }
                                ],
                                "id": 12183,
                                "name": "Block",
                                "src": "3811:83:32"
                            }
                        ],
                        "id": 12184,
                        "name": "FunctionDefinition",
                        "src": "3736:158:32"
                    },
                    {
                        "attributes": {
                            "documentation": "@dev See {IERC20-allowance}.\r",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "allowance",
                            "scope": 12530,
                            "stateMutability": "view",
                            "superFunction": 372,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "owner",
                                            "scope": 12200,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 12185,
                                                "name": "ElementaryTypeName",
                                                "src": "3976:7:32"
                                            }
                                        ],
                                        "id": 12186,
                                        "name": "VariableDeclaration",
                                        "src": "3976:13:32"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "spender",
                                            "scope": 12200,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 12187,
                                                "name": "ElementaryTypeName",
                                                "src": "3991:7:32"
                                            }
                                        ],
                                        "id": 12188,
                                        "name": "VariableDeclaration",
                                        "src": "3991:15:32"
                                    }
                                ],
                                "id": 12189,
                                "name": "ParameterList",
                                "src": "3975:32:32"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "",
                                            "scope": 12200,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 12190,
                                                "name": "ElementaryTypeName",
                                                "src": "4029:7:32"
                                            }
                                        ],
                                        "id": 12191,
                                        "name": "VariableDeclaration",
                                        "src": "4029:7:32"
                                    }
                                ],
                                "id": 12192,
                                "name": "ParameterList",
                                "src": "4028:9:32"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 12192
                                        },
                                        "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": 12095,
                                                                    "type": "mapping(address => mapping(address => uint256))",
                                                                    "value": "_allowances"
                                                                },
                                                                "id": 12193,
                                                                "name": "Identifier",
                                                                "src": "4056:11:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 12186,
                                                                    "type": "address",
                                                                    "value": "owner"
                                                                },
                                                                "id": 12194,
                                                                "name": "Identifier",
                                                                "src": "4068:5:32"
                                                            }
                                                        ],
                                                        "id": 12195,
                                                        "name": "IndexAccess",
                                                        "src": "4056:18:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12188,
                                                            "type": "address",
                                                            "value": "spender"
                                                        },
                                                        "id": 12196,
                                                        "name": "Identifier",
                                                        "src": "4075:7:32"
                                                    }
                                                ],
                                                "id": 12197,
                                                "name": "IndexAccess",
                                                "src": "4056:27:32"
                                            }
                                        ],
                                        "id": 12198,
                                        "name": "Return",
                                        "src": "4049:34:32"
                                    }
                                ],
                                "id": 12199,
                                "name": "Block",
                                "src": "4038:53:32"
                            }
                        ],
                        "id": 12200,
                        "name": "FunctionDefinition",
                        "src": "3957:134:32"
                    },
                    {
                        "attributes": {
                            "documentation": "@dev See {IERC20-approve}.\r\n\n     * Requirements:\r\n\n     * - `spender` cannot be the zero address.\r",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "approve",
                            "scope": 12530,
                            "stateMutability": "nonpayable",
                            "superFunction": 381,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "spender",
                                            "scope": 12219,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 12201,
                                                "name": "ElementaryTypeName",
                                                "src": "4255:7:32"
                                            }
                                        ],
                                        "id": 12202,
                                        "name": "VariableDeclaration",
                                        "src": "4255:15:32"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "amount",
                                            "scope": 12219,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 12203,
                                                "name": "ElementaryTypeName",
                                                "src": "4272:7:32"
                                            }
                                        ],
                                        "id": 12204,
                                        "name": "VariableDeclaration",
                                        "src": "4272:14:32"
                                    }
                                ],
                                "id": 12205,
                                "name": "ParameterList",
                                "src": "4254:33:32"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "",
                                            "scope": 12219,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bool",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bool",
                                                    "type": "bool"
                                                },
                                                "id": 12206,
                                                "name": "ElementaryTypeName",
                                                "src": "4304:4:32"
                                            }
                                        ],
                                        "id": 12207,
                                        "name": "VariableDeclaration",
                                        "src": "4304:4:32"
                                    }
                                ],
                                "id": 12208,
                                "name": "ParameterList",
                                "src": "4303:6:32"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12496,
                                                            "type": "function (address,address,uint256)",
                                                            "value": "_approve"
                                                        },
                                                        "id": 12209,
                                                        "name": "Identifier",
                                                        "src": "4321:8:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "arguments": [
                                                                null
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "type": "address payable",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        null
                                                                    ],
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 17,
                                                                    "type": "function () view returns (address payable)",
                                                                    "value": "_msgSender"
                                                                },
                                                                "id": 12210,
                                                                "name": "Identifier",
                                                                "src": "4330:10:32"
                                                            }
                                                        ],
                                                        "id": 12211,
                                                        "name": "FunctionCall",
                                                        "src": "4330:12:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12202,
                                                            "type": "address",
                                                            "value": "spender"
                                                        },
                                                        "id": 12212,
                                                        "name": "Identifier",
                                                        "src": "4344:7:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12204,
                                                            "type": "uint256",
                                                            "value": "amount"
                                                        },
                                                        "id": 12213,
                                                        "name": "Identifier",
                                                        "src": "4353:6:32"
                                                    }
                                                ],
                                                "id": 12214,
                                                "name": "FunctionCall",
                                                "src": "4321:39:32"
                                            }
                                        ],
                                        "id": 12215,
                                        "name": "ExpressionStatement",
                                        "src": "4321:39:32"
                                    },
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 12208
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "hexvalue": "74727565",
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "subdenomination": null,
                                                    "token": "bool",
                                                    "type": "bool",
                                                    "value": "true"
                                                },
                                                "id": 12216,
                                                "name": "Literal",
                                                "src": "4378:4:32"
                                            }
                                        ],
                                        "id": 12217,
                                        "name": "Return",
                                        "src": "4371:11:32"
                                    }
                                ],
                                "id": 12218,
                                "name": "Block",
                                "src": "4310:80:32"
                            }
                        ],
                        "id": 12219,
                        "name": "FunctionDefinition",
                        "src": "4238:152:32"
                    },
                    {
                        "attributes": {
                            "documentation": "@dev See {IERC20-transferFrom}.\r\n\n     * Emits an {Approval} event indicating the updated allowance. This is not\r\nrequired by the EIP. See the note at the beginning of {ERC20};\r\n\n     * Requirements:\r\n- `sender` and `recipient` cannot be the zero address.\r\n- `sender` must have a balance of at least `amount`.\r\n- the caller must have allowance for `sender`'s tokens of at least\r\n`amount`.\r",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "transferFrom",
                            "scope": 12530,
                            "stateMutability": "nonpayable",
                            "superFunction": 392,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "sender",
                                            "scope": 12255,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 12220,
                                                "name": "ElementaryTypeName",
                                                "src": "4884:7:32"
                                            }
                                        ],
                                        "id": 12221,
                                        "name": "VariableDeclaration",
                                        "src": "4884:14:32"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "recipient",
                                            "scope": 12255,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 12222,
                                                "name": "ElementaryTypeName",
                                                "src": "4900:7:32"
                                            }
                                        ],
                                        "id": 12223,
                                        "name": "VariableDeclaration",
                                        "src": "4900:17:32"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "amount",
                                            "scope": 12255,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 12224,
                                                "name": "ElementaryTypeName",
                                                "src": "4919:7:32"
                                            }
                                        ],
                                        "id": 12225,
                                        "name": "VariableDeclaration",
                                        "src": "4919:14:32"
                                    }
                                ],
                                "id": 12226,
                                "name": "ParameterList",
                                "src": "4883:51:32"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "",
                                            "scope": 12255,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bool",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bool",
                                                    "type": "bool"
                                                },
                                                "id": 12227,
                                                "name": "ElementaryTypeName",
                                                "src": "4951:4:32"
                                            }
                                        ],
                                        "id": 12228,
                                        "name": "VariableDeclaration",
                                        "src": "4951:4:32"
                                    }
                                ],
                                "id": 12229,
                                "name": "ParameterList",
                                "src": "4950:6:32"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12367,
                                                            "type": "function (address,address,uint256)",
                                                            "value": "_transfer"
                                                        },
                                                        "id": 12230,
                                                        "name": "Identifier",
                                                        "src": "4968:9:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12221,
                                                            "type": "address",
                                                            "value": "sender"
                                                        },
                                                        "id": 12231,
                                                        "name": "Identifier",
                                                        "src": "4978:6:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12223,
                                                            "type": "address",
                                                            "value": "recipient"
                                                        },
                                                        "id": 12232,
                                                        "name": "Identifier",
                                                        "src": "4986:9:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12225,
                                                            "type": "uint256",
                                                            "value": "amount"
                                                        },
                                                        "id": 12233,
                                                        "name": "Identifier",
                                                        "src": "4997:6:32"
                                                    }
                                                ],
                                                "id": 12234,
                                                "name": "FunctionCall",
                                                "src": "4968:36:32"
                                            }
                                        ],
                                        "id": 12235,
                                        "name": "ExpressionStatement",
                                        "src": "4968:36:32"
                                    },
                                    {
                                        "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_payable",
                                                                    "typeString": "address payable"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12496,
                                                            "type": "function (address,address,uint256)",
                                                            "value": "_approve"
                                                        },
                                                        "id": 12236,
                                                        "name": "Identifier",
                                                        "src": "5015:8:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12221,
                                                            "type": "address",
                                                            "value": "sender"
                                                        },
                                                        "id": 12237,
                                                        "name": "Identifier",
                                                        "src": "5024:6:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "arguments": [
                                                                null
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "type": "address payable",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        null
                                                                    ],
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 17,
                                                                    "type": "function () view returns (address payable)",
                                                                    "value": "_msgSender"
                                                                },
                                                                "id": 12238,
                                                                "name": "Identifier",
                                                                "src": "5032:10:32"
                                                            }
                                                        ],
                                                        "id": 12239,
                                                        "name": "FunctionCall",
                                                        "src": "5032:12:32"
                                                    },
                                                    {
                                                        "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_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                                                            "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sub",
                                                                    "referencedDeclaration": 99,
                                                                    "type": "function (uint256,uint256,string memory) pure returns (uint256)"
                                                                },
                                                                "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": 12095,
                                                                                            "type": "mapping(address => mapping(address => uint256))",
                                                                                            "value": "_allowances"
                                                                                        },
                                                                                        "id": 12240,
                                                                                        "name": "Identifier",
                                                                                        "src": "5046:11:32"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": null,
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 12221,
                                                                                            "type": "address",
                                                                                            "value": "sender"
                                                                                        },
                                                                                        "id": 12241,
                                                                                        "name": "Identifier",
                                                                                        "src": "5058:6:32"
                                                                                    }
                                                                                ],
                                                                                "id": 12242,
                                                                                "name": "IndexAccess",
                                                                                "src": "5046:19:32"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "arguments": [
                                                                                        null
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "type": "address payable",
                                                                                    "type_conversion": false
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                null
                                                                                            ],
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 17,
                                                                                            "type": "function () view returns (address payable)",
                                                                                            "value": "_msgSender"
                                                                                        },
                                                                                        "id": 12243,
                                                                                        "name": "Identifier",
                                                                                        "src": "5066:10:32"
                                                                                    }
                                                                                ],
                                                                                "id": 12244,
                                                                                "name": "FunctionCall",
                                                                                "src": "5066:12:32"
                                                                            }
                                                                        ],
                                                                        "id": 12245,
                                                                        "name": "IndexAccess",
                                                                        "src": "5046:33:32"
                                                                    }
                                                                ],
                                                                "id": 12246,
                                                                "name": "MemberAccess",
                                                                "src": "5046:37:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 12225,
                                                                    "type": "uint256",
                                                                    "value": "amount"
                                                                },
                                                                "id": 12247,
                                                                "name": "Identifier",
                                                                "src": "5084:6:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "hexvalue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "subdenomination": null,
                                                                    "token": "string",
                                                                    "type": "literal_string \"ERC20: transfer amount exceeds allowance\"",
                                                                    "value": "ERC20: transfer amount exceeds allowance"
                                                                },
                                                                "id": 12248,
                                                                "name": "Literal",
                                                                "src": "5092:42:32"
                                                            }
                                                        ],
                                                        "id": 12249,
                                                        "name": "FunctionCall",
                                                        "src": "5046:89:32"
                                                    }
                                                ],
                                                "id": 12250,
                                                "name": "FunctionCall",
                                                "src": "5015:121:32"
                                            }
                                        ],
                                        "id": 12251,
                                        "name": "ExpressionStatement",
                                        "src": "5015:121:32"
                                    },
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 12229
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "hexvalue": "74727565",
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "subdenomination": null,
                                                    "token": "bool",
                                                    "type": "bool",
                                                    "value": "true"
                                                },
                                                "id": 12252,
                                                "name": "Literal",
                                                "src": "5154:4:32"
                                            }
                                        ],
                                        "id": 12253,
                                        "name": "Return",
                                        "src": "5147:11:32"
                                    }
                                ],
                                "id": 12254,
                                "name": "Block",
                                "src": "4957:209:32"
                            }
                        ],
                        "id": 12255,
                        "name": "FunctionDefinition",
                        "src": "4862:304:32"
                    },
                    {
                        "attributes": {
                            "documentation": "@dev Atomically increases the allowance granted to `spender` by the caller.\r\n\n     * This is an alternative to {approve} that can be used as a mitigation for\r\nproblems described in {IERC20-approve}.\r\n\n     * Emits an {Approval} event indicating the updated allowance.\r\n\n     * Requirements:\r\n\n     * - `spender` cannot be the zero address.\r",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "increaseAllowance",
                            "scope": 12530,
                            "stateMutability": "nonpayable",
                            "superFunction": null,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "spender",
                                            "scope": 12282,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 12256,
                                                "name": "ElementaryTypeName",
                                                "src": "5602:7:32"
                                            }
                                        ],
                                        "id": 12257,
                                        "name": "VariableDeclaration",
                                        "src": "5602:15:32"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "addedValue",
                                            "scope": 12282,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 12258,
                                                "name": "ElementaryTypeName",
                                                "src": "5619:7:32"
                                            }
                                        ],
                                        "id": 12259,
                                        "name": "VariableDeclaration",
                                        "src": "5619:18:32"
                                    }
                                ],
                                "id": 12260,
                                "name": "ParameterList",
                                "src": "5601:37:32"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "",
                                            "scope": 12282,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bool",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bool",
                                                    "type": "bool"
                                                },
                                                "id": 12261,
                                                "name": "ElementaryTypeName",
                                                "src": "5655:4:32"
                                            }
                                        ],
                                        "id": 12262,
                                        "name": "VariableDeclaration",
                                        "src": "5655:4:32"
                                    }
                                ],
                                "id": 12263,
                                "name": "ParameterList",
                                "src": "5654:6:32"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12496,
                                                            "type": "function (address,address,uint256)",
                                                            "value": "_approve"
                                                        },
                                                        "id": 12264,
                                                        "name": "Identifier",
                                                        "src": "5672:8:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "arguments": [
                                                                null
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "type": "address payable",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        null
                                                                    ],
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 17,
                                                                    "type": "function () view returns (address payable)",
                                                                    "value": "_msgSender"
                                                                },
                                                                "id": 12265,
                                                                "name": "Identifier",
                                                                "src": "5681:10:32"
                                                            }
                                                        ],
                                                        "id": 12266,
                                                        "name": "FunctionCall",
                                                        "src": "5681:12:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12257,
                                                            "type": "address",
                                                            "value": "spender"
                                                        },
                                                        "id": 12267,
                                                        "name": "Identifier",
                                                        "src": "5695:7:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "type": "uint256",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "add",
                                                                    "referencedDeclaration": 56,
                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                },
                                                                "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": 12095,
                                                                                            "type": "mapping(address => mapping(address => uint256))",
                                                                                            "value": "_allowances"
                                                                                        },
                                                                                        "id": 12268,
                                                                                        "name": "Identifier",
                                                                                        "src": "5704:11:32"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": null,
                                                                                            "arguments": [
                                                                                                null
                                                                                            ],
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "type": "address payable",
                                                                                            "type_conversion": false
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 17,
                                                                                                    "type": "function () view returns (address payable)",
                                                                                                    "value": "_msgSender"
                                                                                                },
                                                                                                "id": 12269,
                                                                                                "name": "Identifier",
                                                                                                "src": "5716:10:32"
                                                                                            }
                                                                                        ],
                                                                                        "id": 12270,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "5716:12:32"
                                                                                    }
                                                                                ],
                                                                                "id": 12271,
                                                                                "name": "IndexAccess",
                                                                                "src": "5704:25:32"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 12257,
                                                                                    "type": "address",
                                                                                    "value": "spender"
                                                                                },
                                                                                "id": 12272,
                                                                                "name": "Identifier",
                                                                                "src": "5730:7:32"
                                                                            }
                                                                        ],
                                                                        "id": 12273,
                                                                        "name": "IndexAccess",
                                                                        "src": "5704:34:32"
                                                                    }
                                                                ],
                                                                "id": 12274,
                                                                "name": "MemberAccess",
                                                                "src": "5704:38:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 12259,
                                                                    "type": "uint256",
                                                                    "value": "addedValue"
                                                                },
                                                                "id": 12275,
                                                                "name": "Identifier",
                                                                "src": "5743:10:32"
                                                            }
                                                        ],
                                                        "id": 12276,
                                                        "name": "FunctionCall",
                                                        "src": "5704:50:32"
                                                    }
                                                ],
                                                "id": 12277,
                                                "name": "FunctionCall",
                                                "src": "5672:83:32"
                                            }
                                        ],
                                        "id": 12278,
                                        "name": "ExpressionStatement",
                                        "src": "5672:83:32"
                                    },
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 12263
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "hexvalue": "74727565",
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "subdenomination": null,
                                                    "token": "bool",
                                                    "type": "bool",
                                                    "value": "true"
                                                },
                                                "id": 12279,
                                                "name": "Literal",
                                                "src": "5773:4:32"
                                            }
                                        ],
                                        "id": 12280,
                                        "name": "Return",
                                        "src": "5766:11:32"
                                    }
                                ],
                                "id": 12281,
                                "name": "Block",
                                "src": "5661:124:32"
                            }
                        ],
                        "id": 12282,
                        "name": "FunctionDefinition",
                        "src": "5575:210:32"
                    },
                    {
                        "attributes": {
                            "documentation": "@dev Atomically decreases the allowance granted to `spender` by the caller.\r\n\n     * This is an alternative to {approve} that can be used as a mitigation for\r\nproblems described in {IERC20-approve}.\r\n\n     * Emits an {Approval} event indicating the updated allowance.\r\n\n     * Requirements:\r\n\n     * - `spender` cannot be the zero address.\r\n- `spender` must have allowance for the caller of at least\r\n`subtractedValue`.\r",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "decreaseAllowance",
                            "scope": 12530,
                            "stateMutability": "nonpayable",
                            "superFunction": null,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "spender",
                                            "scope": 12310,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 12283,
                                                "name": "ElementaryTypeName",
                                                "src": "6315:7:32"
                                            }
                                        ],
                                        "id": 12284,
                                        "name": "VariableDeclaration",
                                        "src": "6315:15:32"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "subtractedValue",
                                            "scope": 12310,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 12285,
                                                "name": "ElementaryTypeName",
                                                "src": "6332:7:32"
                                            }
                                        ],
                                        "id": 12286,
                                        "name": "VariableDeclaration",
                                        "src": "6332:23:32"
                                    }
                                ],
                                "id": 12287,
                                "name": "ParameterList",
                                "src": "6314:42:32"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "",
                                            "scope": 12310,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bool",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bool",
                                                    "type": "bool"
                                                },
                                                "id": 12288,
                                                "name": "ElementaryTypeName",
                                                "src": "6373:4:32"
                                            }
                                        ],
                                        "id": 12289,
                                        "name": "VariableDeclaration",
                                        "src": "6373:4:32"
                                    }
                                ],
                                "id": 12290,
                                "name": "ParameterList",
                                "src": "6372:6:32"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12496,
                                                            "type": "function (address,address,uint256)",
                                                            "value": "_approve"
                                                        },
                                                        "id": 12291,
                                                        "name": "Identifier",
                                                        "src": "6390:8:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "arguments": [
                                                                null
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "type": "address payable",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        null
                                                                    ],
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 17,
                                                                    "type": "function () view returns (address payable)",
                                                                    "value": "_msgSender"
                                                                },
                                                                "id": 12292,
                                                                "name": "Identifier",
                                                                "src": "6399:10:32"
                                                            }
                                                        ],
                                                        "id": 12293,
                                                        "name": "FunctionCall",
                                                        "src": "6399:12:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12284,
                                                            "type": "address",
                                                            "value": "spender"
                                                        },
                                                        "id": 12294,
                                                        "name": "Identifier",
                                                        "src": "6413:7:32"
                                                    },
                                                    {
                                                        "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_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                                                                            "typeString": "literal_string \"ERC20: decreased allowance below zero\""
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sub",
                                                                    "referencedDeclaration": 99,
                                                                    "type": "function (uint256,uint256,string memory) pure returns (uint256)"
                                                                },
                                                                "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": 12095,
                                                                                            "type": "mapping(address => mapping(address => uint256))",
                                                                                            "value": "_allowances"
                                                                                        },
                                                                                        "id": 12295,
                                                                                        "name": "Identifier",
                                                                                        "src": "6422:11:32"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": null,
                                                                                            "arguments": [
                                                                                                null
                                                                                            ],
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "type": "address payable",
                                                                                            "type_conversion": false
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 17,
                                                                                                    "type": "function () view returns (address payable)",
                                                                                                    "value": "_msgSender"
                                                                                                },
                                                                                                "id": 12296,
                                                                                                "name": "Identifier",
                                                                                                "src": "6434:10:32"
                                                                                            }
                                                                                        ],
                                                                                        "id": 12297,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "6434:12:32"
                                                                                    }
                                                                                ],
                                                                                "id": 12298,
                                                                                "name": "IndexAccess",
                                                                                "src": "6422:25:32"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 12284,
                                                                                    "type": "address",
                                                                                    "value": "spender"
                                                                                },
                                                                                "id": 12299,
                                                                                "name": "Identifier",
                                                                                "src": "6448:7:32"
                                                                            }
                                                                        ],
                                                                        "id": 12300,
                                                                        "name": "IndexAccess",
                                                                        "src": "6422:34:32"
                                                                    }
                                                                ],
                                                                "id": 12301,
                                                                "name": "MemberAccess",
                                                                "src": "6422:38:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 12286,
                                                                    "type": "uint256",
                                                                    "value": "subtractedValue"
                                                                },
                                                                "id": 12302,
                                                                "name": "Identifier",
                                                                "src": "6461:15:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "hexvalue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "subdenomination": null,
                                                                    "token": "string",
                                                                    "type": "literal_string \"ERC20: decreased allowance below zero\"",
                                                                    "value": "ERC20: decreased allowance below zero"
                                                                },
                                                                "id": 12303,
                                                                "name": "Literal",
                                                                "src": "6478:39:32"
                                                            }
                                                        ],
                                                        "id": 12304,
                                                        "name": "FunctionCall",
                                                        "src": "6422:96:32"
                                                    }
                                                ],
                                                "id": 12305,
                                                "name": "FunctionCall",
                                                "src": "6390:129:32"
                                            }
                                        ],
                                        "id": 12306,
                                        "name": "ExpressionStatement",
                                        "src": "6390:129:32"
                                    },
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 12290
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "hexvalue": "74727565",
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "subdenomination": null,
                                                    "token": "bool",
                                                    "type": "bool",
                                                    "value": "true"
                                                },
                                                "id": 12307,
                                                "name": "Literal",
                                                "src": "6537:4:32"
                                            }
                                        ],
                                        "id": 12308,
                                        "name": "Return",
                                        "src": "6530:11:32"
                                    }
                                ],
                                "id": 12309,
                                "name": "Block",
                                "src": "6379:170:32"
                            }
                        ],
                        "id": 12310,
                        "name": "FunctionDefinition",
                        "src": "6288:261:32"
                    },
                    {
                        "attributes": {
                            "documentation": "@dev Moves tokens `amount` from `sender` to `recipient`.\r\n\n     * This is internal function is equivalent to {transfer}, and can be used to\r\ne.g. implement automatic token fees, slashing mechanisms, etc.\r\n\n     * Emits a {Transfer} event.\r\n\n     * Requirements:\r\n\n     * - `sender` cannot be the zero address.\r\n- `recipient` cannot be the zero address.\r\n- `sender` must have a balance of at least `amount`.\r",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "_transfer",
                            "scope": 12530,
                            "stateMutability": "nonpayable",
                            "superFunction": null,
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "sender",
                                            "scope": 12367,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 12311,
                                                "name": "ElementaryTypeName",
                                                "src": "7058:7:32"
                                            }
                                        ],
                                        "id": 12312,
                                        "name": "VariableDeclaration",
                                        "src": "7058:14:32"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "recipient",
                                            "scope": 12367,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 12313,
                                                "name": "ElementaryTypeName",
                                                "src": "7074:7:32"
                                            }
                                        ],
                                        "id": 12314,
                                        "name": "VariableDeclaration",
                                        "src": "7074:17:32"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "amount",
                                            "scope": 12367,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 12315,
                                                "name": "ElementaryTypeName",
                                                "src": "7093:7:32"
                                            }
                                        ],
                                        "id": 12316,
                                        "name": "VariableDeclaration",
                                        "src": "7093:14:32"
                                    }
                                ],
                                "id": 12317,
                                "name": "ParameterList",
                                "src": "7057:51:32"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 12318,
                                "name": "ParameterList",
                                "src": "7118:0:32"
                            },
                            {
                                "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"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                                                                    "typeString": "literal_string \"ERC20: transfer from the zero address\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                13002,
                                                                13003
                                                            ],
                                                            "referencedDeclaration": 13003,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 12319,
                                                        "name": "Identifier",
                                                        "src": "7129:7:32"
                                                    },
                                                    {
                                                        "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": 12312,
                                                                    "type": "address",
                                                                    "value": "sender"
                                                                },
                                                                "id": 12320,
                                                                "name": "Identifier",
                                                                "src": "7137:6:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "type": "address payable",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                                    "typeString": "int_const 0"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "type": "type(address)",
                                                                            "value": "address"
                                                                        },
                                                                        "id": 12321,
                                                                        "name": "ElementaryTypeNameExpression",
                                                                        "src": "7147:7:32"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "hexvalue": "30",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "subdenomination": null,
                                                                            "token": "number",
                                                                            "type": "int_const 0",
                                                                            "value": "0"
                                                                        },
                                                                        "id": 12322,
                                                                        "name": "Literal",
                                                                        "src": "7155:1:32"
                                                                    }
                                                                ],
                                                                "id": 12323,
                                                                "name": "FunctionCall",
                                                                "src": "7147:10:32"
                                                            }
                                                        ],
                                                        "id": 12324,
                                                        "name": "BinaryOperation",
                                                        "src": "7137:20:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "string",
                                                            "type": "literal_string \"ERC20: transfer from the zero address\"",
                                                            "value": "ERC20: transfer from the zero address"
                                                        },
                                                        "id": 12325,
                                                        "name": "Literal",
                                                        "src": "7159:39:32"
                                                    }
                                                ],
                                                "id": 12326,
                                                "name": "FunctionCall",
                                                "src": "7129:70:32"
                                            }
                                        ],
                                        "id": 12327,
                                        "name": "ExpressionStatement",
                                        "src": "7129:70:32"
                                    },
                                    {
                                        "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"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                                                                    "typeString": "literal_string \"ERC20: transfer to the zero address\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                13002,
                                                                13003
                                                            ],
                                                            "referencedDeclaration": 13003,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 12328,
                                                        "name": "Identifier",
                                                        "src": "7210:7:32"
                                                    },
                                                    {
                                                        "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": 12314,
                                                                    "type": "address",
                                                                    "value": "recipient"
                                                                },
                                                                "id": 12329,
                                                                "name": "Identifier",
                                                                "src": "7218:9:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "type": "address payable",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                                    "typeString": "int_const 0"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "type": "type(address)",
                                                                            "value": "address"
                                                                        },
                                                                        "id": 12330,
                                                                        "name": "ElementaryTypeNameExpression",
                                                                        "src": "7231:7:32"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "hexvalue": "30",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "subdenomination": null,
                                                                            "token": "number",
                                                                            "type": "int_const 0",
                                                                            "value": "0"
                                                                        },
                                                                        "id": 12331,
                                                                        "name": "Literal",
                                                                        "src": "7239:1:32"
                                                                    }
                                                                ],
                                                                "id": 12332,
                                                                "name": "FunctionCall",
                                                                "src": "7231:10:32"
                                                            }
                                                        ],
                                                        "id": 12333,
                                                        "name": "BinaryOperation",
                                                        "src": "7218:23:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "string",
                                                            "type": "literal_string \"ERC20: transfer to the zero address\"",
                                                            "value": "ERC20: transfer to the zero address"
                                                        },
                                                        "id": 12334,
                                                        "name": "Literal",
                                                        "src": "7243:37:32"
                                                    }
                                                ],
                                                "id": 12335,
                                                "name": "FunctionCall",
                                                "src": "7210:71:32"
                                            }
                                        ],
                                        "id": 12336,
                                        "name": "ExpressionStatement",
                                        "src": "7210:71:32"
                                    },
                                    {
                                        "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,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 12089,
                                                                    "type": "mapping(address => uint256)",
                                                                    "value": "_balances"
                                                                },
                                                                "id": 12337,
                                                                "name": "Identifier",
                                                                "src": "7294:9:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 12312,
                                                                    "type": "address",
                                                                    "value": "sender"
                                                                },
                                                                "id": 12338,
                                                                "name": "Identifier",
                                                                "src": "7304:6:32"
                                                            }
                                                        ],
                                                        "id": 12339,
                                                        "name": "IndexAccess",
                                                        "src": "7294:17:32"
                                                    },
                                                    {
                                                        "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_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                                                                            "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sub",
                                                                    "referencedDeclaration": 99,
                                                                    "type": "function (uint256,uint256,string memory) pure returns (uint256)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "uint256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 12089,
                                                                                    "type": "mapping(address => uint256)",
                                                                                    "value": "_balances"
                                                                                },
                                                                                "id": 12340,
                                                                                "name": "Identifier",
                                                                                "src": "7314:9:32"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 12312,
                                                                                    "type": "address",
                                                                                    "value": "sender"
                                                                                },
                                                                                "id": 12341,
                                                                                "name": "Identifier",
                                                                                "src": "7324:6:32"
                                                                            }
                                                                        ],
                                                                        "id": 12342,
                                                                        "name": "IndexAccess",
                                                                        "src": "7314:17:32"
                                                                    }
                                                                ],
                                                                "id": 12343,
                                                                "name": "MemberAccess",
                                                                "src": "7314:21:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 12316,
                                                                    "type": "uint256",
                                                                    "value": "amount"
                                                                },
                                                                "id": 12344,
                                                                "name": "Identifier",
                                                                "src": "7336:6:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "hexvalue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "subdenomination": null,
                                                                    "token": "string",
                                                                    "type": "literal_string \"ERC20: transfer amount exceeds balance\"",
                                                                    "value": "ERC20: transfer amount exceeds balance"
                                                                },
                                                                "id": 12345,
                                                                "name": "Literal",
                                                                "src": "7344:40:32"
                                                            }
                                                        ],
                                                        "id": 12346,
                                                        "name": "FunctionCall",
                                                        "src": "7314:71:32"
                                                    }
                                                ],
                                                "id": 12347,
                                                "name": "Assignment",
                                                "src": "7294:91:32"
                                            }
                                        ],
                                        "id": 12348,
                                        "name": "ExpressionStatement",
                                        "src": "7294:91:32"
                                    },
                                    {
                                        "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,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 12089,
                                                                    "type": "mapping(address => uint256)",
                                                                    "value": "_balances"
                                                                },
                                                                "id": 12349,
                                                                "name": "Identifier",
                                                                "src": "7396:9:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 12314,
                                                                    "type": "address",
                                                                    "value": "recipient"
                                                                },
                                                                "id": 12350,
                                                                "name": "Identifier",
                                                                "src": "7406:9:32"
                                                            }
                                                        ],
                                                        "id": 12351,
                                                        "name": "IndexAccess",
                                                        "src": "7396:20:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "type": "uint256",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "add",
                                                                    "referencedDeclaration": 56,
                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "uint256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 12089,
                                                                                    "type": "mapping(address => uint256)",
                                                                                    "value": "_balances"
                                                                                },
                                                                                "id": 12352,
                                                                                "name": "Identifier",
                                                                                "src": "7419:9:32"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 12314,
                                                                                    "type": "address",
                                                                                    "value": "recipient"
                                                                                },
                                                                                "id": 12353,
                                                                                "name": "Identifier",
                                                                                "src": "7429:9:32"
                                                                            }
                                                                        ],
                                                                        "id": 12354,
                                                                        "name": "IndexAccess",
                                                                        "src": "7419:20:32"
                                                                    }
                                                                ],
                                                                "id": 12355,
                                                                "name": "MemberAccess",
                                                                "src": "7419:24:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 12316,
                                                                    "type": "uint256",
                                                                    "value": "amount"
                                                                },
                                                                "id": 12356,
                                                                "name": "Identifier",
                                                                "src": "7444:6:32"
                                                            }
                                                        ],
                                                        "id": 12357,
                                                        "name": "FunctionCall",
                                                        "src": "7419:32:32"
                                                    }
                                                ],
                                                "id": 12358,
                                                "name": "Assignment",
                                                "src": "7396:55:32"
                                            }
                                        ],
                                        "id": 12359,
                                        "name": "ExpressionStatement",
                                        "src": "7396:55:32"
                                    },
                                    {
                                        "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": 400,
                                                            "type": "function (address,address,uint256)",
                                                            "value": "Transfer"
                                                        },
                                                        "id": 12360,
                                                        "name": "Identifier",
                                                        "src": "7467:8:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12312,
                                                            "type": "address",
                                                            "value": "sender"
                                                        },
                                                        "id": 12361,
                                                        "name": "Identifier",
                                                        "src": "7476:6:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12314,
                                                            "type": "address",
                                                            "value": "recipient"
                                                        },
                                                        "id": 12362,
                                                        "name": "Identifier",
                                                        "src": "7484:9:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12316,
                                                            "type": "uint256",
                                                            "value": "amount"
                                                        },
                                                        "id": 12363,
                                                        "name": "Identifier",
                                                        "src": "7495:6:32"
                                                    }
                                                ],
                                                "id": 12364,
                                                "name": "FunctionCall",
                                                "src": "7467:35:32"
                                            }
                                        ],
                                        "id": 12365,
                                        "name": "EmitStatement",
                                        "src": "7462:40:32"
                                    }
                                ],
                                "id": 12366,
                                "name": "Block",
                                "src": "7118:392:32"
                            }
                        ],
                        "id": 12367,
                        "name": "FunctionDefinition",
                        "src": "7039:471:32"
                    },
                    {
                        "attributes": {
                            "documentation": "@dev Creates `amount` tokens and assigns them to `account`, increasing\r\nthe total supply.\r\n\n     * Emits a {Transfer} event with `from` set to the zero address.\r\n\n     * Requirements\r\n\n     * - `to` cannot be the zero address.\r",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "_mint",
                            "scope": 12530,
                            "stateMutability": "nonpayable",
                            "superFunction": null,
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "account",
                                            "scope": 12410,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 12368,
                                                "name": "ElementaryTypeName",
                                                "src": "7806:7:32"
                                            }
                                        ],
                                        "id": 12369,
                                        "name": "VariableDeclaration",
                                        "src": "7806:15:32"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "amount",
                                            "scope": 12410,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 12370,
                                                "name": "ElementaryTypeName",
                                                "src": "7823:7:32"
                                            }
                                        ],
                                        "id": 12371,
                                        "name": "VariableDeclaration",
                                        "src": "7823:14:32"
                                    }
                                ],
                                "id": 12372,
                                "name": "ParameterList",
                                "src": "7805:33:32"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 12373,
                                "name": "ParameterList",
                                "src": "7848:0:32"
                            },
                            {
                                "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"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                                                                    "typeString": "literal_string \"ERC20: mint to the zero address\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                13002,
                                                                13003
                                                            ],
                                                            "referencedDeclaration": 13003,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 12374,
                                                        "name": "Identifier",
                                                        "src": "7859:7:32"
                                                    },
                                                    {
                                                        "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": 12369,
                                                                    "type": "address",
                                                                    "value": "account"
                                                                },
                                                                "id": 12375,
                                                                "name": "Identifier",
                                                                "src": "7867:7:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "type": "address payable",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                                    "typeString": "int_const 0"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "type": "type(address)",
                                                                            "value": "address"
                                                                        },
                                                                        "id": 12376,
                                                                        "name": "ElementaryTypeNameExpression",
                                                                        "src": "7878:7:32"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "hexvalue": "30",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "subdenomination": null,
                                                                            "token": "number",
                                                                            "type": "int_const 0",
                                                                            "value": "0"
                                                                        },
                                                                        "id": 12377,
                                                                        "name": "Literal",
                                                                        "src": "7886:1:32"
                                                                    }
                                                                ],
                                                                "id": 12378,
                                                                "name": "FunctionCall",
                                                                "src": "7878:10:32"
                                                            }
                                                        ],
                                                        "id": 12379,
                                                        "name": "BinaryOperation",
                                                        "src": "7867:21:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "string",
                                                            "type": "literal_string \"ERC20: mint to the zero address\"",
                                                            "value": "ERC20: mint to the zero address"
                                                        },
                                                        "id": 12380,
                                                        "name": "Literal",
                                                        "src": "7890:33:32"
                                                    }
                                                ],
                                                "id": 12381,
                                                "name": "FunctionCall",
                                                "src": "7859:65:32"
                                            }
                                        ],
                                        "id": 12382,
                                        "name": "ExpressionStatement",
                                        "src": "7859:65:32"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "uint256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12097,
                                                            "type": "uint256",
                                                            "value": "_totalSupply"
                                                        },
                                                        "id": 12383,
                                                        "name": "Identifier",
                                                        "src": "7937:12:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "type": "uint256",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "add",
                                                                    "referencedDeclaration": 56,
                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 12097,
                                                                            "type": "uint256",
                                                                            "value": "_totalSupply"
                                                                        },
                                                                        "id": 12384,
                                                                        "name": "Identifier",
                                                                        "src": "7952:12:32"
                                                                    }
                                                                ],
                                                                "id": 12385,
                                                                "name": "MemberAccess",
                                                                "src": "7952:16:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 12371,
                                                                    "type": "uint256",
                                                                    "value": "amount"
                                                                },
                                                                "id": 12386,
                                                                "name": "Identifier",
                                                                "src": "7969:6:32"
                                                            }
                                                        ],
                                                        "id": 12387,
                                                        "name": "FunctionCall",
                                                        "src": "7952:24:32"
                                                    }
                                                ],
                                                "id": 12388,
                                                "name": "Assignment",
                                                "src": "7937:39:32"
                                            }
                                        ],
                                        "id": 12389,
                                        "name": "ExpressionStatement",
                                        "src": "7937:39:32"
                                    },
                                    {
                                        "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,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 12089,
                                                                    "type": "mapping(address => uint256)",
                                                                    "value": "_balances"
                                                                },
                                                                "id": 12390,
                                                                "name": "Identifier",
                                                                "src": "7987:9:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 12369,
                                                                    "type": "address",
                                                                    "value": "account"
                                                                },
                                                                "id": 12391,
                                                                "name": "Identifier",
                                                                "src": "7997:7:32"
                                                            }
                                                        ],
                                                        "id": 12392,
                                                        "name": "IndexAccess",
                                                        "src": "7987:18:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "type": "uint256",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "add",
                                                                    "referencedDeclaration": 56,
                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "uint256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 12089,
                                                                                    "type": "mapping(address => uint256)",
                                                                                    "value": "_balances"
                                                                                },
                                                                                "id": 12393,
                                                                                "name": "Identifier",
                                                                                "src": "8008:9:32"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 12369,
                                                                                    "type": "address",
                                                                                    "value": "account"
                                                                                },
                                                                                "id": 12394,
                                                                                "name": "Identifier",
                                                                                "src": "8018:7:32"
                                                                            }
                                                                        ],
                                                                        "id": 12395,
                                                                        "name": "IndexAccess",
                                                                        "src": "8008:18:32"
                                                                    }
                                                                ],
                                                                "id": 12396,
                                                                "name": "MemberAccess",
                                                                "src": "8008:22:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 12371,
                                                                    "type": "uint256",
                                                                    "value": "amount"
                                                                },
                                                                "id": 12397,
                                                                "name": "Identifier",
                                                                "src": "8031:6:32"
                                                            }
                                                        ],
                                                        "id": 12398,
                                                        "name": "FunctionCall",
                                                        "src": "8008:30:32"
                                                    }
                                                ],
                                                "id": 12399,
                                                "name": "Assignment",
                                                "src": "7987:51:32"
                                            }
                                        ],
                                        "id": 12400,
                                        "name": "ExpressionStatement",
                                        "src": "7987:51:32"
                                    },
                                    {
                                        "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_payable",
                                                                    "typeString": "address payable"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 400,
                                                            "type": "function (address,address,uint256)",
                                                            "value": "Transfer"
                                                        },
                                                        "id": 12401,
                                                        "name": "Identifier",
                                                        "src": "8054:8:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "type": "address payable",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)",
                                                                    "value": "address"
                                                                },
                                                                "id": 12402,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "8063:7:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "hexvalue": "30",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "subdenomination": null,
                                                                    "token": "number",
                                                                    "type": "int_const 0",
                                                                    "value": "0"
                                                                },
                                                                "id": 12403,
                                                                "name": "Literal",
                                                                "src": "8071:1:32"
                                                            }
                                                        ],
                                                        "id": 12404,
                                                        "name": "FunctionCall",
                                                        "src": "8063:10:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12369,
                                                            "type": "address",
                                                            "value": "account"
                                                        },
                                                        "id": 12405,
                                                        "name": "Identifier",
                                                        "src": "8075:7:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12371,
                                                            "type": "uint256",
                                                            "value": "amount"
                                                        },
                                                        "id": 12406,
                                                        "name": "Identifier",
                                                        "src": "8084:6:32"
                                                    }
                                                ],
                                                "id": 12407,
                                                "name": "FunctionCall",
                                                "src": "8054:37:32"
                                            }
                                        ],
                                        "id": 12408,
                                        "name": "EmitStatement",
                                        "src": "8049:42:32"
                                    }
                                ],
                                "id": 12409,
                                "name": "Block",
                                "src": "7848:251:32"
                            }
                        ],
                        "id": 12410,
                        "name": "FunctionDefinition",
                        "src": "7791:308:32"
                    },
                    {
                        "attributes": {
                            "documentation": "@dev Destroys `amount` tokens from `account`, reducing the\r\ntotal supply.\r\n\n     * Emits a {Transfer} event with `to` set to the zero address.\r\n\n     * Requirements\r\n\n     * - `account` cannot be the zero address.\r\n- `account` must have at least `amount` tokens.\r",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "_burn",
                            "scope": 12530,
                            "stateMutability": "nonpayable",
                            "superFunction": null,
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "account",
                                            "scope": 12454,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 12411,
                                                "name": "ElementaryTypeName",
                                                "src": "8446:7:32"
                                            }
                                        ],
                                        "id": 12412,
                                        "name": "VariableDeclaration",
                                        "src": "8446:15:32"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "amount",
                                            "scope": 12454,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 12413,
                                                "name": "ElementaryTypeName",
                                                "src": "8463:7:32"
                                            }
                                        ],
                                        "id": 12414,
                                        "name": "VariableDeclaration",
                                        "src": "8463:14:32"
                                    }
                                ],
                                "id": 12415,
                                "name": "ParameterList",
                                "src": "8445:33:32"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 12416,
                                "name": "ParameterList",
                                "src": "8488:0:32"
                            },
                            {
                                "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"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
                                                                    "typeString": "literal_string \"ERC20: burn from the zero address\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                13002,
                                                                13003
                                                            ],
                                                            "referencedDeclaration": 13003,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 12417,
                                                        "name": "Identifier",
                                                        "src": "8499:7:32"
                                                    },
                                                    {
                                                        "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": 12412,
                                                                    "type": "address",
                                                                    "value": "account"
                                                                },
                                                                "id": 12418,
                                                                "name": "Identifier",
                                                                "src": "8507:7:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "type": "address payable",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                                    "typeString": "int_const 0"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "type": "type(address)",
                                                                            "value": "address"
                                                                        },
                                                                        "id": 12419,
                                                                        "name": "ElementaryTypeNameExpression",
                                                                        "src": "8518:7:32"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "hexvalue": "30",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "subdenomination": null,
                                                                            "token": "number",
                                                                            "type": "int_const 0",
                                                                            "value": "0"
                                                                        },
                                                                        "id": 12420,
                                                                        "name": "Literal",
                                                                        "src": "8526:1:32"
                                                                    }
                                                                ],
                                                                "id": 12421,
                                                                "name": "FunctionCall",
                                                                "src": "8518:10:32"
                                                            }
                                                        ],
                                                        "id": 12422,
                                                        "name": "BinaryOperation",
                                                        "src": "8507:21:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "string",
                                                            "type": "literal_string \"ERC20: burn from the zero address\"",
                                                            "value": "ERC20: burn from the zero address"
                                                        },
                                                        "id": 12423,
                                                        "name": "Literal",
                                                        "src": "8530:35:32"
                                                    }
                                                ],
                                                "id": 12424,
                                                "name": "FunctionCall",
                                                "src": "8499:67:32"
                                            }
                                        ],
                                        "id": 12425,
                                        "name": "ExpressionStatement",
                                        "src": "8499:67:32"
                                    },
                                    {
                                        "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,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 12089,
                                                                    "type": "mapping(address => uint256)",
                                                                    "value": "_balances"
                                                                },
                                                                "id": 12426,
                                                                "name": "Identifier",
                                                                "src": "8579:9:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 12412,
                                                                    "type": "address",
                                                                    "value": "account"
                                                                },
                                                                "id": 12427,
                                                                "name": "Identifier",
                                                                "src": "8589:7:32"
                                                            }
                                                        ],
                                                        "id": 12428,
                                                        "name": "IndexAccess",
                                                        "src": "8579:18:32"
                                                    },
                                                    {
                                                        "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_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
                                                                            "typeString": "literal_string \"ERC20: burn amount exceeds balance\""
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sub",
                                                                    "referencedDeclaration": 99,
                                                                    "type": "function (uint256,uint256,string memory) pure returns (uint256)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "uint256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 12089,
                                                                                    "type": "mapping(address => uint256)",
                                                                                    "value": "_balances"
                                                                                },
                                                                                "id": 12429,
                                                                                "name": "Identifier",
                                                                                "src": "8600:9:32"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 12412,
                                                                                    "type": "address",
                                                                                    "value": "account"
                                                                                },
                                                                                "id": 12430,
                                                                                "name": "Identifier",
                                                                                "src": "8610:7:32"
                                                                            }
                                                                        ],
                                                                        "id": 12431,
                                                                        "name": "IndexAccess",
                                                                        "src": "8600:18:32"
                                                                    }
                                                                ],
                                                                "id": 12432,
                                                                "name": "MemberAccess",
                                                                "src": "8600:22:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 12414,
                                                                    "type": "uint256",
                                                                    "value": "amount"
                                                                },
                                                                "id": 12433,
                                                                "name": "Identifier",
                                                                "src": "8623:6:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "hexvalue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "subdenomination": null,
                                                                    "token": "string",
                                                                    "type": "literal_string \"ERC20: burn amount exceeds balance\"",
                                                                    "value": "ERC20: burn amount exceeds balance"
                                                                },
                                                                "id": 12434,
                                                                "name": "Literal",
                                                                "src": "8631:36:32"
                                                            }
                                                        ],
                                                        "id": 12435,
                                                        "name": "FunctionCall",
                                                        "src": "8600:68:32"
                                                    }
                                                ],
                                                "id": 12436,
                                                "name": "Assignment",
                                                "src": "8579:89:32"
                                            }
                                        ],
                                        "id": 12437,
                                        "name": "ExpressionStatement",
                                        "src": "8579:89:32"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "uint256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12097,
                                                            "type": "uint256",
                                                            "value": "_totalSupply"
                                                        },
                                                        "id": 12438,
                                                        "name": "Identifier",
                                                        "src": "8679:12:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "type": "uint256",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sub",
                                                                    "referencedDeclaration": 72,
                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 12097,
                                                                            "type": "uint256",
                                                                            "value": "_totalSupply"
                                                                        },
                                                                        "id": 12439,
                                                                        "name": "Identifier",
                                                                        "src": "8694:12:32"
                                                                    }
                                                                ],
                                                                "id": 12440,
                                                                "name": "MemberAccess",
                                                                "src": "8694:16:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 12414,
                                                                    "type": "uint256",
                                                                    "value": "amount"
                                                                },
                                                                "id": 12441,
                                                                "name": "Identifier",
                                                                "src": "8711:6:32"
                                                            }
                                                        ],
                                                        "id": 12442,
                                                        "name": "FunctionCall",
                                                        "src": "8694:24:32"
                                                    }
                                                ],
                                                "id": 12443,
                                                "name": "Assignment",
                                                "src": "8679:39:32"
                                            }
                                        ],
                                        "id": 12444,
                                        "name": "ExpressionStatement",
                                        "src": "8679:39:32"
                                    },
                                    {
                                        "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_payable",
                                                                    "typeString": "address payable"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 400,
                                                            "type": "function (address,address,uint256)",
                                                            "value": "Transfer"
                                                        },
                                                        "id": 12445,
                                                        "name": "Identifier",
                                                        "src": "8734:8:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12412,
                                                            "type": "address",
                                                            "value": "account"
                                                        },
                                                        "id": 12446,
                                                        "name": "Identifier",
                                                        "src": "8743:7:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "type": "address payable",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)",
                                                                    "value": "address"
                                                                },
                                                                "id": 12447,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "8752:7:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "hexvalue": "30",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "subdenomination": null,
                                                                    "token": "number",
                                                                    "type": "int_const 0",
                                                                    "value": "0"
                                                                },
                                                                "id": 12448,
                                                                "name": "Literal",
                                                                "src": "8760:1:32"
                                                            }
                                                        ],
                                                        "id": 12449,
                                                        "name": "FunctionCall",
                                                        "src": "8752:10:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12414,
                                                            "type": "uint256",
                                                            "value": "amount"
                                                        },
                                                        "id": 12450,
                                                        "name": "Identifier",
                                                        "src": "8764:6:32"
                                                    }
                                                ],
                                                "id": 12451,
                                                "name": "FunctionCall",
                                                "src": "8734:37:32"
                                            }
                                        ],
                                        "id": 12452,
                                        "name": "EmitStatement",
                                        "src": "8729:42:32"
                                    }
                                ],
                                "id": 12453,
                                "name": "Block",
                                "src": "8488:291:32"
                            }
                        ],
                        "id": 12454,
                        "name": "FunctionDefinition",
                        "src": "8431:348:32"
                    },
                    {
                        "attributes": {
                            "documentation": "@dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\r\n\n     * This is internal function is equivalent to `approve`, and can be used to\r\ne.g. set automatic allowances for certain subsystems, etc.\r\n\n     * Emits an {Approval} event.\r\n\n     * Requirements:\r\n\n     * - `owner` cannot be the zero address.\r\n- `spender` cannot be the zero address.\r",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "_approve",
                            "scope": 12530,
                            "stateMutability": "nonpayable",
                            "superFunction": null,
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "owner",
                                            "scope": 12496,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 12455,
                                                "name": "ElementaryTypeName",
                                                "src": "9237:7:32"
                                            }
                                        ],
                                        "id": 12456,
                                        "name": "VariableDeclaration",
                                        "src": "9237:13:32"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "spender",
                                            "scope": 12496,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 12457,
                                                "name": "ElementaryTypeName",
                                                "src": "9252:7:32"
                                            }
                                        ],
                                        "id": 12458,
                                        "name": "VariableDeclaration",
                                        "src": "9252:15:32"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "amount",
                                            "scope": 12496,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 12459,
                                                "name": "ElementaryTypeName",
                                                "src": "9269:7:32"
                                            }
                                        ],
                                        "id": 12460,
                                        "name": "VariableDeclaration",
                                        "src": "9269:14:32"
                                    }
                                ],
                                "id": 12461,
                                "name": "ParameterList",
                                "src": "9236:48:32"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 12462,
                                "name": "ParameterList",
                                "src": "9294:0:32"
                            },
                            {
                                "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"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                                                                    "typeString": "literal_string \"ERC20: approve from the zero address\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                13002,
                                                                13003
                                                            ],
                                                            "referencedDeclaration": 13003,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 12463,
                                                        "name": "Identifier",
                                                        "src": "9305:7:32"
                                                    },
                                                    {
                                                        "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": 12456,
                                                                    "type": "address",
                                                                    "value": "owner"
                                                                },
                                                                "id": 12464,
                                                                "name": "Identifier",
                                                                "src": "9313:5:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "type": "address payable",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                                    "typeString": "int_const 0"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "type": "type(address)",
                                                                            "value": "address"
                                                                        },
                                                                        "id": 12465,
                                                                        "name": "ElementaryTypeNameExpression",
                                                                        "src": "9322:7:32"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "hexvalue": "30",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "subdenomination": null,
                                                                            "token": "number",
                                                                            "type": "int_const 0",
                                                                            "value": "0"
                                                                        },
                                                                        "id": 12466,
                                                                        "name": "Literal",
                                                                        "src": "9330:1:32"
                                                                    }
                                                                ],
                                                                "id": 12467,
                                                                "name": "FunctionCall",
                                                                "src": "9322:10:32"
                                                            }
                                                        ],
                                                        "id": 12468,
                                                        "name": "BinaryOperation",
                                                        "src": "9313:19:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "string",
                                                            "type": "literal_string \"ERC20: approve from the zero address\"",
                                                            "value": "ERC20: approve from the zero address"
                                                        },
                                                        "id": 12469,
                                                        "name": "Literal",
                                                        "src": "9334:38:32"
                                                    }
                                                ],
                                                "id": 12470,
                                                "name": "FunctionCall",
                                                "src": "9305:68:32"
                                            }
                                        ],
                                        "id": 12471,
                                        "name": "ExpressionStatement",
                                        "src": "9305:68:32"
                                    },
                                    {
                                        "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"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                                                                    "typeString": "literal_string \"ERC20: approve to the zero address\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                13002,
                                                                13003
                                                            ],
                                                            "referencedDeclaration": 13003,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 12472,
                                                        "name": "Identifier",
                                                        "src": "9384:7:32"
                                                    },
                                                    {
                                                        "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": 12458,
                                                                    "type": "address",
                                                                    "value": "spender"
                                                                },
                                                                "id": 12473,
                                                                "name": "Identifier",
                                                                "src": "9392:7:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "type": "address payable",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                                    "typeString": "int_const 0"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "type": "type(address)",
                                                                            "value": "address"
                                                                        },
                                                                        "id": 12474,
                                                                        "name": "ElementaryTypeNameExpression",
                                                                        "src": "9403:7:32"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "hexvalue": "30",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "subdenomination": null,
                                                                            "token": "number",
                                                                            "type": "int_const 0",
                                                                            "value": "0"
                                                                        },
                                                                        "id": 12475,
                                                                        "name": "Literal",
                                                                        "src": "9411:1:32"
                                                                    }
                                                                ],
                                                                "id": 12476,
                                                                "name": "FunctionCall",
                                                                "src": "9403:10:32"
                                                            }
                                                        ],
                                                        "id": 12477,
                                                        "name": "BinaryOperation",
                                                        "src": "9392:21:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "hexvalue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "subdenomination": null,
                                                            "token": "string",
                                                            "type": "literal_string \"ERC20: approve to the zero address\"",
                                                            "value": "ERC20: approve to the zero address"
                                                        },
                                                        "id": 12478,
                                                        "name": "Literal",
                                                        "src": "9415:36:32"
                                                    }
                                                ],
                                                "id": 12479,
                                                "name": "FunctionCall",
                                                "src": "9384:68:32"
                                            }
                                        ],
                                        "id": 12480,
                                        "name": "ExpressionStatement",
                                        "src": "9384:68:32"
                                    },
                                    {
                                        "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": 12095,
                                                                            "type": "mapping(address => mapping(address => uint256))",
                                                                            "value": "_allowances"
                                                                        },
                                                                        "id": 12481,
                                                                        "name": "Identifier",
                                                                        "src": "9465:11:32"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": null,
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 12456,
                                                                            "type": "address",
                                                                            "value": "owner"
                                                                        },
                                                                        "id": 12482,
                                                                        "name": "Identifier",
                                                                        "src": "9477:5:32"
                                                                    }
                                                                ],
                                                                "id": 12484,
                                                                "name": "IndexAccess",
                                                                "src": "9465:18:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 12458,
                                                                    "type": "address",
                                                                    "value": "spender"
                                                                },
                                                                "id": 12483,
                                                                "name": "Identifier",
                                                                "src": "9484:7:32"
                                                            }
                                                        ],
                                                        "id": 12485,
                                                        "name": "IndexAccess",
                                                        "src": "9465:27:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12460,
                                                            "type": "uint256",
                                                            "value": "amount"
                                                        },
                                                        "id": 12486,
                                                        "name": "Identifier",
                                                        "src": "9495:6:32"
                                                    }
                                                ],
                                                "id": 12487,
                                                "name": "Assignment",
                                                "src": "9465:36:32"
                                            }
                                        ],
                                        "id": 12488,
                                        "name": "ExpressionStatement",
                                        "src": "9465:36:32"
                                    },
                                    {
                                        "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": 408,
                                                            "type": "function (address,address,uint256)",
                                                            "value": "Approval"
                                                        },
                                                        "id": 12489,
                                                        "name": "Identifier",
                                                        "src": "9517:8:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12456,
                                                            "type": "address",
                                                            "value": "owner"
                                                        },
                                                        "id": 12490,
                                                        "name": "Identifier",
                                                        "src": "9526:5:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12458,
                                                            "type": "address",
                                                            "value": "spender"
                                                        },
                                                        "id": 12491,
                                                        "name": "Identifier",
                                                        "src": "9533:7:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12460,
                                                            "type": "uint256",
                                                            "value": "amount"
                                                        },
                                                        "id": 12492,
                                                        "name": "Identifier",
                                                        "src": "9542:6:32"
                                                    }
                                                ],
                                                "id": 12493,
                                                "name": "FunctionCall",
                                                "src": "9517:32:32"
                                            }
                                        ],
                                        "id": 12494,
                                        "name": "EmitStatement",
                                        "src": "9512:37:32"
                                    }
                                ],
                                "id": 12495,
                                "name": "Block",
                                "src": "9294:263:32"
                            }
                        ],
                        "id": 12496,
                        "name": "FunctionDefinition",
                        "src": "9219:338:32"
                    },
                    {
                        "attributes": {
                            "documentation": "@dev Destroys `amount` tokens from `account`.`amount` is then deducted\r\nfrom the caller's allowance.\r\n\n     * See {_burn} and {_approve}.\r",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "_burnFrom",
                            "scope": 12530,
                            "stateMutability": "nonpayable",
                            "superFunction": null,
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "account",
                                            "scope": 12525,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 12497,
                                                "name": "ElementaryTypeName",
                                                "src": "9762:7:32"
                                            }
                                        ],
                                        "id": 12498,
                                        "name": "VariableDeclaration",
                                        "src": "9762:15:32"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "name": "amount",
                                            "scope": 12525,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "value": null,
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 12499,
                                                "name": "ElementaryTypeName",
                                                "src": "9779:7:32"
                                            }
                                        ],
                                        "id": 12500,
                                        "name": "VariableDeclaration",
                                        "src": "9779:14:32"
                                    }
                                ],
                                "id": 12501,
                                "name": "ParameterList",
                                "src": "9761:33:32"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 12502,
                                "name": "ParameterList",
                                "src": "9804:0:32"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "argumentTypes": null,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12454,
                                                            "type": "function (address,uint256)",
                                                            "value": "_burn"
                                                        },
                                                        "id": 12503,
                                                        "name": "Identifier",
                                                        "src": "9815:5:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12498,
                                                            "type": "address",
                                                            "value": "account"
                                                        },
                                                        "id": 12504,
                                                        "name": "Identifier",
                                                        "src": "9821:7:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12500,
                                                            "type": "uint256",
                                                            "value": "amount"
                                                        },
                                                        "id": 12505,
                                                        "name": "Identifier",
                                                        "src": "9830:6:32"
                                                    }
                                                ],
                                                "id": 12506,
                                                "name": "FunctionCall",
                                                "src": "9815:22:32"
                                            }
                                        ],
                                        "id": 12507,
                                        "name": "ExpressionStatement",
                                        "src": "9815:22:32"
                                    },
                                    {
                                        "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_payable",
                                                                    "typeString": "address payable"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12496,
                                                            "type": "function (address,address,uint256)",
                                                            "value": "_approve"
                                                        },
                                                        "id": 12508,
                                                        "name": "Identifier",
                                                        "src": "9848:8:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 12498,
                                                            "type": "address",
                                                            "value": "account"
                                                        },
                                                        "id": 12509,
                                                        "name": "Identifier",
                                                        "src": "9857:7:32"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": null,
                                                            "arguments": [
                                                                null
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "type": "address payable",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        null
                                                                    ],
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 17,
                                                                    "type": "function () view returns (address payable)",
                                                                    "value": "_msgSender"
                                                                },
                                                                "id": 12510,
                                                                "name": "Identifier",
                                                                "src": "9866:10:32"
                                                            }
                                                        ],
                                                        "id": 12511,
                                                        "name": "FunctionCall",
                                                        "src": "9866:12:32"
                                                    },
                                                    {
                                                        "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_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db",
                                                                            "typeString": "literal_string \"ERC20: burn amount exceeds allowance\""
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sub",
                                                                    "referencedDeclaration": 99,
                                                                    "type": "function (uint256,uint256,string memory) pure returns (uint256)"
                                                                },
                                                                "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": 12095,
                                                                                            "type": "mapping(address => mapping(address => uint256))",
                                                                                            "value": "_allowances"
                                                                                        },
                                                                                        "id": 12512,
                                                                                        "name": "Identifier",
                                                                                        "src": "9880:11:32"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": null,
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 12498,
                                                                                            "type": "address",
                                                                                            "value": "account"
                                                                                        },
                                                                                        "id": 12513,
                                                                                        "name": "Identifier",
                                                                                        "src": "9892:7:32"
                                                                                    }
                                                                                ],
                                                                                "id": 12514,
                                                                                "name": "IndexAccess",
                                                                                "src": "9880:20:32"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": null,
                                                                                    "arguments": [
                                                                                        null
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "type": "address payable",
                                                                                    "type_conversion": false
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                null
                                                                                            ],
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 17,
                                                                                            "type": "function () view returns (address payable)",
                                                                                            "value": "_msgSender"
                                                                                        },
                                                                                        "id": 12515,
                                                                                        "name": "Identifier",
                                                                                        "src": "9901:10:32"
                                                                                    }
                                                                                ],
                                                                                "id": 12516,
                                                                                "name": "FunctionCall",
                                                                                "src": "9901:12:32"
                                                                            }
                                                                        ],
                                                                        "id": 12517,
                                                                        "name": "IndexAccess",
                                                                        "src": "9880:34:32"
                                                                    }
                                                                ],
                                                                "id": 12518,
                                                                "name": "MemberAccess",
                                                                "src": "9880:38:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 12500,
                                                                    "type": "uint256",
                                                                    "value": "amount"
                                                                },
                                                                "id": 12519,
                                                                "name": "Identifier",
                                                                "src": "9919:6:32"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": null,
                                                                    "hexvalue": "45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e6365",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "subdenomination": null,
                                                                    "token": "string",
                                                                    "type": "literal_string \"ERC20: burn amount exceeds allowance\"",
                                                                    "value": "ERC20: burn amount exceeds allowance"
                                                                },
                                                                "id": 12520,
                                                                "name": "Literal",
                                                                "src": "9927:38:32"
                                                            }
                                                        ],
                                                        "id": 12521,
                                                        "name": "FunctionCall",
                                                        "src": "9880:86:32"
                                                    }
                                                ],
                                                "id": 12522,
                                                "name": "FunctionCall",
                                                "src": "9848:119:32"
                                            }
                                        ],
                                        "id": 12523,
                                        "name": "ExpressionStatement",
                                        "src": "9848:119:32"
                                    }
                                ],
                                "id": 12524,
                                "name": "Block",
                                "src": "9804:171:32"
                            }
                        ],
                        "id": 12525,
                        "name": "FunctionDefinition",
                        "src": "9743:232:32"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "name": "______gap",
                            "scope": 12530,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "uint256[50]",
                            "value": null,
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "type": "uint256[50]"
                                },
                                "children": [
                                    {
                                        "attributes": {
                                            "name": "uint256",
                                            "type": "uint256"
                                        },
                                        "id": 12526,
                                        "name": "ElementaryTypeName",
                                        "src": "9983:7:32"
                                    },
                                    {
                                        "attributes": {
                                            "argumentTypes": null,
                                            "hexvalue": "3530",
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "subdenomination": null,
                                            "token": "number",
                                            "type": "int_const 50",
                                            "value": "50"
                                        },
                                        "id": 12527,
                                        "name": "Literal",
                                        "src": "9991:2:32"
                                    }
                                ],
                                "id": 12528,
                                "name": "ArrayTypeName",
                                "src": "9983:11:32"
                            }
                        ],
                        "id": 12529,
                        "name": "VariableDeclaration",
                        "src": "9983:29:32"
                    }
                ],
                "id": 12530,
                "name": "ContractDefinition",
                "src": "1449:8567:32"
            }
        ],
        "id": 12531,
        "name": "SourceUnit",
        "src": "0:10018:32"
    },
    "compiler": {
        "name": "solc",
        "version": "0.5.7+commit.6da8b019.Emscripten.clang"
    },
    "networks": {},
    "schemaVersion": "3.4.3",
    "updatedAt": "2024-06-01T09:42:15.232Z",
    "devdoc": {
        "details": "Implementation of the {IERC20} interface.\r  * This implementation is agnostic to the way tokens are created. This means\r that a supply mechanism has to be added in a derived contract using {_mint}.\r For a generic mechanism see {ERC20Mintable}.\r  * TIP: For a detailed writeup see our guide\r https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\r to implement supply mechanisms].\r  * We have followed general OpenZeppelin guidelines: functions revert instead\r of returning `false` on failure. This behavior is nonetheless conventional\r and does not conflict with the expectations of ERC20 applications.\r  * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\r This allows applications to reconstruct the allowance for all accounts just\r by listening to said events. Other implementations of the EIP may not emit\r these events, as it isn't required by the specification.\r  * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\r functions have been added to mitigate the well-known issues around setting\r allowances. See {IERC20-approve}.\r",
        "methods": {
            "allowance(address,address)": {
                "details": "See {IERC20-allowance}.\r"
            },
            "approve(address,uint256)": {
                "details": "See {IERC20-approve}.\r      * Requirements:\r      * - `spender` cannot be the zero address.\r"
            },
            "balanceOf(address)": {
                "details": "See {IERC20-balanceOf}.\r"
            },
            "decimals()": {
                "details": "Returns the number of decimals used to get its user representation.\r For example, if `decimals` equals `2`, a balance of `505` tokens should\r be displayed to a user as `5.05` (`505 / 10 ** 2`).\r      * Tokens usually opt for a value of 18, imitating the relationship between\r Ether and Wei. This is the default value returned by this function, unless\r it's overridden.\r      * NOTE: This information is only used for _display_ purposes: it in\r no way affects any of the arithmetic of the contract, including\r {IERC20-balanceOf} and {IERC20-transfer}.\r"
            },
            "decreaseAllowance(address,uint256)": {
                "details": "Atomically decreases the allowance granted to `spender` by the caller.\r      * This is an alternative to {approve} that can be used as a mitigation for\r problems described in {IERC20-approve}.\r      * Emits an {Approval} event indicating the updated allowance.\r      * Requirements:\r      * - `spender` cannot be the zero address.\r - `spender` must have allowance for the caller of at least\r `subtractedValue`.\r"
            },
            "increaseAllowance(address,uint256)": {
                "details": "Atomically increases the allowance granted to `spender` by the caller.\r      * This is an alternative to {approve} that can be used as a mitigation for\r problems described in {IERC20-approve}.\r      * Emits an {Approval} event indicating the updated allowance.\r      * Requirements:\r      * - `spender` cannot be the zero address.\r"
            },
            "name()": {
                "details": "Returns the name of the token.\r"
            },
            "symbol()": {
                "details": "Returns the symbol of the token, usually a shorter version of the\r name.\r"
            },
            "totalSupply()": {
                "details": "See {IERC20-totalSupply}.\r"
            },
            "transfer(address,uint256)": {
                "details": "See {IERC20-transfer}.\r      * Requirements:\r      * - `recipient` cannot be the zero address.\r - the caller must have a balance of at least `amount`.\r"
            },
            "transferFrom(address,address,uint256)": {
                "details": "See {IERC20-transferFrom}.\r      * Emits an {Approval} event indicating the updated allowance. This is not\r required by the EIP. See the note at the beginning of {ERC20};\r      * Requirements:\r - `sender` and `recipient` cannot be the zero address.\r - `sender` must have a balance of at least `amount`.\r - the caller must have allowance for `sender`'s tokens of at least\r `amount`.\r"
            }
        }
    },
    "userdoc": {
        "methods": {}
    }
}
