{ "contractName": "WrappedAsset", "abi": [ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "assetAddress", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "assetChain", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "bridge", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "initialized", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "_assetChain", "type": "uint8" }, { "internalType": "bytes32", "name": "_assetAddress", "type": "bytes32" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assetAddress\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assetChain\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_assetChain\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_assetAddress\",\"type\":\"bytes32\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol\":\"WrappedAsset\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol\":{\"keccak256\":\"0x029a9b6e1df05a76c4c09570bf403eb91a2df33acdb0b7414e950f35fa240b97\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://a1d5d79ed2fdbe41c9eb88971ab0c7677b66579d6ef322a5eb7b23bf8fc9f891\",\"dweb:/ipfs/QmPRZWXa3hx87fJ9u14rDxZ7mYXL2EjQHcDmC2jYZEDMNW\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0xdb26cbf4d028490f49831a7865c2fe1b28db44b535ca8d343785a3b768aae183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://840b14ce0315c47d49ba328f1f9fa7654ded1c9e1559e6c5e777a7b2dc28bf0a\",\"dweb:/ipfs/QmTLLabn4wcfGro9LEmUXUN2nwKqZSotXMvjDCLXEnLtZP\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x9a9cf02622cd7a64261b10534fc3260449da25c98c9e96d1b4ae8110a20e5806\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2df142592d1dc267d9549049ee3317fa190d2f87eaa565f86ab05ec83f7ab8f5\",\"dweb:/ipfs/QmSkJtcfWo7c42KnL5hho6GFxK6HRNV91XABx1P7xDtfLV\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5c26b39d26f7ed489e555d955dcd3e01872972e71fdd1528e93ec164e4f23385\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efdc632af6960cf865dbc113665ea1f5b90eab75cc40ec062b2f6ae6da582017\",\"dweb:/ipfs/QmfAZFDuG62vxmAN9DnXApv7e7PMzPqi4RkqqZHLMSQiY5\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xdfb4f812600ba4ce6738c35584ceb8c9433472583051b48ba5b1f66cb758a498\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df02dffe1c1de089d9b4f6192f0dcf464526f2230f420b3deec4645e0cdd2bff\",\"dweb:/ipfs/QmcqXGAU3KJqwrgUVoGJ2W8osomhSJ4R5kdsRpbuW3fELS\"]}},\"version\":1}", "bytecode": "0x60806040526012600860006101000a81548160ff021916908360ff16021790555034801561002c57600080fd5b50611b0b8061003c6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806339509351116100a25780639dc29fac116100715780639dc29fac146104ec578063a457c2d71461053a578063a9059cbb1461059e578063dd62ed3e14610602578063e78cea921461067a57610116565b8063395093511461035f57806340c10f19146103c357806370a082311461041157806395d89b411461046957610116565b8063158ef93e116100e9578063158ef93e1461025e57806318160ddd1461027e5780631ba46cfd1461029c57806323b872dd146102ba578063313ce5671461033e57610116565b8063026b05391461011b57806302a095851461013c57806306fdde0314610177578063095ea7b3146101fa575b600080fd5b6101236106ae565b604051808260ff16815260200191505060405180910390f35b6101756004803603604081101561015257600080fd5b81019080803560ff169060200190929190803590602001909291905050506106bf565b005b61017f610877565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101bf5780820151818401526020810190506101a4565b50505050905090810190601f1680156101ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102466004803603604081101561021057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610919565b60405180821515815260200191505060405180910390f35b610266610937565b60405180821515815260200191505060405180910390f35b61028661094a565b6040518082815260200191505060405180910390f35b6102a4610954565b6040518082815260200191505060405180910390f35b610326600480360360608110156102d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061095a565b60405180821515815260200191505060405180910390f35b610346610a33565b604051808260ff16815260200191505060405180910390f35b6103ab6004803603604081101561037557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a4a565b60405180821515815260200191505060405180910390f35b61040f600480360360408110156103d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610afd565b005b6104536004803603602081101561042757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bb1565b6040518082815260200191505060405180910390f35b610471610bfa565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104b1578082015181840152602081019050610496565b50505050905090810190601f1680156104de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105386004803603604081101561050257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c9c565b005b6105866004803603604081101561055057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d50565b60405180821515815260200191505060405180910390f35b6105ea600480360360408110156105b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e1d565b60405180821515815260200191505060405180910390f35b6106646004803603604081101561061857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e3b565b6040518082815260200191505060405180910390f35b610682610ec2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008054906101000a900460ff1681565b600260009054906101000a900460ff1615610742576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f616c726561647920696e697469616c697a65640000000000000000000000000081525060200191505060405180910390fd5b816000806101000a81548160ff021916908360ff1602179055508060018190555033600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260006101000a81548160ff0219169083151502179055506040518060400160405280601081526020017f576f726d686f6c652057726170706564000000000000000000000000000000008152506006908051906020019061080a9291906118aa565b506040518060400160405280600381526020017f5757540000000000000000000000000000000000000000000000000000000000815250600790805190602001906108569291906118aa565b506012600860006101000a81548160ff021916908360ff1602179055505050565b606060068054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561090f5780601f106108e45761010080835404028352916020019161090f565b820191906000526020600020905b8154815290600101906020018083116108f257829003601f168201915b5050505050905090565b600061092d610926610ee8565b8484610ef0565b6001905092915050565b600260009054906101000a900460ff1681565b6000600554905090565b60015481565b60006109678484846110e7565b610a2884610973610ee8565b610a23856040518060600160405280602881526020016119d560289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109d9610ee8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b610ef0565b600190509392505050565b6000600860009054906101000a900460ff16905090565b6000610af3610a57610ee8565b84610aee8560046000610a68610ee8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146190919063ffffffff16565b610ef0565b6001905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611a8c6025913960400191505060405180910390fd5b610bad82826114e9565b5050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c925780601f10610c6757610100808354040283529160200191610c92565b820191906000526020600020905b815481529060010190602001808311610c7557829003601f168201915b5050505050905090565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611a436025913960400191505060405180910390fd5b610d4c82826116a6565b5050565b6000610e13610d5d610ee8565b84610e0e85604051806060016040528060258152602001611ab16025913960046000610d87610ee8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b610ef0565b6001905092915050565b6000610e31610e2a610ee8565b84846110e7565b6001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611a686024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ffc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061198d6022913960400191505060405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561116d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611a1e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806119486023913960400191505060405180910390fd5b61125f816040518060600160405280602681526020016119af60269139600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112f481600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146190919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600083831115829061144e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114135780820151818401526020810190506113f8565b50505050905090810190601f1680156114405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156114df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561158c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6115a18160055461146190919063ffffffff16565b6005819055506115f981600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146190919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561172c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806119fd6021913960400191505060405180910390fd5b6117988160405180606001604052806022815260200161196b60229139600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117f08160055461186090919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60006118a283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113a1565b905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106118eb57805160ff1916838001178555611919565b82800160010185558215611919579182015b828111156119185782518255916020019190600101906118fd565b5b509050611926919061192a565b5090565b5b8082111561194357600081600090555060010161192b565b509056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f20616464726573736275726e2063616e206f6e6c792062652063616c6c6564206279207468652062726964676545524332303a20617070726f76652066726f6d20746865207a65726f20616464726573736d696e742063616e206f6e6c792062652063616c6c6564206279207468652062726964676545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ddb37f832d1d6552bf2def7f3430b7107363118444ef3991a86760397776af5d64736f6c634300060c0033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c806339509351116100a25780639dc29fac116100715780639dc29fac146104ec578063a457c2d71461053a578063a9059cbb1461059e578063dd62ed3e14610602578063e78cea921461067a57610116565b8063395093511461035f57806340c10f19146103c357806370a082311461041157806395d89b411461046957610116565b8063158ef93e116100e9578063158ef93e1461025e57806318160ddd1461027e5780631ba46cfd1461029c57806323b872dd146102ba578063313ce5671461033e57610116565b8063026b05391461011b57806302a095851461013c57806306fdde0314610177578063095ea7b3146101fa575b600080fd5b6101236106ae565b604051808260ff16815260200191505060405180910390f35b6101756004803603604081101561015257600080fd5b81019080803560ff169060200190929190803590602001909291905050506106bf565b005b61017f610877565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101bf5780820151818401526020810190506101a4565b50505050905090810190601f1680156101ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102466004803603604081101561021057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610919565b60405180821515815260200191505060405180910390f35b610266610937565b60405180821515815260200191505060405180910390f35b61028661094a565b6040518082815260200191505060405180910390f35b6102a4610954565b6040518082815260200191505060405180910390f35b610326600480360360608110156102d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061095a565b60405180821515815260200191505060405180910390f35b610346610a33565b604051808260ff16815260200191505060405180910390f35b6103ab6004803603604081101561037557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a4a565b60405180821515815260200191505060405180910390f35b61040f600480360360408110156103d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610afd565b005b6104536004803603602081101561042757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bb1565b6040518082815260200191505060405180910390f35b610471610bfa565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104b1578082015181840152602081019050610496565b50505050905090810190601f1680156104de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105386004803603604081101561050257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c9c565b005b6105866004803603604081101561055057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d50565b60405180821515815260200191505060405180910390f35b6105ea600480360360408110156105b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e1d565b60405180821515815260200191505060405180910390f35b6106646004803603604081101561061857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e3b565b6040518082815260200191505060405180910390f35b610682610ec2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008054906101000a900460ff1681565b600260009054906101000a900460ff1615610742576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f616c726561647920696e697469616c697a65640000000000000000000000000081525060200191505060405180910390fd5b816000806101000a81548160ff021916908360ff1602179055508060018190555033600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260006101000a81548160ff0219169083151502179055506040518060400160405280601081526020017f576f726d686f6c652057726170706564000000000000000000000000000000008152506006908051906020019061080a9291906118aa565b506040518060400160405280600381526020017f5757540000000000000000000000000000000000000000000000000000000000815250600790805190602001906108569291906118aa565b506012600860006101000a81548160ff021916908360ff1602179055505050565b606060068054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561090f5780601f106108e45761010080835404028352916020019161090f565b820191906000526020600020905b8154815290600101906020018083116108f257829003601f168201915b5050505050905090565b600061092d610926610ee8565b8484610ef0565b6001905092915050565b600260009054906101000a900460ff1681565b6000600554905090565b60015481565b60006109678484846110e7565b610a2884610973610ee8565b610a23856040518060600160405280602881526020016119d560289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109d9610ee8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b610ef0565b600190509392505050565b6000600860009054906101000a900460ff16905090565b6000610af3610a57610ee8565b84610aee8560046000610a68610ee8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146190919063ffffffff16565b610ef0565b6001905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611a8c6025913960400191505060405180910390fd5b610bad82826114e9565b5050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c925780601f10610c6757610100808354040283529160200191610c92565b820191906000526020600020905b815481529060010190602001808311610c7557829003601f168201915b5050505050905090565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611a436025913960400191505060405180910390fd5b610d4c82826116a6565b5050565b6000610e13610d5d610ee8565b84610e0e85604051806060016040528060258152602001611ab16025913960046000610d87610ee8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b610ef0565b6001905092915050565b6000610e31610e2a610ee8565b84846110e7565b6001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611a686024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ffc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061198d6022913960400191505060405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561116d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611a1e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806119486023913960400191505060405180910390fd5b61125f816040518060600160405280602681526020016119af60269139600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112f481600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146190919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600083831115829061144e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114135780820151818401526020810190506113f8565b50505050905090810190601f1680156114405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156114df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561158c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6115a18160055461146190919063ffffffff16565b6005819055506115f981600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146190919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561172c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806119fd6021913960400191505060405180910390fd5b6117988160405180606001604052806022815260200161196b60229139600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117f08160055461186090919063ffffffff16565b600581905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60006118a283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113a1565b905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106118eb57805160ff1916838001178555611919565b82800160010185558215611919579182015b828111156119185782518255916020019190600101906118fd565b5b509050611926919061192a565b5090565b5b8082111561194357600081600090555060010161192b565b509056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f20616464726573736275726e2063616e206f6e6c792062652063616c6c6564206279207468652062726964676545524332303a20617070726f76652066726f6d20746865207a65726f20616464726573736d696e742063616e206f6e6c792062652063616c6c6564206279207468652062726964676545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ddb37f832d1d6552bf2def7f3430b7107363118444ef3991a86760397776af5d64736f6c634300060c0033", "immutableReferences": {}, "sourceMap": "304:9061:3:-:0;;;1662:2;1636:28;;;;;;;;;;;;;;;;;;;;304:9061;;;;;;;;;;;;;;;;", "deployedSourceMap": "304:9061:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;351:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;470:373;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1730:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3750:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;413:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2773:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;380:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4368:309;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2632:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5072:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;849:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2929:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1924:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1031:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5766:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3249:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3471:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;442:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;351:23;;;;;;;;;;;;:::o;470:373::-;558:11;;;;;;;;;;;557:12;549:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:11;631:10;;:24;;;;;;;;;;;;;;;;;;680:13;665:12;:28;;;;712:10;703:6;;:19;;;;;;;;;;;;;;;;;;746:4;732:11;;:18;;;;;;;;;;;;;;;;;;761:26;;;;;;;;;;;;;;;;;:5;:26;;;;;;;;;;;;:::i;:::-;;797:15;;;;;;;;;;;;;;;;;:7;:15;;;;;;;;;;;;:::i;:::-;;834:2;822:9;;:14;;;;;;;;;;;;;;;;;;470:373;;:::o;1730:81::-;1767:13;1799:5;1792:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1730:81;:::o;3750:158::-;3825:4;3841:39;3850:12;:10;:12::i;:::-;3864:7;3873:6;3841:8;:39::i;:::-;3897:4;3890:11;;3750:158;;;;:::o;413:23::-;;;;;;;;;;;;;:::o;2773:98::-;2826:7;2852:12;;2845:19;;2773:98;:::o;380:27::-;;;;:::o;4368:309::-;4466:4;4482:36;4492:6;4500:9;4511:6;4482:9;:36::i;:::-;4528:121;4537:6;4545:12;:10;:12::i;:::-;4559:89;4597:6;4559:89;;;;;;;;;;;;;;;;;:11;:19;4571:6;4559:19;;;;;;;;;;;;;;;:33;4579:12;:10;:12::i;:::-;4559:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;4528:8;:121::i;:::-;4666:4;4659:11;;4368:309;;;;;:::o;2632:81::-;2673:5;2697:9;;;;;;;;;;;2690:16;;2632:81;:::o;5072:207::-;5152:4;5168:83;5177:12;:10;:12::i;:::-;5191:7;5200:50;5239:10;5200:11;:25;5212:12;:10;:12::i;:::-;5200:25;;;;;;;;;;;;;;;:34;5226:7;5200:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;5168:8;:83::i;:::-;5268:4;5261:11;;5072:207;;;;:::o;849:176::-;937:6;;;;;;;;;;;923:20;;:10;:20;;;915:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;996:22;1002:7;1011:6;996:5;:22::i;:::-;849:176;;:::o;2929:117::-;2995:7;3021:9;:18;3031:7;3021:18;;;;;;;;;;;;;;;;3014:25;;2929:117;;;:::o;1924:85::-;1963:13;1995:7;1988:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1924:85;:::o;1031:176::-;1119:6;;;;;;;;;;;1105:20;;:10;:20;;;1097:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1178:22;1184:7;1193:6;1178:5;:22::i;:::-;1031:176;;:::o;5766:258::-;5851:4;5867:129;5876:12;:10;:12::i;:::-;5890:7;5899:96;5938:15;5899:96;;;;;;;;;;;;;;;;;:11;:25;5911:12;:10;:12::i;:::-;5899:25;;;;;;;;;;;;;;;:34;5925:7;5899:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;5867:8;:129::i;:::-;6013:4;6006:11;;5766:258;;;;:::o;3249:164::-;3327:4;3343:42;3353:12;:10;:12::i;:::-;3367:9;3378:6;3343:9;:42::i;:::-;3402:4;3395:11;;3249:164;;;;:::o;3471:141::-;3552:7;3578:11;:18;3590:5;3578:18;;;;;;;;;;;;;;;:27;3597:7;3578:27;;;;;;;;;;;;;;;;3571:34;;3471:141;;;;:::o;442:21::-;;;;;;;;;;;;;:::o;590:104:4:-;643:15;677:10;670:17;;590:104;:::o;8620:332:3:-;8730:1;8713:19;;:5;:19;;;;8705:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8810:1;8791:21;;:7;:21;;;;8783:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8892:6;8862:11;:18;8874:5;8862:18;;;;;;;;;;;;;;;:27;8881:7;8862:27;;;;;;;;;;;;;;;:36;;;;8929:7;8913:32;;8922:5;8913:32;;;8938:6;8913:32;;;;;;;;;;;;;;;;;;8620:332;;;:::o;6498:464::-;6613:1;6595:20;;:6;:20;;;;6587:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6696:1;6675:23;;:9;:23;;;;6667:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6769;6791:6;6769:71;;;;;;;;;;;;;;;;;:9;:17;6779:6;6769:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;6749:9;:17;6759:6;6749:17;;;;;;;;;;;;;;;:91;;;;6873:32;6898:6;6873:9;:20;6883:9;6873:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;6850:9;:20;6860:9;6850:20;;;;;;;;;;;;;;;:55;;;;6937:9;6920:35;;6929:6;6920:35;;;6948:6;6920:35;;;;;;;;;;;;;;;;;;6498:464;;;:::o;1746:187:5:-;1832:7;1864:1;1859;:6;;1867:12;1851:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:9;1906:1;1902;:5;1890:17;;1925:1;1918:8;;;1746:187;;;;;:::o;874:176::-;932:7;951:9;967:1;963;:5;951:17;;991:1;986;:6;;978:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:1;1035:8;;;874:176;;;;:::o;7232:302:3:-;7326:1;7307:21;;:7;:21;;;;7299:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7390:24;7407:6;7390:12;;:16;;:24;;;;:::i;:::-;7375:12;:39;;;;7445:30;7468:6;7445:9;:18;7455:7;7445:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;7424:9;:18;7434:7;7424:18;;;;;;;;;;;;;;;:51;;;;7511:7;7490:37;;7507:1;7490:37;;;7520:6;7490:37;;;;;;;;;;;;;;;;;;7232:302;;:::o;7853:342::-;7947:1;7928:21;;:7;:21;;;;7920:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8019:68;8042:6;8019:68;;;;;;;;;;;;;;;;;:9;:18;8029:7;8019:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;7998:9;:18;8008:7;7998:18;;;;;;;;;;;;;;;:89;;;;8112:24;8129:6;8112:12;;:16;;:24;;;;:::i;:::-;8097:12;:39;;;;8177:1;8151:37;;8160:7;8151:37;;;8181:6;8151:37;;;;;;;;;;;;;;;;;;7853:342;;:::o;1321:134:5:-;1379:7;1405:43;1409:1;1412;1405:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1398:50;;1321:134;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o", "source": "// contracts/WrappedAsset.sol\n// SPDX-License-Identifier: Apache 2\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/GSN/Context.sol\";\n\ncontract WrappedAsset is IERC20, Context {\n uint8 public assetChain;\n bytes32 public assetAddress;\n bool public initialized;\n address public bridge;\n\n function initialize(uint8 _assetChain, bytes32 _assetAddress) public {\n require(!initialized, \"already initialized\");\n // Set local fields\n assetChain = _assetChain;\n assetAddress = _assetAddress;\n bridge = msg.sender;\n initialized = true;\n\n _name = \"Wormhole Wrapped\";\n _symbol = \"WWT\";\n _decimals = 18;\n }\n\n function mint(address account, uint256 amount) external {\n require(msg.sender == bridge, \"mint can only be called by the bridge\");\n\n _mint(account, amount);\n }\n\n function burn(address account, uint256 amount) external {\n require(msg.sender == bridge, \"burn can only be called by the bridge\");\n\n _burn(account, amount);\n }\n\n // Taken from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol\n // Licensed under MIT\n\n using SafeMath for uint256;\n using Address for address;\n\n mapping(address => uint256) private _balances;\n\n mapping(address => mapping(address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n uint8 private _decimals = 18;\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n * called.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view returns (uint8) {\n return _decimals;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `recipient` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address recipient, uint256 amount) public override returns (bool) {\n _transfer(_msgSender(), recipient, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public override returns (bool) {\n _approve(_msgSender(), spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20};\n *\n * Requirements:\n * - `sender` and `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n * - the caller must have allowance for ``sender``'s tokens of at least\n * `amount`.\n */\n function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {\n _transfer(sender, recipient, amount);\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \"ERC20: transfer amount exceeds allowance\"));\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \"ERC20: decreased allowance below zero\"));\n return true;\n }\n\n /**\n * @dev Moves tokens `amount` from `sender` to `recipient`.\n *\n * This is internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `sender` cannot be the zero address.\n * - `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n */\n function _transfer(address sender, address recipient, uint256 amount) internal {\n require(sender != address(0), \"ERC20: transfer from the zero address\");\n require(recipient != address(0), \"ERC20: transfer to the zero address\");\n\n _balances[sender] = _balances[sender].sub(amount, \"ERC20: transfer amount exceeds balance\");\n _balances[recipient] = _balances[recipient].add(amount);\n emit Transfer(sender, recipient, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements\n *\n * - `to` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _totalSupply = _totalSupply.add(amount);\n _balances[account] = _balances[account].add(amount);\n emit Transfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _balances[account] = _balances[account].sub(amount, \"ERC20: burn amount exceeds balance\");\n _totalSupply = _totalSupply.sub(amount);\n emit Transfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n *\n * This is internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(address owner, address spender, uint256 amount) internal {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Sets {decimals} to a value other than the default one of 18.\n *\n * WARNING: This function should only be called from the constructor. Most\n * applications that interact with token contracts will not expect\n * {decimals} to ever change, and may work incorrectly if it does.\n */\n function _setupDecimals(uint8 decimals_) internal {\n _decimals = decimals_;\n }\n}\n", "sourcePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol", "ast": { "absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol", "exportedSymbols": { "WrappedAsset": [1728] }, "id": 1729, "license": "Apache 2", "nodeType": "SourceUnit", "nodes": [ { "id": 1186, "literals": ["solidity", "^", "0.6", ".0"], "nodeType": "PragmaDirective", "src": "67:23:3" }, { "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 1187, "nodeType": "ImportDirective", "scope": 1729, "sourceUnit": 2026, "src": "92:56:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", "file": "@openzeppelin/contracts/math/SafeMath.sol", "id": 1188, "nodeType": "ImportDirective", "scope": 1729, "sourceUnit": 1948, "src": "149:51:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/utils/Address.sol", "file": "@openzeppelin/contracts/utils/Address.sol", "id": 1189, "nodeType": "ImportDirective", "scope": 1729, "sourceUnit": 2443, "src": "201:51:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/GSN/Context.sol", "file": "@openzeppelin/contracts/GSN/Context.sol", "id": 1190, "nodeType": "ImportDirective", "scope": 1729, "sourceUnit": 1752, "src": "253:49:3", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 1191, "name": "IERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2025, "src": "329:6:3", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2025", "typeString": "contract IERC20" } }, "id": 1192, "nodeType": "InheritanceSpecifier", "src": "329:6:3" }, { "arguments": null, "baseName": { "contractScope": null, "id": 1193, "name": "Context", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1751, "src": "337:7:3", "typeDescriptions": { "typeIdentifier": "t_contract$_Context_$1751", "typeString": "contract Context" } }, "id": 1194, "nodeType": "InheritanceSpecifier", "src": "337:7:3" } ], "contractDependencies": [1751, 2025], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 1728, "linearizedBaseContracts": [1728, 1751, 2025], "name": "WrappedAsset", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, "functionSelector": "026b0539", "id": 1196, "mutability": "mutable", "name": "assetChain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1728, "src": "351:23:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1195, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "351:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "1ba46cfd", "id": 1198, "mutability": "mutable", "name": "assetAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1728, "src": "380:27:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 1197, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "380:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "158ef93e", "id": 1200, "mutability": "mutable", "name": "initialized", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1728, "src": "413:23:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1199, "name": "bool", "nodeType": "ElementaryTypeName", "src": "413:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "e78cea92", "id": 1202, "mutability": "mutable", "name": "bridge", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1728, "src": "442:21:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1201, "name": "address", "nodeType": "ElementaryTypeName", "src": "442:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "public" }, { "body": { "id": 1244, "nodeType": "Block", "src": "539:304:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1211, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "557:12:3", "subExpression": { "argumentTypes": null, "id": 1210, "name": "initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1200, "src": "558:11:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "616c726561647920696e697469616c697a6564", "id": 1212, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "571:21:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_6fad3ee6d344e662108f49bced409fae87c3af64246556bdd23a34dddc7e1adc", "typeString": "literal_string \"already initialized\"" }, "value": "already initialized" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_6fad3ee6d344e662108f49bced409fae87c3af64246556bdd23a34dddc7e1adc", "typeString": "literal_string \"already initialized\"" } ], "id": 1209, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "549:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1213, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "549:44:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1214, "nodeType": "ExpressionStatement", "src": "549:44:3" }, { "expression": { "argumentTypes": null, "id": 1217, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1215, "name": "assetChain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1196, "src": "631:10:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1216, "name": "_assetChain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1204, "src": "644:11:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "631:24:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 1218, "nodeType": "ExpressionStatement", "src": "631:24:3" }, { "expression": { "argumentTypes": null, "id": 1221, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1219, "name": "assetAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1198, "src": "665:12:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1220, "name": "_assetAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1206, "src": "680:13:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "src": "665:28:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 1222, "nodeType": "ExpressionStatement", "src": "665:28:3" }, { "expression": { "argumentTypes": null, "id": 1226, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1223, "name": "bridge", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1202, "src": "703:6:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1224, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "712:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1225, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "712:10:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "703:19:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1227, "nodeType": "ExpressionStatement", "src": "703:19:3" }, { "expression": { "argumentTypes": null, "id": 1230, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1228, "name": "initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1200, "src": "732:11:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 1229, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "746:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "732:18:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1231, "nodeType": "ExpressionStatement", "src": "732:18:3" }, { "expression": { "argumentTypes": null, "id": 1234, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1232, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1307, "src": "761:5:3", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "576f726d686f6c652057726170706564", "id": 1233, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "769:18:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_7fba8604b126ac0f54fd4def8e15fd26e2df8bb510be08aa6c2c8a7c813171ee", "typeString": "literal_string \"Wormhole Wrapped\"" }, "value": "Wormhole Wrapped" }, "src": "761:26:3", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "id": 1235, "nodeType": "ExpressionStatement", "src": "761:26:3" }, { "expression": { "argumentTypes": null, "id": 1238, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1236, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1309, "src": "797:7:3", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "575754", "id": 1237, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "807:5:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_0d2d5a94d86195c9aab1dc351352ba0539c6da454bc9b63f5012e79c7d2d46e2", "typeString": "literal_string \"WWT\"" }, "value": "WWT" }, "src": "797:15:3", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "id": 1239, "nodeType": "ExpressionStatement", "src": "797:15:3" }, { "expression": { "argumentTypes": null, "id": 1242, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1240, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1312, "src": "822:9:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "3138", "id": 1241, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "834:2:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_18_by_1", "typeString": "int_const 18" }, "value": "18" }, "src": "822:14:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 1243, "nodeType": "ExpressionStatement", "src": "822:14:3" } ] }, "documentation": null, "functionSelector": "02a09585", "id": 1245, "implemented": true, "kind": "function", "modifiers": [], "name": "initialize", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1207, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1204, "mutability": "mutable", "name": "_assetChain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1245, "src": "490:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1203, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "490:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1206, "mutability": "mutable", "name": "_assetAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1245, "src": "509:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 1205, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "509:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "489:42:3" }, "returnParameters": { "id": 1208, "nodeType": "ParameterList", "parameters": [], "src": "539:0:3" }, "scope": 1728, "src": "470:373:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 1265, "nodeType": "Block", "src": "905:120:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1256, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1253, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "923:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1254, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "923:10:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1255, "name": "bridge", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1202, "src": "937:6:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "923:20:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "6d696e742063616e206f6e6c792062652063616c6c65642062792074686520627269646765", "id": 1257, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "945:39:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e7702acf154d2f82cc8c1dd52813f94b0a08ea733aaf89d0cac26f6b55722c5a", "typeString": "literal_string \"mint can only be called by the bridge\"" }, "value": "mint can only be called by the bridge" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_e7702acf154d2f82cc8c1dd52813f94b0a08ea733aaf89d0cac26f6b55722c5a", "typeString": "literal_string \"mint can only be called by the bridge\"" } ], "id": 1252, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "915:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1258, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "915:70:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1259, "nodeType": "ExpressionStatement", "src": "915:70:3" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1261, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1247, "src": "1002:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1262, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1249, "src": "1011:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1260, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1624, "src": "996:5:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 1263, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "996:22:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1264, "nodeType": "ExpressionStatement", "src": "996:22:3" } ] }, "documentation": null, "functionSelector": "40c10f19", "id": 1266, "implemented": true, "kind": "function", "modifiers": [], "name": "mint", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1250, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1247, "mutability": "mutable", "name": "account", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1266, "src": "863:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1246, "name": "address", "nodeType": "ElementaryTypeName", "src": "863:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1249, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1266, "src": "880:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1248, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "880:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "862:33:3" }, "returnParameters": { "id": 1251, "nodeType": "ParameterList", "parameters": [], "src": "905:0:3" }, "scope": 1728, "src": "849:176:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { "id": 1286, "nodeType": "Block", "src": "1087:120:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1277, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1274, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1105:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1275, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1105:10:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1276, "name": "bridge", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1202, "src": "1119:6:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1105:20:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "6275726e2063616e206f6e6c792062652063616c6c65642062792074686520627269646765", "id": 1278, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1127:39:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c31242aa9df4d29364b074986b1202ec8729deca727157a31be5e2473387893b", "typeString": "literal_string \"burn can only be called by the bridge\"" }, "value": "burn can only be called by the bridge" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_c31242aa9df4d29364b074986b1202ec8729deca727157a31be5e2473387893b", "typeString": "literal_string \"burn can only be called by the bridge\"" } ], "id": 1273, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1097:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1279, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1097:70:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1280, "nodeType": "ExpressionStatement", "src": "1097:70:3" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1282, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1268, "src": "1184:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1283, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1270, "src": "1193:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1281, "name": "_burn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1671, "src": "1178:5:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 1284, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1178:22:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1285, "nodeType": "ExpressionStatement", "src": "1178:22:3" } ] }, "documentation": null, "functionSelector": "9dc29fac", "id": 1287, "implemented": true, "kind": "function", "modifiers": [], "name": "burn", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1271, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1268, "mutability": "mutable", "name": "account", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1287, "src": "1045:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1267, "name": "address", "nodeType": "ElementaryTypeName", "src": "1045:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1270, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1287, "src": "1062:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1269, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1062:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1044:33:3" }, "returnParameters": { "id": 1272, "nodeType": "ParameterList", "parameters": [], "src": "1087:0:3" }, "scope": 1728, "src": "1031:176:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 1290, "libraryName": { "contractScope": null, "id": 1288, "name": "SafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1947, "src": "1363:8:3", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeMath_$1947", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "1357:27:3", "typeName": { "id": 1289, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1376:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "id": 1293, "libraryName": { "contractScope": null, "id": 1291, "name": "Address", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2442, "src": "1395:7:3", "typeDescriptions": { "typeIdentifier": "t_contract$_Address_$2442", "typeString": "library Address" } }, "nodeType": "UsingForDirective", "src": "1389:26:3", "typeName": { "id": 1292, "name": "address", "nodeType": "ElementaryTypeName", "src": "1407:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, { "constant": false, "id": 1297, "mutability": "mutable", "name": "_balances", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1728, "src": "1421:45:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "typeName": { "id": 1296, "keyType": { "id": 1294, "name": "address", "nodeType": "ElementaryTypeName", "src": "1429:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1421:27:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { "id": 1295, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1440:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, "value": null, "visibility": "private" }, { "constant": false, "id": 1303, "mutability": "mutable", "name": "_allowances", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1728, "src": "1473:67:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" }, "typeName": { "id": 1302, "keyType": { "id": 1298, "name": "address", "nodeType": "ElementaryTypeName", "src": "1481:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1473:47:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" }, "valueType": { "id": 1301, "keyType": { "id": 1299, "name": "address", "nodeType": "ElementaryTypeName", "src": "1500:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1492:27:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { "id": 1300, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1511:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } } }, "value": null, "visibility": "private" }, { "constant": false, "id": 1305, "mutability": "mutable", "name": "_totalSupply", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1728, "src": "1547:28:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1304, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1547:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "private" }, { "constant": false, "id": 1307, "mutability": "mutable", "name": "_name", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1728, "src": "1582:20:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 1306, "name": "string", "nodeType": "ElementaryTypeName", "src": "1582:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "private" }, { "constant": false, "id": 1309, "mutability": "mutable", "name": "_symbol", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1728, "src": "1608:22:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 1308, "name": "string", "nodeType": "ElementaryTypeName", "src": "1608:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "private" }, { "constant": false, "id": 1312, "mutability": "mutable", "name": "_decimals", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1728, "src": "1636:28:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1310, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1636:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": { "argumentTypes": null, "hexValue": "3138", "id": 1311, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1662:2:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_18_by_1", "typeString": "int_const 18" }, "value": "18" }, "visibility": "private" }, { "body": { "id": 1320, "nodeType": "Block", "src": "1782:29:3", "statements": [ { "expression": { "argumentTypes": null, "id": 1318, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1307, "src": "1799:5:3", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "functionReturnParameters": 1317, "id": 1319, "nodeType": "Return", "src": "1792:12:3" } ] }, "documentation": { "id": 1313, "nodeType": "StructuredDocumentation", "src": "1671:54:3", "text": " @dev Returns the name of the token." }, "functionSelector": "06fdde03", "id": 1321, "implemented": true, "kind": "function", "modifiers": [], "name": "name", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1314, "nodeType": "ParameterList", "parameters": [], "src": "1743:2:3" }, "returnParameters": { "id": 1317, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1316, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1321, "src": "1767:13:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 1315, "name": "string", "nodeType": "ElementaryTypeName", "src": "1767:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "src": "1766:15:3" }, "scope": 1728, "src": "1730:81:3", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { "id": 1329, "nodeType": "Block", "src": "1978:31:3", "statements": [ { "expression": { "argumentTypes": null, "id": 1327, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1309, "src": "1995:7:3", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "functionReturnParameters": 1326, "id": 1328, "nodeType": "Return", "src": "1988:14:3" } ] }, "documentation": { "id": 1322, "nodeType": "StructuredDocumentation", "src": "1817:102:3", "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name." }, "functionSelector": "95d89b41", "id": 1330, "implemented": true, "kind": "function", "modifiers": [], "name": "symbol", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1323, "nodeType": "ParameterList", "parameters": [], "src": "1939:2:3" }, "returnParameters": { "id": 1326, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1325, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1330, "src": "1963:13:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 1324, "name": "string", "nodeType": "ElementaryTypeName", "src": "1963:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "src": "1962:15:3" }, "scope": 1728, "src": "1924:85:3", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { "id": 1338, "nodeType": "Block", "src": "2680:33:3", "statements": [ { "expression": { "argumentTypes": null, "id": 1336, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1312, "src": "2697:9:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "functionReturnParameters": 1335, "id": 1337, "nodeType": "Return", "src": "2690:16:3" } ] }, "documentation": { "id": 1331, "nodeType": "StructuredDocumentation", "src": "2015:612:3", "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}." }, "functionSelector": "313ce567", "id": 1339, "implemented": true, "kind": "function", "modifiers": [], "name": "decimals", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1332, "nodeType": "ParameterList", "parameters": [], "src": "2649:2:3" }, "returnParameters": { "id": 1335, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1334, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1339, "src": "2673:5:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1333, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2673:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "2672:7:3" }, "scope": 1728, "src": "2632:81:3", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "baseFunctions": [1956], "body": { "id": 1348, "nodeType": "Block", "src": "2835:36:3", "statements": [ { "expression": { "argumentTypes": null, "id": 1346, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1305, "src": "2852:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1345, "id": 1347, "nodeType": "Return", "src": "2845:19:3" } ] }, "documentation": { "id": 1340, "nodeType": "StructuredDocumentation", "src": "2719:49:3", "text": " @dev See {IERC20-totalSupply}." }, "functionSelector": "18160ddd", "id": 1349, "implemented": true, "kind": "function", "modifiers": [], "name": "totalSupply", "nodeType": "FunctionDefinition", "overrides": { "id": 1342, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2808:8:3" }, "parameters": { "id": 1341, "nodeType": "ParameterList", "parameters": [], "src": "2793:2:3" }, "returnParameters": { "id": 1345, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1344, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1349, "src": "2826:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1343, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2826:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2825:9:3" }, "scope": 1728, "src": "2773:98:3", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "baseFunctions": [1964], "body": { "id": 1362, "nodeType": "Block", "src": "3004:42:3", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1358, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1297, "src": "3021:9:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1360, "indexExpression": { "argumentTypes": null, "id": 1359, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1352, "src": "3031:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3021:18:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1357, "id": 1361, "nodeType": "Return", "src": "3014:25:3" } ] }, "documentation": { "id": 1350, "nodeType": "StructuredDocumentation", "src": "2877:47:3", "text": " @dev See {IERC20-balanceOf}." }, "functionSelector": "70a08231", "id": 1363, "implemented": true, "kind": "function", "modifiers": [], "name": "balanceOf", "nodeType": "FunctionDefinition", "overrides": { "id": 1354, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2977:8:3" }, "parameters": { "id": 1353, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1352, "mutability": "mutable", "name": "account", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1363, "src": "2948:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1351, "name": "address", "nodeType": "ElementaryTypeName", "src": "2948:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "2947:17:3" }, "returnParameters": { "id": 1357, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1356, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1363, "src": "2995:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1355, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2995:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2994:9:3" }, "scope": 1728, "src": "2929:117:3", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "baseFunctions": [1974], "body": { "id": 1383, "nodeType": "Block", "src": "3333:80:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1375, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1739, "src": "3353:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, "id": 1376, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3353:12:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1377, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1366, "src": "3367:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1378, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1368, "src": "3378:6:3", "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": 1374, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1578, "src": "3343:9:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1379, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3343:42:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1380, "nodeType": "ExpressionStatement", "src": "3343:42:3" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 1381, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3402:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 1373, "id": 1382, "nodeType": "Return", "src": "3395:11:3" } ] }, "documentation": { "id": 1364, "nodeType": "StructuredDocumentation", "src": "3052:192:3", "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`." }, "functionSelector": "a9059cbb", "id": 1384, "implemented": true, "kind": "function", "modifiers": [], "name": "transfer", "nodeType": "FunctionDefinition", "overrides": { "id": 1370, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3309:8:3" }, "parameters": { "id": 1369, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1366, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1384, "src": "3267:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1365, "name": "address", "nodeType": "ElementaryTypeName", "src": "3267:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1368, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1384, "src": "3286:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1367, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3286:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3266:35:3" }, "returnParameters": { "id": 1373, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1372, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1384, "src": "3327:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1371, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3327:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "3326:6:3" }, "scope": 1728, "src": "3249:164:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "baseFunctions": [1984], "body": { "id": 1401, "nodeType": "Block", "src": "3561:51:3", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1395, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1303, "src": "3578:11:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 1397, "indexExpression": { "argumentTypes": null, "id": 1396, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1387, "src": "3590:5:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3578:18:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1399, "indexExpression": { "argumentTypes": null, "id": 1398, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1389, "src": "3597:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3578:27:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1394, "id": 1400, "nodeType": "Return", "src": "3571:34:3" } ] }, "documentation": { "id": 1385, "nodeType": "StructuredDocumentation", "src": "3419:47:3", "text": " @dev See {IERC20-allowance}." }, "functionSelector": "dd62ed3e", "id": 1402, "implemented": true, "kind": "function", "modifiers": [], "name": "allowance", "nodeType": "FunctionDefinition", "overrides": { "id": 1391, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3534:8:3" }, "parameters": { "id": 1390, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1387, "mutability": "mutable", "name": "owner", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1402, "src": "3490:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1386, "name": "address", "nodeType": "ElementaryTypeName", "src": "3490:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1389, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1402, "src": "3505:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1388, "name": "address", "nodeType": "ElementaryTypeName", "src": "3505:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "3489:32:3" }, "returnParameters": { "id": 1394, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1393, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1402, "src": "3552:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1392, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3552:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3551:9:3" }, "scope": 1728, "src": "3471:141:3", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "baseFunctions": [1994], "body": { "id": 1422, "nodeType": "Block", "src": "3831:77:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1414, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1739, "src": "3850:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, "id": 1415, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3850:12:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1416, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1405, "src": "3864:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1417, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1407, "src": "3873:6:3", "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": 1413, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1716, "src": "3841:8:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1418, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3841:39:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1419, "nodeType": "ExpressionStatement", "src": "3841:39:3" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 1420, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3897:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 1412, "id": 1421, "nodeType": "Return", "src": "3890:11:3" } ] }, "documentation": { "id": 1403, "nodeType": "StructuredDocumentation", "src": "3618:127:3", "text": " @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address." }, "functionSelector": "095ea7b3", "id": 1423, "implemented": true, "kind": "function", "modifiers": [], "name": "approve", "nodeType": "FunctionDefinition", "overrides": { "id": 1409, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3807:8:3" }, "parameters": { "id": 1408, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1405, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1423, "src": "3767:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1404, "name": "address", "nodeType": "ElementaryTypeName", "src": "3767:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1407, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1423, "src": "3784:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1406, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3784:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3766:33:3" }, "returnParameters": { "id": 1412, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1411, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1423, "src": "3825:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1410, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3825:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "3824:6:3" }, "scope": 1728, "src": "3750:158:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "baseFunctions": [2006], "body": { "id": 1460, "nodeType": "Block", "src": "4472:205:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1437, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1426, "src": "4492:6:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1438, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1428, "src": "4500:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1439, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1430, "src": "4511:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1436, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1578, "src": "4482:9:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1440, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4482:36:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1441, "nodeType": "ExpressionStatement", "src": "4482:36:3" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1443, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1426, "src": "4537:6:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1444, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1739, "src": "4545:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, "id": 1445, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4545:12:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1453, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1430, "src": "4597:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365", "id": 1454, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4605:42:3", "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": 1446, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1303, "src": "4559:11:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 1448, "indexExpression": { "argumentTypes": null, "id": 1447, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1426, "src": "4571:6:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4559:19:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1451, "indexExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1449, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1739, "src": "4579:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, "id": 1450, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4579:12:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4559:33:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1452, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 1825, "src": "4559:37:3", "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": 1455, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4559:89:3", "tryCall": false, "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": 1442, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1716, "src": "4528:8:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1456, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4528:121:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1457, "nodeType": "ExpressionStatement", "src": "4528:121:3" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 1458, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4666:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 1435, "id": 1459, "nodeType": "Return", "src": "4659:11:3" } ] }, "documentation": { "id": 1424, "nodeType": "StructuredDocumentation", "src": "3914:449:3", "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20};\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`." }, "functionSelector": "23b872dd", "id": 1461, "implemented": true, "kind": "function", "modifiers": [], "name": "transferFrom", "nodeType": "FunctionDefinition", "overrides": { "id": 1432, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4448:8:3" }, "parameters": { "id": 1431, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1426, "mutability": "mutable", "name": "sender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1461, "src": "4390:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1425, "name": "address", "nodeType": "ElementaryTypeName", "src": "4390:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1428, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1461, "src": "4406:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1427, "name": "address", "nodeType": "ElementaryTypeName", "src": "4406:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1430, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1461, "src": "4425:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1429, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4425:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4389:51:3" }, "returnParameters": { "id": 1435, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1434, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1461, "src": "4466:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1433, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4466:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "4465:6:3" }, "scope": 1728, "src": "4368:309:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 1488, "nodeType": "Block", "src": "5158:121:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1472, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1739, "src": "5177:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, "id": 1473, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5177:12:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1474, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1464, "src": "5191:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1482, "name": "addedValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1466, "src": "5239:10:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1475, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1303, "src": "5200:11:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 1478, "indexExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1476, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1739, "src": "5212:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, "id": 1477, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5212:12:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5200:25:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1480, "indexExpression": { "argumentTypes": null, "id": 1479, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1464, "src": "5226:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5200:34:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1481, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 1780, "src": "5200:38:3", "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": 1483, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5200:50:3", "tryCall": false, "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": 1471, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1716, "src": "5168:8:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1484, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5168:83:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1485, "nodeType": "ExpressionStatement", "src": "5168:83:3" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 1486, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5268:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 1470, "id": 1487, "nodeType": "Return", "src": "5261:11:3" } ] }, "documentation": { "id": 1462, "nodeType": "StructuredDocumentation", "src": "4683:384:3", "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address." }, "functionSelector": "39509351", "id": 1489, "implemented": true, "kind": "function", "modifiers": [], "name": "increaseAllowance", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1467, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1464, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1489, "src": "5099:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1463, "name": "address", "nodeType": "ElementaryTypeName", "src": "5099:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1466, "mutability": "mutable", "name": "addedValue", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1489, "src": "5116:18:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1465, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5116:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "5098:37:3" }, "returnParameters": { "id": 1470, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1469, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1489, "src": "5152:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1468, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5152:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "5151:6:3" }, "scope": 1728, "src": "5072:207:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 1517, "nodeType": "Block", "src": "5857:167:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1500, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1739, "src": "5876:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, "id": 1501, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5876:12:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1502, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1492, "src": "5890:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1510, "name": "subtractedValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1494, "src": "5938:15:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", "id": 1511, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5955:39:3", "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": 1503, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1303, "src": "5899:11:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 1506, "indexExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1504, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1739, "src": "5911:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, "id": 1505, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5911:12:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5899:25:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1508, "indexExpression": { "argumentTypes": null, "id": 1507, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1492, "src": "5925:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5899:34:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1509, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 1825, "src": "5899:38:3", "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": 1512, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5899:96:3", "tryCall": false, "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": 1499, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1716, "src": "5867:8:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1513, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5867:129:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1514, "nodeType": "ExpressionStatement", "src": "5867:129:3" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 1515, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "6013:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 1498, "id": 1516, "nodeType": "Return", "src": "6006:11:3" } ] }, "documentation": { "id": 1490, "nodeType": "StructuredDocumentation", "src": "5285:476:3", "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`." }, "functionSelector": "a457c2d7", "id": 1518, "implemented": true, "kind": "function", "modifiers": [], "name": "decreaseAllowance", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1495, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1492, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1518, "src": "5793:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1491, "name": "address", "nodeType": "ElementaryTypeName", "src": "5793:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1494, "mutability": "mutable", "name": "subtractedValue", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1518, "src": "5810:23:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1493, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5810:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "5792:42:3" }, "returnParameters": { "id": 1498, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1497, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1518, "src": "5851:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1496, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5851:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "5850:6:3" }, "scope": 1728, "src": "5766:258:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 1577, "nodeType": "Block", "src": "6577:385:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1534, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1529, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1521, "src": "6595:6:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1532, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6613:1:3", "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": 1531, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6605:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1530, "name": "address", "nodeType": "ElementaryTypeName", "src": "6605:7:3", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1533, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6605:10:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "6595:20:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", "id": 1535, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6617:39:3", "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": 1528, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6587:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1536, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6587:70:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1537, "nodeType": "ExpressionStatement", "src": "6587:70:3" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1539, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1523, "src": "6675:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1542, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6696:1:3", "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": 1541, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6688:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1540, "name": "address", "nodeType": "ElementaryTypeName", "src": "6688:7:3", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1543, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6688:10:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "6675:23:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", "id": 1545, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6700:37:3", "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": 1538, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6667:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1546, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6667:71:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1547, "nodeType": "ExpressionStatement", "src": "6667:71:3" }, { "expression": { "argumentTypes": null, "id": 1558, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1548, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1297, "src": "6749:9:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1550, "indexExpression": { "argumentTypes": null, "id": 1549, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1521, "src": "6759:6:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6749:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1555, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1525, "src": "6791:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", "id": 1556, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6799:40:3", "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": 1551, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1297, "src": "6769:9:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1553, "indexExpression": { "argumentTypes": null, "id": 1552, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1521, "src": "6779:6:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6769:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1554, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 1825, "src": "6769:21:3", "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": 1557, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6769:71:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "6749:91:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1559, "nodeType": "ExpressionStatement", "src": "6749:91:3" }, { "expression": { "argumentTypes": null, "id": 1569, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1560, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1297, "src": "6850:9:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1562, "indexExpression": { "argumentTypes": null, "id": 1561, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1523, "src": "6860:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6850:20:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1567, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1525, "src": "6898:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1563, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1297, "src": "6873:9:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1565, "indexExpression": { "argumentTypes": null, "id": 1564, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1523, "src": "6883:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6873:20:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1566, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 1780, "src": "6873:24:3", "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": 1568, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6873:32:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "6850:55:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1570, "nodeType": "ExpressionStatement", "src": "6850:55:3" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1572, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1521, "src": "6929:6:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1573, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1523, "src": "6937:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1574, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1525, "src": "6948:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1571, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2015, "src": "6920:8:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1575, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6920:35:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1576, "nodeType": "EmitStatement", "src": "6915:40:3" } ] }, "documentation": { "id": 1519, "nodeType": "StructuredDocumentation", "src": "6030:463:3", "text": " @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`." }, "id": 1578, "implemented": true, "kind": "function", "modifiers": [], "name": "_transfer", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1526, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1521, "mutability": "mutable", "name": "sender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1578, "src": "6517:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1520, "name": "address", "nodeType": "ElementaryTypeName", "src": "6517:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1523, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1578, "src": "6533:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1522, "name": "address", "nodeType": "ElementaryTypeName", "src": "6533:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1525, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1578, "src": "6552:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1524, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6552:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "6516:51:3" }, "returnParameters": { "id": 1527, "nodeType": "ParameterList", "parameters": [], "src": "6577:0:3" }, "scope": 1728, "src": "6498:464:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { "id": 1623, "nodeType": "Block", "src": "7289:245:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1592, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1587, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1581, "src": "7307:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1590, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7326:1:3", "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": 1589, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7318:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1588, "name": "address", "nodeType": "ElementaryTypeName", "src": "7318:7:3", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1591, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7318:10:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "7307:21:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", "id": 1593, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7330:33:3", "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": 1586, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "7299:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1594, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7299:65:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1595, "nodeType": "ExpressionStatement", "src": "7299:65:3" }, { "expression": { "argumentTypes": null, "id": 1601, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1596, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1305, "src": "7375:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1599, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1583, "src": "7407:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 1597, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1305, "src": "7390:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1598, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 1780, "src": "7390:16:3", "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": 1600, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7390:24:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "7375:39:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1602, "nodeType": "ExpressionStatement", "src": "7375:39:3" }, { "expression": { "argumentTypes": null, "id": 1612, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1603, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1297, "src": "7424:9:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1605, "indexExpression": { "argumentTypes": null, "id": 1604, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1581, "src": "7434:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7424:18:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1610, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1583, "src": "7468:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1606, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1297, "src": "7445:9:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1608, "indexExpression": { "argumentTypes": null, "id": 1607, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1581, "src": "7455:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7445:18:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 1780, "src": "7445:22:3", "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": 1611, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7445:30:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "7424:51:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1613, "nodeType": "ExpressionStatement", "src": "7424:51:3" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1617, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7507:1:3", "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": 1616, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7499:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1615, "name": "address", "nodeType": "ElementaryTypeName", "src": "7499:7:3", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1618, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7499:10:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1619, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1581, "src": "7511:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1620, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1583, "src": "7520:6:3", "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": 1614, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2015, "src": "7490:8:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1621, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7490:37:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1622, "nodeType": "EmitStatement", "src": "7485:42:3" } ] }, "documentation": { "id": 1579, "nodeType": "StructuredDocumentation", "src": "6968:259:3", "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements\n - `to` cannot be the zero address." }, "id": 1624, "implemented": true, "kind": "function", "modifiers": [], "name": "_mint", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1584, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1581, "mutability": "mutable", "name": "account", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1624, "src": "7247:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1580, "name": "address", "nodeType": "ElementaryTypeName", "src": "7247:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1583, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1624, "src": "7264:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1582, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7264:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "7246:33:3" }, "returnParameters": { "id": 1585, "nodeType": "ParameterList", "parameters": [], "src": "7289:0:3" }, "scope": 1728, "src": "7232:302:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { "id": 1670, "nodeType": "Block", "src": "7910:285:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1638, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1633, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1627, "src": "7928:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1636, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7947:1:3", "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": 1635, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7939:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1634, "name": "address", "nodeType": "ElementaryTypeName", "src": "7939:7:3", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1637, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7939:10:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "7928:21:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", "id": 1639, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7951:35:3", "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": 1632, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "7920:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1640, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7920:67:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1641, "nodeType": "ExpressionStatement", "src": "7920:67:3" }, { "expression": { "argumentTypes": null, "id": 1652, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1642, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1297, "src": "7998:9:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1644, "indexExpression": { "argumentTypes": null, "id": 1643, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1627, "src": "8008:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7998:18:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1649, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1629, "src": "8042:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", "id": 1650, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8050:36:3", "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": 1645, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1297, "src": "8019:9:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1647, "indexExpression": { "argumentTypes": null, "id": 1646, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1627, "src": "8029:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8019:18:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1648, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 1825, "src": "8019:22:3", "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": 1651, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8019:68:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "7998:89:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1653, "nodeType": "ExpressionStatement", "src": "7998:89:3" }, { "expression": { "argumentTypes": null, "id": 1659, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1654, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1305, "src": "8097:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1657, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1629, "src": "8129:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 1655, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1305, "src": "8112:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1656, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 1797, "src": "8112:16:3", "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": 1658, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8112:24:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8097:39:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1660, "nodeType": "ExpressionStatement", "src": "8097:39:3" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1662, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1627, "src": "8160:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1665, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8177:1:3", "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": 1664, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8169:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1663, "name": "address", "nodeType": "ElementaryTypeName", "src": "8169:7:3", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1666, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8169:10:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1667, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1629, "src": "8181:6:3", "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": 1661, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2015, "src": "8151:8:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1668, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8151:37:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1669, "nodeType": "EmitStatement", "src": "8146:42:3" } ] }, "documentation": { "id": 1625, "nodeType": "StructuredDocumentation", "src": "7540:308:3", "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens." }, "id": 1671, "implemented": true, "kind": "function", "modifiers": [], "name": "_burn", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1630, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1627, "mutability": "mutable", "name": "account", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1671, "src": "7868:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1626, "name": "address", "nodeType": "ElementaryTypeName", "src": "7868:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1629, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1671, "src": "7885:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1628, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7885:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "7867:33:3" }, "returnParameters": { "id": 1631, "nodeType": "ParameterList", "parameters": [], "src": "7910:0:3" }, "scope": 1728, "src": "7853:342:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { "id": 1715, "nodeType": "Block", "src": "8695:257:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1687, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1682, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1674, "src": "8713:5:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1685, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8730:1:3", "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": 1684, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8722:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1683, "name": "address", "nodeType": "ElementaryTypeName", "src": "8722:7:3", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1686, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8722:10:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "8713:19:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", "id": 1688, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8734:38:3", "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": 1681, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8705:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1689, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8705:68:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1690, "nodeType": "ExpressionStatement", "src": "8705:68:3" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1697, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1692, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1676, "src": "8791:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1695, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8810:1:3", "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": 1694, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8802:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1693, "name": "address", "nodeType": "ElementaryTypeName", "src": "8802:7:3", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1696, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8802:10:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "8791:21:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", "id": 1698, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8814:36:3", "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": 1691, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8783:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1699, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8783:68:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1700, "nodeType": "ExpressionStatement", "src": "8783:68:3" }, { "expression": { "argumentTypes": null, "id": 1707, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1701, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1303, "src": "8862:11:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 1704, "indexExpression": { "argumentTypes": null, "id": 1702, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1674, "src": "8874:5:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8862:18:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1705, "indexExpression": { "argumentTypes": null, "id": 1703, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1676, "src": "8881:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "8862:27:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1706, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1678, "src": "8892:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8862:36:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1708, "nodeType": "ExpressionStatement", "src": "8862:36:3" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1710, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1674, "src": "8922:5:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1711, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1676, "src": "8929:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1712, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1678, "src": "8938:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1709, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2024, "src": "8913:8:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1713, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8913:32:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1714, "nodeType": "EmitStatement", "src": "8908:37:3" } ] }, "documentation": { "id": 1672, "nodeType": "StructuredDocumentation", "src": "8201:414:3", "text": " @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n This is internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address." }, "id": 1716, "implemented": true, "kind": "function", "modifiers": [], "name": "_approve", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1679, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1674, "mutability": "mutable", "name": "owner", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1716, "src": "8638:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1673, "name": "address", "nodeType": "ElementaryTypeName", "src": "8638:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1676, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1716, "src": "8653:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1675, "name": "address", "nodeType": "ElementaryTypeName", "src": "8653:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1678, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1716, "src": "8670:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1677, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8670:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "8637:48:3" }, "returnParameters": { "id": 1680, "nodeType": "ParameterList", "parameters": [], "src": "8695:0:3" }, "scope": 1728, "src": "8620:332:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { "id": 1726, "nodeType": "Block", "src": "9325:38:3", "statements": [ { "expression": { "argumentTypes": null, "id": 1724, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1722, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1312, "src": "9335:9:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1723, "name": "decimals_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1719, "src": "9347:9:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "9335:21:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 1725, "nodeType": "ExpressionStatement", "src": "9335:21:3" } ] }, "documentation": { "id": 1717, "nodeType": "StructuredDocumentation", "src": "8958:312:3", "text": " @dev Sets {decimals} to a value other than the default one of 18.\n WARNING: This function should only be called from the constructor. Most\n applications that interact with token contracts will not expect\n {decimals} to ever change, and may work incorrectly if it does." }, "id": 1727, "implemented": true, "kind": "function", "modifiers": [], "name": "_setupDecimals", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1720, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1719, "mutability": "mutable", "name": "decimals_", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1727, "src": "9299:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1718, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "9299:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "9298:17:3" }, "returnParameters": { "id": 1721, "nodeType": "ParameterList", "parameters": [], "src": "9325:0:3" }, "scope": 1728, "src": "9275:88:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" } ], "scope": 1729, "src": "304:9061:3" } ], "src": "67:9299:3" }, "legacyAST": { "absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol", "exportedSymbols": { "WrappedAsset": [1728] }, "id": 1729, "license": "Apache 2", "nodeType": "SourceUnit", "nodes": [ { "id": 1186, "literals": ["solidity", "^", "0.6", ".0"], "nodeType": "PragmaDirective", "src": "67:23:3" }, { "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 1187, "nodeType": "ImportDirective", "scope": 1729, "sourceUnit": 2026, "src": "92:56:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", "file": "@openzeppelin/contracts/math/SafeMath.sol", "id": 1188, "nodeType": "ImportDirective", "scope": 1729, "sourceUnit": 1948, "src": "149:51:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/utils/Address.sol", "file": "@openzeppelin/contracts/utils/Address.sol", "id": 1189, "nodeType": "ImportDirective", "scope": 1729, "sourceUnit": 2443, "src": "201:51:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/GSN/Context.sol", "file": "@openzeppelin/contracts/GSN/Context.sol", "id": 1190, "nodeType": "ImportDirective", "scope": 1729, "sourceUnit": 1752, "src": "253:49:3", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 1191, "name": "IERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2025, "src": "329:6:3", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2025", "typeString": "contract IERC20" } }, "id": 1192, "nodeType": "InheritanceSpecifier", "src": "329:6:3" }, { "arguments": null, "baseName": { "contractScope": null, "id": 1193, "name": "Context", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1751, "src": "337:7:3", "typeDescriptions": { "typeIdentifier": "t_contract$_Context_$1751", "typeString": "contract Context" } }, "id": 1194, "nodeType": "InheritanceSpecifier", "src": "337:7:3" } ], "contractDependencies": [1751, 2025], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 1728, "linearizedBaseContracts": [1728, 1751, 2025], "name": "WrappedAsset", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, "functionSelector": "026b0539", "id": 1196, "mutability": "mutable", "name": "assetChain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1728, "src": "351:23:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1195, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "351:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "1ba46cfd", "id": 1198, "mutability": "mutable", "name": "assetAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1728, "src": "380:27:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 1197, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "380:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "158ef93e", "id": 1200, "mutability": "mutable", "name": "initialized", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1728, "src": "413:23:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1199, "name": "bool", "nodeType": "ElementaryTypeName", "src": "413:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "e78cea92", "id": 1202, "mutability": "mutable", "name": "bridge", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1728, "src": "442:21:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1201, "name": "address", "nodeType": "ElementaryTypeName", "src": "442:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "public" }, { "body": { "id": 1244, "nodeType": "Block", "src": "539:304:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1211, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "557:12:3", "subExpression": { "argumentTypes": null, "id": 1210, "name": "initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1200, "src": "558:11:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "616c726561647920696e697469616c697a6564", "id": 1212, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "571:21:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_6fad3ee6d344e662108f49bced409fae87c3af64246556bdd23a34dddc7e1adc", "typeString": "literal_string \"already initialized\"" }, "value": "already initialized" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_6fad3ee6d344e662108f49bced409fae87c3af64246556bdd23a34dddc7e1adc", "typeString": "literal_string \"already initialized\"" } ], "id": 1209, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "549:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1213, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "549:44:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1214, "nodeType": "ExpressionStatement", "src": "549:44:3" }, { "expression": { "argumentTypes": null, "id": 1217, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1215, "name": "assetChain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1196, "src": "631:10:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1216, "name": "_assetChain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1204, "src": "644:11:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "631:24:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 1218, "nodeType": "ExpressionStatement", "src": "631:24:3" }, { "expression": { "argumentTypes": null, "id": 1221, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1219, "name": "assetAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1198, "src": "665:12:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1220, "name": "_assetAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1206, "src": "680:13:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "src": "665:28:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 1222, "nodeType": "ExpressionStatement", "src": "665:28:3" }, { "expression": { "argumentTypes": null, "id": 1226, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1223, "name": "bridge", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1202, "src": "703:6:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1224, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "712:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1225, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "712:10:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "703:19:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 1227, "nodeType": "ExpressionStatement", "src": "703:19:3" }, { "expression": { "argumentTypes": null, "id": 1230, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1228, "name": "initialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1200, "src": "732:11:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 1229, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "746:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "732:18:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1231, "nodeType": "ExpressionStatement", "src": "732:18:3" }, { "expression": { "argumentTypes": null, "id": 1234, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1232, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1307, "src": "761:5:3", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "576f726d686f6c652057726170706564", "id": 1233, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "769:18:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_7fba8604b126ac0f54fd4def8e15fd26e2df8bb510be08aa6c2c8a7c813171ee", "typeString": "literal_string \"Wormhole Wrapped\"" }, "value": "Wormhole Wrapped" }, "src": "761:26:3", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "id": 1235, "nodeType": "ExpressionStatement", "src": "761:26:3" }, { "expression": { "argumentTypes": null, "id": 1238, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1236, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1309, "src": "797:7:3", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "575754", "id": 1237, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "807:5:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_0d2d5a94d86195c9aab1dc351352ba0539c6da454bc9b63f5012e79c7d2d46e2", "typeString": "literal_string \"WWT\"" }, "value": "WWT" }, "src": "797:15:3", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "id": 1239, "nodeType": "ExpressionStatement", "src": "797:15:3" }, { "expression": { "argumentTypes": null, "id": 1242, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1240, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1312, "src": "822:9:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "3138", "id": 1241, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "834:2:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_18_by_1", "typeString": "int_const 18" }, "value": "18" }, "src": "822:14:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 1243, "nodeType": "ExpressionStatement", "src": "822:14:3" } ] }, "documentation": null, "functionSelector": "02a09585", "id": 1245, "implemented": true, "kind": "function", "modifiers": [], "name": "initialize", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1207, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1204, "mutability": "mutable", "name": "_assetChain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1245, "src": "490:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1203, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "490:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1206, "mutability": "mutable", "name": "_assetAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1245, "src": "509:21:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 1205, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "509:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "489:42:3" }, "returnParameters": { "id": 1208, "nodeType": "ParameterList", "parameters": [], "src": "539:0:3" }, "scope": 1728, "src": "470:373:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 1265, "nodeType": "Block", "src": "905:120:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1256, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1253, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "923:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1254, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "923:10:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1255, "name": "bridge", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1202, "src": "937:6:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "923:20:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "6d696e742063616e206f6e6c792062652063616c6c65642062792074686520627269646765", "id": 1257, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "945:39:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e7702acf154d2f82cc8c1dd52813f94b0a08ea733aaf89d0cac26f6b55722c5a", "typeString": "literal_string \"mint can only be called by the bridge\"" }, "value": "mint can only be called by the bridge" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_e7702acf154d2f82cc8c1dd52813f94b0a08ea733aaf89d0cac26f6b55722c5a", "typeString": "literal_string \"mint can only be called by the bridge\"" } ], "id": 1252, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "915:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1258, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "915:70:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1259, "nodeType": "ExpressionStatement", "src": "915:70:3" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1261, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1247, "src": "1002:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1262, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1249, "src": "1011:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1260, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1624, "src": "996:5:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 1263, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "996:22:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1264, "nodeType": "ExpressionStatement", "src": "996:22:3" } ] }, "documentation": null, "functionSelector": "40c10f19", "id": 1266, "implemented": true, "kind": "function", "modifiers": [], "name": "mint", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1250, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1247, "mutability": "mutable", "name": "account", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1266, "src": "863:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1246, "name": "address", "nodeType": "ElementaryTypeName", "src": "863:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1249, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1266, "src": "880:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1248, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "880:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "862:33:3" }, "returnParameters": { "id": 1251, "nodeType": "ParameterList", "parameters": [], "src": "905:0:3" }, "scope": 1728, "src": "849:176:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { "id": 1286, "nodeType": "Block", "src": "1087:120:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1277, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1274, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1105:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1275, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1105:10:3", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 1276, "name": "bridge", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1202, "src": "1119:6:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1105:20:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "6275726e2063616e206f6e6c792062652063616c6c65642062792074686520627269646765", "id": 1278, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1127:39:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c31242aa9df4d29364b074986b1202ec8729deca727157a31be5e2473387893b", "typeString": "literal_string \"burn can only be called by the bridge\"" }, "value": "burn can only be called by the bridge" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_c31242aa9df4d29364b074986b1202ec8729deca727157a31be5e2473387893b", "typeString": "literal_string \"burn can only be called by the bridge\"" } ], "id": 1273, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "1097:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1279, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1097:70:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1280, "nodeType": "ExpressionStatement", "src": "1097:70:3" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1282, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1268, "src": "1184:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1283, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1270, "src": "1193:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1281, "name": "_burn", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1671, "src": "1178:5:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 1284, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1178:22:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1285, "nodeType": "ExpressionStatement", "src": "1178:22:3" } ] }, "documentation": null, "functionSelector": "9dc29fac", "id": 1287, "implemented": true, "kind": "function", "modifiers": [], "name": "burn", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1271, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1268, "mutability": "mutable", "name": "account", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1287, "src": "1045:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1267, "name": "address", "nodeType": "ElementaryTypeName", "src": "1045:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1270, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1287, "src": "1062:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1269, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1062:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1044:33:3" }, "returnParameters": { "id": 1272, "nodeType": "ParameterList", "parameters": [], "src": "1087:0:3" }, "scope": 1728, "src": "1031:176:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 1290, "libraryName": { "contractScope": null, "id": 1288, "name": "SafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1947, "src": "1363:8:3", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeMath_$1947", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "1357:27:3", "typeName": { "id": 1289, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1376:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "id": 1293, "libraryName": { "contractScope": null, "id": 1291, "name": "Address", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2442, "src": "1395:7:3", "typeDescriptions": { "typeIdentifier": "t_contract$_Address_$2442", "typeString": "library Address" } }, "nodeType": "UsingForDirective", "src": "1389:26:3", "typeName": { "id": 1292, "name": "address", "nodeType": "ElementaryTypeName", "src": "1407:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, { "constant": false, "id": 1297, "mutability": "mutable", "name": "_balances", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1728, "src": "1421:45:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "typeName": { "id": 1296, "keyType": { "id": 1294, "name": "address", "nodeType": "ElementaryTypeName", "src": "1429:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1421:27:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { "id": 1295, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1440:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, "value": null, "visibility": "private" }, { "constant": false, "id": 1303, "mutability": "mutable", "name": "_allowances", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1728, "src": "1473:67:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" }, "typeName": { "id": 1302, "keyType": { "id": 1298, "name": "address", "nodeType": "ElementaryTypeName", "src": "1481:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1473:47:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" }, "valueType": { "id": 1301, "keyType": { "id": 1299, "name": "address", "nodeType": "ElementaryTypeName", "src": "1500:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1492:27:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { "id": 1300, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1511:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } } }, "value": null, "visibility": "private" }, { "constant": false, "id": 1305, "mutability": "mutable", "name": "_totalSupply", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1728, "src": "1547:28:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1304, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1547:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "private" }, { "constant": false, "id": 1307, "mutability": "mutable", "name": "_name", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1728, "src": "1582:20:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 1306, "name": "string", "nodeType": "ElementaryTypeName", "src": "1582:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "private" }, { "constant": false, "id": 1309, "mutability": "mutable", "name": "_symbol", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1728, "src": "1608:22:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 1308, "name": "string", "nodeType": "ElementaryTypeName", "src": "1608:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "private" }, { "constant": false, "id": 1312, "mutability": "mutable", "name": "_decimals", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1728, "src": "1636:28:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1310, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1636:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": { "argumentTypes": null, "hexValue": "3138", "id": 1311, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1662:2:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_18_by_1", "typeString": "int_const 18" }, "value": "18" }, "visibility": "private" }, { "body": { "id": 1320, "nodeType": "Block", "src": "1782:29:3", "statements": [ { "expression": { "argumentTypes": null, "id": 1318, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1307, "src": "1799:5:3", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "functionReturnParameters": 1317, "id": 1319, "nodeType": "Return", "src": "1792:12:3" } ] }, "documentation": { "id": 1313, "nodeType": "StructuredDocumentation", "src": "1671:54:3", "text": " @dev Returns the name of the token." }, "functionSelector": "06fdde03", "id": 1321, "implemented": true, "kind": "function", "modifiers": [], "name": "name", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1314, "nodeType": "ParameterList", "parameters": [], "src": "1743:2:3" }, "returnParameters": { "id": 1317, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1316, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1321, "src": "1767:13:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 1315, "name": "string", "nodeType": "ElementaryTypeName", "src": "1767:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "src": "1766:15:3" }, "scope": 1728, "src": "1730:81:3", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { "id": 1329, "nodeType": "Block", "src": "1978:31:3", "statements": [ { "expression": { "argumentTypes": null, "id": 1327, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1309, "src": "1995:7:3", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "functionReturnParameters": 1326, "id": 1328, "nodeType": "Return", "src": "1988:14:3" } ] }, "documentation": { "id": 1322, "nodeType": "StructuredDocumentation", "src": "1817:102:3", "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name." }, "functionSelector": "95d89b41", "id": 1330, "implemented": true, "kind": "function", "modifiers": [], "name": "symbol", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1323, "nodeType": "ParameterList", "parameters": [], "src": "1939:2:3" }, "returnParameters": { "id": 1326, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1325, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1330, "src": "1963:13:3", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 1324, "name": "string", "nodeType": "ElementaryTypeName", "src": "1963:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "src": "1962:15:3" }, "scope": 1728, "src": "1924:85:3", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { "id": 1338, "nodeType": "Block", "src": "2680:33:3", "statements": [ { "expression": { "argumentTypes": null, "id": 1336, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1312, "src": "2697:9:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "functionReturnParameters": 1335, "id": 1337, "nodeType": "Return", "src": "2690:16:3" } ] }, "documentation": { "id": 1331, "nodeType": "StructuredDocumentation", "src": "2015:612:3", "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}." }, "functionSelector": "313ce567", "id": 1339, "implemented": true, "kind": "function", "modifiers": [], "name": "decimals", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1332, "nodeType": "ParameterList", "parameters": [], "src": "2649:2:3" }, "returnParameters": { "id": 1335, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1334, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1339, "src": "2673:5:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1333, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2673:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "2672:7:3" }, "scope": 1728, "src": "2632:81:3", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "baseFunctions": [1956], "body": { "id": 1348, "nodeType": "Block", "src": "2835:36:3", "statements": [ { "expression": { "argumentTypes": null, "id": 1346, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1305, "src": "2852:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1345, "id": 1347, "nodeType": "Return", "src": "2845:19:3" } ] }, "documentation": { "id": 1340, "nodeType": "StructuredDocumentation", "src": "2719:49:3", "text": " @dev See {IERC20-totalSupply}." }, "functionSelector": "18160ddd", "id": 1349, "implemented": true, "kind": "function", "modifiers": [], "name": "totalSupply", "nodeType": "FunctionDefinition", "overrides": { "id": 1342, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2808:8:3" }, "parameters": { "id": 1341, "nodeType": "ParameterList", "parameters": [], "src": "2793:2:3" }, "returnParameters": { "id": 1345, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1344, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1349, "src": "2826:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1343, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2826:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2825:9:3" }, "scope": 1728, "src": "2773:98:3", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "baseFunctions": [1964], "body": { "id": 1362, "nodeType": "Block", "src": "3004:42:3", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1358, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1297, "src": "3021:9:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1360, "indexExpression": { "argumentTypes": null, "id": 1359, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1352, "src": "3031:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3021:18:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1357, "id": 1361, "nodeType": "Return", "src": "3014:25:3" } ] }, "documentation": { "id": 1350, "nodeType": "StructuredDocumentation", "src": "2877:47:3", "text": " @dev See {IERC20-balanceOf}." }, "functionSelector": "70a08231", "id": 1363, "implemented": true, "kind": "function", "modifiers": [], "name": "balanceOf", "nodeType": "FunctionDefinition", "overrides": { "id": 1354, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2977:8:3" }, "parameters": { "id": 1353, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1352, "mutability": "mutable", "name": "account", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1363, "src": "2948:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1351, "name": "address", "nodeType": "ElementaryTypeName", "src": "2948:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "2947:17:3" }, "returnParameters": { "id": 1357, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1356, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1363, "src": "2995:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1355, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2995:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2994:9:3" }, "scope": 1728, "src": "2929:117:3", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "baseFunctions": [1974], "body": { "id": 1383, "nodeType": "Block", "src": "3333:80:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1375, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1739, "src": "3353:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, "id": 1376, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3353:12:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1377, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1366, "src": "3367:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1378, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1368, "src": "3378:6:3", "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": 1374, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1578, "src": "3343:9:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1379, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3343:42:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1380, "nodeType": "ExpressionStatement", "src": "3343:42:3" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 1381, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3402:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 1373, "id": 1382, "nodeType": "Return", "src": "3395:11:3" } ] }, "documentation": { "id": 1364, "nodeType": "StructuredDocumentation", "src": "3052:192:3", "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`." }, "functionSelector": "a9059cbb", "id": 1384, "implemented": true, "kind": "function", "modifiers": [], "name": "transfer", "nodeType": "FunctionDefinition", "overrides": { "id": 1370, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3309:8:3" }, "parameters": { "id": 1369, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1366, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1384, "src": "3267:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1365, "name": "address", "nodeType": "ElementaryTypeName", "src": "3267:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1368, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1384, "src": "3286:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1367, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3286:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3266:35:3" }, "returnParameters": { "id": 1373, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1372, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1384, "src": "3327:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1371, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3327:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "3326:6:3" }, "scope": 1728, "src": "3249:164:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "baseFunctions": [1984], "body": { "id": 1401, "nodeType": "Block", "src": "3561:51:3", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1395, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1303, "src": "3578:11:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 1397, "indexExpression": { "argumentTypes": null, "id": 1396, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1387, "src": "3590:5:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3578:18:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1399, "indexExpression": { "argumentTypes": null, "id": 1398, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1389, "src": "3597:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3578:27:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 1394, "id": 1400, "nodeType": "Return", "src": "3571:34:3" } ] }, "documentation": { "id": 1385, "nodeType": "StructuredDocumentation", "src": "3419:47:3", "text": " @dev See {IERC20-allowance}." }, "functionSelector": "dd62ed3e", "id": 1402, "implemented": true, "kind": "function", "modifiers": [], "name": "allowance", "nodeType": "FunctionDefinition", "overrides": { "id": 1391, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3534:8:3" }, "parameters": { "id": 1390, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1387, "mutability": "mutable", "name": "owner", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1402, "src": "3490:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1386, "name": "address", "nodeType": "ElementaryTypeName", "src": "3490:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1389, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1402, "src": "3505:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1388, "name": "address", "nodeType": "ElementaryTypeName", "src": "3505:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "3489:32:3" }, "returnParameters": { "id": 1394, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1393, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1402, "src": "3552:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1392, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3552:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3551:9:3" }, "scope": 1728, "src": "3471:141:3", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "baseFunctions": [1994], "body": { "id": 1422, "nodeType": "Block", "src": "3831:77:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1414, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1739, "src": "3850:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, "id": 1415, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3850:12:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1416, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1405, "src": "3864:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1417, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1407, "src": "3873:6:3", "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": 1413, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1716, "src": "3841:8:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1418, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3841:39:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1419, "nodeType": "ExpressionStatement", "src": "3841:39:3" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 1420, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3897:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 1412, "id": 1421, "nodeType": "Return", "src": "3890:11:3" } ] }, "documentation": { "id": 1403, "nodeType": "StructuredDocumentation", "src": "3618:127:3", "text": " @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address." }, "functionSelector": "095ea7b3", "id": 1423, "implemented": true, "kind": "function", "modifiers": [], "name": "approve", "nodeType": "FunctionDefinition", "overrides": { "id": 1409, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3807:8:3" }, "parameters": { "id": 1408, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1405, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1423, "src": "3767:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1404, "name": "address", "nodeType": "ElementaryTypeName", "src": "3767:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1407, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1423, "src": "3784:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1406, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3784:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3766:33:3" }, "returnParameters": { "id": 1412, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1411, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1423, "src": "3825:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1410, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3825:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "3824:6:3" }, "scope": 1728, "src": "3750:158:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "baseFunctions": [2006], "body": { "id": 1460, "nodeType": "Block", "src": "4472:205:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1437, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1426, "src": "4492:6:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1438, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1428, "src": "4500:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1439, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1430, "src": "4511:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1436, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1578, "src": "4482:9:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1440, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4482:36:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1441, "nodeType": "ExpressionStatement", "src": "4482:36:3" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1443, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1426, "src": "4537:6:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1444, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1739, "src": "4545:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, "id": 1445, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4545:12:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1453, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1430, "src": "4597:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365", "id": 1454, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4605:42:3", "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": 1446, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1303, "src": "4559:11:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 1448, "indexExpression": { "argumentTypes": null, "id": 1447, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1426, "src": "4571:6:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4559:19:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1451, "indexExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1449, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1739, "src": "4579:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, "id": 1450, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4579:12:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4559:33:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1452, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 1825, "src": "4559:37:3", "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": 1455, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4559:89:3", "tryCall": false, "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": 1442, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1716, "src": "4528:8:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1456, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4528:121:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1457, "nodeType": "ExpressionStatement", "src": "4528:121:3" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 1458, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4666:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 1435, "id": 1459, "nodeType": "Return", "src": "4659:11:3" } ] }, "documentation": { "id": 1424, "nodeType": "StructuredDocumentation", "src": "3914:449:3", "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20};\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`." }, "functionSelector": "23b872dd", "id": 1461, "implemented": true, "kind": "function", "modifiers": [], "name": "transferFrom", "nodeType": "FunctionDefinition", "overrides": { "id": 1432, "nodeType": "OverrideSpecifier", "overrides": [], "src": "4448:8:3" }, "parameters": { "id": 1431, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1426, "mutability": "mutable", "name": "sender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1461, "src": "4390:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1425, "name": "address", "nodeType": "ElementaryTypeName", "src": "4390:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1428, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1461, "src": "4406:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1427, "name": "address", "nodeType": "ElementaryTypeName", "src": "4406:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1430, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1461, "src": "4425:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1429, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4425:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4389:51:3" }, "returnParameters": { "id": 1435, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1434, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1461, "src": "4466:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1433, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4466:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "4465:6:3" }, "scope": 1728, "src": "4368:309:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 1488, "nodeType": "Block", "src": "5158:121:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1472, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1739, "src": "5177:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, "id": 1473, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5177:12:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1474, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1464, "src": "5191:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1482, "name": "addedValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1466, "src": "5239:10:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1475, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1303, "src": "5200:11:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 1478, "indexExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1476, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1739, "src": "5212:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, "id": 1477, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5212:12:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5200:25:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1480, "indexExpression": { "argumentTypes": null, "id": 1479, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1464, "src": "5226:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5200:34:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1481, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 1780, "src": "5200:38:3", "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": 1483, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5200:50:3", "tryCall": false, "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": 1471, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1716, "src": "5168:8:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1484, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5168:83:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1485, "nodeType": "ExpressionStatement", "src": "5168:83:3" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 1486, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5268:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 1470, "id": 1487, "nodeType": "Return", "src": "5261:11:3" } ] }, "documentation": { "id": 1462, "nodeType": "StructuredDocumentation", "src": "4683:384:3", "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address." }, "functionSelector": "39509351", "id": 1489, "implemented": true, "kind": "function", "modifiers": [], "name": "increaseAllowance", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1467, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1464, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1489, "src": "5099:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1463, "name": "address", "nodeType": "ElementaryTypeName", "src": "5099:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1466, "mutability": "mutable", "name": "addedValue", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1489, "src": "5116:18:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1465, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5116:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "5098:37:3" }, "returnParameters": { "id": 1470, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1469, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1489, "src": "5152:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1468, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5152:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "5151:6:3" }, "scope": 1728, "src": "5072:207:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 1517, "nodeType": "Block", "src": "5857:167:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1500, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1739, "src": "5876:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, "id": 1501, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5876:12:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1502, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1492, "src": "5890:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1510, "name": "subtractedValue", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1494, "src": "5938:15:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", "id": 1511, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5955:39:3", "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": 1503, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1303, "src": "5899:11:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 1506, "indexExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 1504, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1739, "src": "5911:10:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, "id": 1505, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5911:12:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5899:25:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1508, "indexExpression": { "argumentTypes": null, "id": 1507, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1492, "src": "5925:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5899:34:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1509, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 1825, "src": "5899:38:3", "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": 1512, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5899:96:3", "tryCall": false, "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": 1499, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1716, "src": "5867:8:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1513, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5867:129:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1514, "nodeType": "ExpressionStatement", "src": "5867:129:3" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 1515, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "6013:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 1498, "id": 1516, "nodeType": "Return", "src": "6006:11:3" } ] }, "documentation": { "id": 1490, "nodeType": "StructuredDocumentation", "src": "5285:476:3", "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`." }, "functionSelector": "a457c2d7", "id": 1518, "implemented": true, "kind": "function", "modifiers": [], "name": "decreaseAllowance", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1495, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1492, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1518, "src": "5793:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1491, "name": "address", "nodeType": "ElementaryTypeName", "src": "5793:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1494, "mutability": "mutable", "name": "subtractedValue", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1518, "src": "5810:23:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1493, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5810:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "5792:42:3" }, "returnParameters": { "id": 1498, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1497, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1518, "src": "5851:4:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 1496, "name": "bool", "nodeType": "ElementaryTypeName", "src": "5851:4:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "5850:6:3" }, "scope": 1728, "src": "5766:258:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 1577, "nodeType": "Block", "src": "6577:385:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1534, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1529, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1521, "src": "6595:6:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1532, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6613:1:3", "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": 1531, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6605:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1530, "name": "address", "nodeType": "ElementaryTypeName", "src": "6605:7:3", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1533, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6605:10:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "6595:20:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", "id": 1535, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6617:39:3", "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": 1528, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6587:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1536, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6587:70:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1537, "nodeType": "ExpressionStatement", "src": "6587:70:3" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1539, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1523, "src": "6675:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1542, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6696:1:3", "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": 1541, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6688:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1540, "name": "address", "nodeType": "ElementaryTypeName", "src": "6688:7:3", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1543, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6688:10:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "6675:23:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", "id": 1545, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6700:37:3", "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": 1538, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "6667:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1546, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6667:71:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1547, "nodeType": "ExpressionStatement", "src": "6667:71:3" }, { "expression": { "argumentTypes": null, "id": 1558, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1548, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1297, "src": "6749:9:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1550, "indexExpression": { "argumentTypes": null, "id": 1549, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1521, "src": "6759:6:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6749:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1555, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1525, "src": "6791:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", "id": 1556, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6799:40:3", "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": 1551, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1297, "src": "6769:9:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1553, "indexExpression": { "argumentTypes": null, "id": 1552, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1521, "src": "6779:6:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6769:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1554, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 1825, "src": "6769:21:3", "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": 1557, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6769:71:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "6749:91:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1559, "nodeType": "ExpressionStatement", "src": "6749:91:3" }, { "expression": { "argumentTypes": null, "id": 1569, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1560, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1297, "src": "6850:9:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1562, "indexExpression": { "argumentTypes": null, "id": 1561, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1523, "src": "6860:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "6850:20:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1567, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1525, "src": "6898:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1563, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1297, "src": "6873:9:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1565, "indexExpression": { "argumentTypes": null, "id": 1564, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1523, "src": "6883:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6873:20:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1566, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 1780, "src": "6873:24:3", "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": 1568, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6873:32:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "6850:55:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1570, "nodeType": "ExpressionStatement", "src": "6850:55:3" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1572, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1521, "src": "6929:6:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1573, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1523, "src": "6937:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1574, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1525, "src": "6948:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1571, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2015, "src": "6920:8:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1575, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6920:35:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1576, "nodeType": "EmitStatement", "src": "6915:40:3" } ] }, "documentation": { "id": 1519, "nodeType": "StructuredDocumentation", "src": "6030:463:3", "text": " @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`." }, "id": 1578, "implemented": true, "kind": "function", "modifiers": [], "name": "_transfer", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1526, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1521, "mutability": "mutable", "name": "sender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1578, "src": "6517:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1520, "name": "address", "nodeType": "ElementaryTypeName", "src": "6517:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1523, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1578, "src": "6533:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1522, "name": "address", "nodeType": "ElementaryTypeName", "src": "6533:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1525, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1578, "src": "6552:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1524, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6552:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "6516:51:3" }, "returnParameters": { "id": 1527, "nodeType": "ParameterList", "parameters": [], "src": "6577:0:3" }, "scope": 1728, "src": "6498:464:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { "id": 1623, "nodeType": "Block", "src": "7289:245:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1592, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1587, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1581, "src": "7307:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1590, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7326:1:3", "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": 1589, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7318:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1588, "name": "address", "nodeType": "ElementaryTypeName", "src": "7318:7:3", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1591, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7318:10:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "7307:21:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", "id": 1593, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7330:33:3", "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": 1586, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "7299:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1594, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7299:65:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1595, "nodeType": "ExpressionStatement", "src": "7299:65:3" }, { "expression": { "argumentTypes": null, "id": 1601, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1596, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1305, "src": "7375:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1599, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1583, "src": "7407:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 1597, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1305, "src": "7390:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1598, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 1780, "src": "7390:16:3", "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": 1600, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7390:24:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "7375:39:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1602, "nodeType": "ExpressionStatement", "src": "7375:39:3" }, { "expression": { "argumentTypes": null, "id": 1612, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1603, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1297, "src": "7424:9:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1605, "indexExpression": { "argumentTypes": null, "id": 1604, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1581, "src": "7434:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7424:18:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1610, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1583, "src": "7468:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1606, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1297, "src": "7445:9:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1608, "indexExpression": { "argumentTypes": null, "id": 1607, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1581, "src": "7455:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7445:18:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 1780, "src": "7445:22:3", "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": 1611, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7445:30:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "7424:51:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1613, "nodeType": "ExpressionStatement", "src": "7424:51:3" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1617, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7507:1:3", "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": 1616, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7499:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1615, "name": "address", "nodeType": "ElementaryTypeName", "src": "7499:7:3", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1618, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7499:10:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1619, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1581, "src": "7511:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1620, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1583, "src": "7520:6:3", "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": 1614, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2015, "src": "7490:8:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1621, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7490:37:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1622, "nodeType": "EmitStatement", "src": "7485:42:3" } ] }, "documentation": { "id": 1579, "nodeType": "StructuredDocumentation", "src": "6968:259:3", "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements\n - `to` cannot be the zero address." }, "id": 1624, "implemented": true, "kind": "function", "modifiers": [], "name": "_mint", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1584, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1581, "mutability": "mutable", "name": "account", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1624, "src": "7247:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1580, "name": "address", "nodeType": "ElementaryTypeName", "src": "7247:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1583, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1624, "src": "7264:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1582, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7264:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "7246:33:3" }, "returnParameters": { "id": 1585, "nodeType": "ParameterList", "parameters": [], "src": "7289:0:3" }, "scope": 1728, "src": "7232:302:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { "id": 1670, "nodeType": "Block", "src": "7910:285:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1638, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1633, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1627, "src": "7928:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1636, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7947:1:3", "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": 1635, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7939:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1634, "name": "address", "nodeType": "ElementaryTypeName", "src": "7939:7:3", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1637, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7939:10:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "7928:21:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", "id": 1639, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7951:35:3", "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": 1632, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "7920:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1640, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7920:67:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1641, "nodeType": "ExpressionStatement", "src": "7920:67:3" }, { "expression": { "argumentTypes": null, "id": 1652, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1642, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1297, "src": "7998:9:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1644, "indexExpression": { "argumentTypes": null, "id": 1643, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1627, "src": "8008:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7998:18:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1649, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1629, "src": "8042:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", "id": 1650, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8050:36:3", "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": 1645, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1297, "src": "8019:9:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1647, "indexExpression": { "argumentTypes": null, "id": 1646, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1627, "src": "8029:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8019:18:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1648, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 1825, "src": "8019:22:3", "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": 1651, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8019:68:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "7998:89:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1653, "nodeType": "ExpressionStatement", "src": "7998:89:3" }, { "expression": { "argumentTypes": null, "id": 1659, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1654, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1305, "src": "8097:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1657, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1629, "src": "8129:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 1655, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1305, "src": "8112:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1656, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 1797, "src": "8112:16:3", "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": 1658, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8112:24:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8097:39:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1660, "nodeType": "ExpressionStatement", "src": "8097:39:3" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1662, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1627, "src": "8160:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1665, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8177:1:3", "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": 1664, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8169:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1663, "name": "address", "nodeType": "ElementaryTypeName", "src": "8169:7:3", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1666, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8169:10:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1667, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1629, "src": "8181:6:3", "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": 1661, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2015, "src": "8151:8:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1668, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8151:37:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1669, "nodeType": "EmitStatement", "src": "8146:42:3" } ] }, "documentation": { "id": 1625, "nodeType": "StructuredDocumentation", "src": "7540:308:3", "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens." }, "id": 1671, "implemented": true, "kind": "function", "modifiers": [], "name": "_burn", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1630, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1627, "mutability": "mutable", "name": "account", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1671, "src": "7868:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1626, "name": "address", "nodeType": "ElementaryTypeName", "src": "7868:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1629, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1671, "src": "7885:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1628, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7885:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "7867:33:3" }, "returnParameters": { "id": 1631, "nodeType": "ParameterList", "parameters": [], "src": "7910:0:3" }, "scope": 1728, "src": "7853:342:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { "id": 1715, "nodeType": "Block", "src": "8695:257:3", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1687, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1682, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1674, "src": "8713:5:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1685, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8730:1:3", "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": 1684, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8722:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1683, "name": "address", "nodeType": "ElementaryTypeName", "src": "8722:7:3", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1686, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8722:10:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "8713:19:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", "id": 1688, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8734:38:3", "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": 1681, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8705:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1689, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8705:68:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1690, "nodeType": "ExpressionStatement", "src": "8705:68:3" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 1697, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1692, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1676, "src": "8791:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 1695, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8810:1:3", "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": 1694, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8802:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1693, "name": "address", "nodeType": "ElementaryTypeName", "src": "8802:7:3", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1696, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8802:10:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "8791:21:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", "id": 1698, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8814:36:3", "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": 1691, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8783:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1699, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8783:68:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1700, "nodeType": "ExpressionStatement", "src": "8783:68:3" }, { "expression": { "argumentTypes": null, "id": 1707, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1701, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1303, "src": "8862:11:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, "id": 1704, "indexExpression": { "argumentTypes": null, "id": 1702, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1674, "src": "8874:5:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8862:18:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 1705, "indexExpression": { "argumentTypes": null, "id": 1703, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1676, "src": "8881:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "8862:27:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1706, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1678, "src": "8892:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8862:36:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1708, "nodeType": "ExpressionStatement", "src": "8862:36:3" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1710, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1674, "src": "8922:5:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1711, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1676, "src": "8929:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 1712, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1678, "src": "8938:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1709, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2024, "src": "8913:8:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 1713, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8913:32:3", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1714, "nodeType": "EmitStatement", "src": "8908:37:3" } ] }, "documentation": { "id": 1672, "nodeType": "StructuredDocumentation", "src": "8201:414:3", "text": " @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n This is internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address." }, "id": 1716, "implemented": true, "kind": "function", "modifiers": [], "name": "_approve", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1679, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1674, "mutability": "mutable", "name": "owner", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1716, "src": "8638:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1673, "name": "address", "nodeType": "ElementaryTypeName", "src": "8638:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1676, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1716, "src": "8653:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1675, "name": "address", "nodeType": "ElementaryTypeName", "src": "8653:7:3", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1678, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1716, "src": "8670:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1677, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8670:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "8637:48:3" }, "returnParameters": { "id": 1680, "nodeType": "ParameterList", "parameters": [], "src": "8695:0:3" }, "scope": 1728, "src": "8620:332:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { "id": 1726, "nodeType": "Block", "src": "9325:38:3", "statements": [ { "expression": { "argumentTypes": null, "id": 1724, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1722, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1312, "src": "9335:9:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 1723, "name": "decimals_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1719, "src": "9347:9:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "9335:21:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 1725, "nodeType": "ExpressionStatement", "src": "9335:21:3" } ] }, "documentation": { "id": 1717, "nodeType": "StructuredDocumentation", "src": "8958:312:3", "text": " @dev Sets {decimals} to a value other than the default one of 18.\n WARNING: This function should only be called from the constructor. Most\n applications that interact with token contracts will not expect\n {decimals} to ever change, and may work incorrectly if it does." }, "id": 1727, "implemented": true, "kind": "function", "modifiers": [], "name": "_setupDecimals", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1720, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1719, "mutability": "mutable", "name": "decimals_", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1727, "src": "9299:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1718, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "9299:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "9298:17:3" }, "returnParameters": { "id": 1721, "nodeType": "ParameterList", "parameters": [], "src": "9325:0:3" }, "scope": 1728, "src": "9275:88:3", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" } ], "scope": 1729, "src": "304:9061:3" } ], "src": "67:9299:3" }, "compiler": { "name": "solc", "version": "0.6.12+commit.27d51765.Emscripten.clang" }, "networks": {}, "schemaVersion": "3.2.3", "updatedAt": "2020-08-06T18:00:08.730Z", "devdoc": { "kind": "dev", "methods": { "allowance(address,address)": { "details": "See {IERC20-allowance}." }, "approve(address,uint256)": { "details": "See {IERC20-approve}. Requirements: - `spender` cannot be the zero address." }, "balanceOf(address)": { "details": "See {IERC20-balanceOf}." }, "decimals()": { "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." }, "decreaseAllowance(address,uint256)": { "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`." }, "increaseAllowance(address,uint256)": { "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address." }, "name()": { "details": "Returns the name of the token." }, "symbol()": { "details": "Returns the symbol of the token, usually a shorter version of the name." }, "totalSupply()": { "details": "See {IERC20-totalSupply}." }, "transfer(address,uint256)": { "details": "See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`." }, "transferFrom(address,address,uint256)": { "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`." } }, "version": 1 }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }