1 line
159 KiB
JSON
1 line
159 KiB
JSON
{"abi":[{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"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\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"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 default value returned by this function, unless it's overridden. 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}.\"},\"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\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":\"ERC20Upgradeable\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xfcd09c2aa8cc3f93e12545454359f901965db312bc03833daf84de0c03e05022\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07701188648d2ab83dab1037808298585264559bddf243bd8929037adcb984b0\",\"dweb:/ipfs/QmavmG5REdHCAWsZ8Cag26BCxAq27DRKGxr3uBg5ZYxQ51\"]},\"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"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 default value returned by this function, unless it's overridden. 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}."},"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":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/=node_modules/@ensdomains/","@openzeppelin/=node_modules/@openzeppelin/","forge-std/=lib/forge-std/src/","hardhat/=node_modules/hardhat/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol":"ERC20Upgradeable"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"keccak256":"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05","urls":["bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08","dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0xfcd09c2aa8cc3f93e12545454359f901965db312bc03833daf84de0c03e05022","urls":["bzz-raw://07701188648d2ab83dab1037808298585264559bddf243bd8929037adcb984b0","dweb:/ipfs/QmavmG5REdHCAWsZ8Cag26BCxAq27DRKGxr3uBg5ZYxQ51"],"license":"MIT"},"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e","urls":["bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23","dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","id":11452,"exportedSymbols":{"ContextUpgradeable":[11497],"ERC20Upgradeable":[11451],"IERC20":[12648],"IERC20Errors":[12097],"IERC20Metadata":[12674],"Initializable":[10652]},"nodeType":"SourceUnit","src":"105:12023:27","nodes":[{"id":10836,"nodeType":"PragmaDirective","src":"105:24:27","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":10838,"nodeType":"ImportDirective","src":"131:70:27","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":11452,"sourceUnit":12649,"symbolAliases":[{"foreign":{"id":10837,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"139:6:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":10840,"nodeType":"ImportDirective","src":"202:97:27","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","nameLocation":"-1:-1:-1","scope":11452,"sourceUnit":12675,"symbolAliases":[{"foreign":{"id":10839,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12674,"src":"210:14:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":10842,"nodeType":"ImportDirective","src":"300:70:27","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../../utils/ContextUpgradeable.sol","nameLocation":"-1:-1:-1","scope":11452,"sourceUnit":11498,"symbolAliases":[{"foreign":{"id":10841,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11497,"src":"308:18:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":10844,"nodeType":"ImportDirective","src":"371:83:27","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","nameLocation":"-1:-1:-1","scope":11452,"sourceUnit":12193,"symbolAliases":[{"foreign":{"id":10843,"name":"IERC20Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12097,"src":"379:12:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":10846,"nodeType":"ImportDirective","src":"455:66:27","nodes":[],"absolutePath":"node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":11452,"sourceUnit":10653,"symbolAliases":[{"foreign":{"id":10845,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10652,"src":"463:13:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":11451,"nodeType":"ContractDefinition","src":"1281:10846:27","nodes":[{"id":10875,"nodeType":"StructDefinition","src":"1465:246:27","nodes":[],"canonicalName":"ERC20Upgradeable.ERC20Storage","documentation":{"id":10858,"nodeType":"StructuredDocumentation","src":"1397:63:27","text":"@custom:storage-location erc7201:openzeppelin.storage.ERC20"},"members":[{"constant":false,"id":10862,"mutability":"mutable","name":"_balances","nameLocation":"1531:9:27","nodeType":"VariableDeclaration","scope":10875,"src":"1495:45:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":10861,"keyName":"account","keyNameLocation":"1511:7:27","keyType":{"id":10859,"name":"address","nodeType":"ElementaryTypeName","src":"1503:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1495:35:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10860,"name":"uint256","nodeType":"ElementaryTypeName","src":"1522:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":10868,"mutability":"mutable","name":"_allowances","nameLocation":"1615:11:27","nodeType":"VariableDeclaration","scope":10875,"src":"1551:75:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":10867,"keyName":"account","keyNameLocation":"1567:7:27","keyType":{"id":10863,"name":"address","nodeType":"ElementaryTypeName","src":"1559:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1551:63:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10866,"keyName":"spender","keyNameLocation":"1594:7:27","keyType":{"id":10864,"name":"address","nodeType":"ElementaryTypeName","src":"1586:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1578:35:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":10865,"name":"uint256","nodeType":"ElementaryTypeName","src":"1605:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":10870,"mutability":"mutable","name":"_totalSupply","nameLocation":"1645:12:27","nodeType":"VariableDeclaration","scope":10875,"src":"1637:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10869,"name":"uint256","nodeType":"ElementaryTypeName","src":"1637:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10872,"mutability":"mutable","name":"_name","nameLocation":"1675:5:27","nodeType":"VariableDeclaration","scope":10875,"src":"1668:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":10871,"name":"string","nodeType":"ElementaryTypeName","src":"1668:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":10874,"mutability":"mutable","name":"_symbol","nameLocation":"1697:7:27","nodeType":"VariableDeclaration","scope":10875,"src":"1690:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":10873,"name":"string","nodeType":"ElementaryTypeName","src":"1690:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"ERC20Storage","nameLocation":"1472:12:27","scope":11451,"visibility":"public"},{"id":10878,"nodeType":"VariableDeclaration","src":"1826:114:27","nodes":[],"constant":true,"mutability":"constant","name":"ERC20StorageLocation","nameLocation":"1851:20:27","scope":11451,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10876,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1826:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307835326336333234376531663437646231396435636530343630303330633439376630363763613463656266373162613938656561646162653230626163653030","id":10877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1874:66:27","typeDescriptions":{"typeIdentifier":"t_rational_37439836327923360225337895871394760624280537466773280374265222508165906222592_by_1","typeString":"int_const 3743...(69 digits omitted)...2592"},"value":"0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00"},"visibility":"private"},{"id":10886,"nodeType":"FunctionDefinition","src":"1947:153:27","nodes":[],"body":{"id":10885,"nodeType":"Block","src":"2021:79:27","nodes":[],"statements":[{"AST":{"nativeSrc":"2040:54:27","nodeType":"YulBlock","src":"2040:54:27","statements":[{"nativeSrc":"2054:30:27","nodeType":"YulAssignment","src":"2054:30:27","value":{"name":"ERC20StorageLocation","nativeSrc":"2064:20:27","nodeType":"YulIdentifier","src":"2064:20:27"},"variableNames":[{"name":"$.slot","nativeSrc":"2054:6:27","nodeType":"YulIdentifier","src":"2054:6:27"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":10882,"isOffset":false,"isSlot":true,"src":"2054:6:27","suffix":"slot","valueSize":1},{"declaration":10878,"isOffset":false,"isSlot":false,"src":"2064:20:27","valueSize":1}],"id":10884,"nodeType":"InlineAssembly","src":"2031:63:27"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getERC20Storage","nameLocation":"1956:16:27","parameters":{"id":10879,"nodeType":"ParameterList","parameters":[],"src":"1972:2:27"},"returnParameters":{"id":10883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10882,"mutability":"mutable","name":"$","nameLocation":"2018:1:27","nodeType":"VariableDeclaration","scope":10886,"src":"1997:22:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":10881,"nodeType":"UserDefinedTypeName","pathNode":{"id":10880,"name":"ERC20Storage","nameLocations":["1997:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":10875,"src":"1997:12:27"},"referencedDeclaration":10875,"src":"1997:12:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"src":"1996:24:27"},"scope":11451,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":10902,"nodeType":"FunctionDefinition","src":"2263:147:27","nodes":[],"body":{"id":10901,"nodeType":"Block","src":"2355:55:27","nodes":[],"statements":[{"expression":{"arguments":[{"id":10897,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10889,"src":"2388:5:27","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":10898,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10891,"src":"2395:7:27","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":10896,"name":"__ERC20_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10930,"src":"2365:22:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":10899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2365:38:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10900,"nodeType":"ExpressionStatement","src":"2365:38:27"}]},"documentation":{"id":10887,"nodeType":"StructuredDocumentation","src":"2106:152:27","text":" @dev Sets the values for {name} and {symbol}.\n Both values are immutable: they can only be set once during construction."},"implemented":true,"kind":"function","modifiers":[{"id":10894,"kind":"modifierInvocation","modifierName":{"id":10893,"name":"onlyInitializing","nameLocations":["2338:16:27"],"nodeType":"IdentifierPath","referencedDeclaration":10547,"src":"2338:16:27"},"nodeType":"ModifierInvocation","src":"2338:16:27"}],"name":"__ERC20_init","nameLocation":"2272:12:27","parameters":{"id":10892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10889,"mutability":"mutable","name":"name_","nameLocation":"2299:5:27","nodeType":"VariableDeclaration","scope":10902,"src":"2285:19:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10888,"name":"string","nodeType":"ElementaryTypeName","src":"2285:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":10891,"mutability":"mutable","name":"symbol_","nameLocation":"2320:7:27","nodeType":"VariableDeclaration","scope":10902,"src":"2306:21:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10890,"name":"string","nodeType":"ElementaryTypeName","src":"2306:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2284:44:27"},"returnParameters":{"id":10895,"nodeType":"ParameterList","parameters":[],"src":"2355:0:27"},"scope":11451,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":10930,"nodeType":"FunctionDefinition","src":"2416:216:27","nodes":[],"body":{"id":10929,"nodeType":"Block","src":"2518:114:27","nodes":[],"statements":[{"assignments":[10913],"declarations":[{"constant":false,"id":10913,"mutability":"mutable","name":"$","nameLocation":"2549:1:27","nodeType":"VariableDeclaration","scope":10929,"src":"2528:22:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":10912,"nodeType":"UserDefinedTypeName","pathNode":{"id":10911,"name":"ERC20Storage","nameLocations":["2528:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":10875,"src":"2528:12:27"},"referencedDeclaration":10875,"src":"2528:12:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":10916,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10914,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"2553:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$10875_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":10915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2553:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2528:43:27"},{"expression":{"id":10921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10917,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10913,"src":"2581:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":10919,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2583:5:27","memberName":"_name","nodeType":"MemberAccess","referencedDeclaration":10872,"src":"2581:7:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10920,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10904,"src":"2591:5:27","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2581:15:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":10922,"nodeType":"ExpressionStatement","src":"2581:15:27"},{"expression":{"id":10927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":10923,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10913,"src":"2606:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":10925,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2608:7:27","memberName":"_symbol","nodeType":"MemberAccess","referencedDeclaration":10874,"src":"2606:9:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10926,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10906,"src":"2618:7:27","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2606:19:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":10928,"nodeType":"ExpressionStatement","src":"2606:19:27"}]},"implemented":true,"kind":"function","modifiers":[{"id":10909,"kind":"modifierInvocation","modifierName":{"id":10908,"name":"onlyInitializing","nameLocations":["2501:16:27"],"nodeType":"IdentifierPath","referencedDeclaration":10547,"src":"2501:16:27"},"nodeType":"ModifierInvocation","src":"2501:16:27"}],"name":"__ERC20_init_unchained","nameLocation":"2425:22:27","parameters":{"id":10907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10904,"mutability":"mutable","name":"name_","nameLocation":"2462:5:27","nodeType":"VariableDeclaration","scope":10930,"src":"2448:19:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10903,"name":"string","nodeType":"ElementaryTypeName","src":"2448:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":10906,"mutability":"mutable","name":"symbol_","nameLocation":"2483:7:27","nodeType":"VariableDeclaration","scope":10930,"src":"2469:21:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10905,"name":"string","nodeType":"ElementaryTypeName","src":"2469:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2447:44:27"},"returnParameters":{"id":10910,"nodeType":"ParameterList","parameters":[],"src":"2518:0:27"},"scope":11451,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":10946,"nodeType":"FunctionDefinition","src":"2697:144:27","nodes":[],"body":{"id":10945,"nodeType":"Block","src":"2757:84:27","nodes":[],"statements":[{"assignments":[10938],"declarations":[{"constant":false,"id":10938,"mutability":"mutable","name":"$","nameLocation":"2788:1:27","nodeType":"VariableDeclaration","scope":10945,"src":"2767:22:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":10937,"nodeType":"UserDefinedTypeName","pathNode":{"id":10936,"name":"ERC20Storage","nameLocations":["2767:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":10875,"src":"2767:12:27"},"referencedDeclaration":10875,"src":"2767:12:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":10941,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10939,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"2792:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$10875_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":10940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2792:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2767:43:27"},{"expression":{"expression":{"id":10942,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10938,"src":"2827:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":10943,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2829:5:27","memberName":"_name","nodeType":"MemberAccess","referencedDeclaration":10872,"src":"2827:7:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":10935,"id":10944,"nodeType":"Return","src":"2820:14:27"}]},"baseFunctions":[12661],"documentation":{"id":10931,"nodeType":"StructuredDocumentation","src":"2638:54:27","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2706:4:27","parameters":{"id":10932,"nodeType":"ParameterList","parameters":[],"src":"2710:2:27"},"returnParameters":{"id":10935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10934,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10946,"src":"2742:13:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10933,"name":"string","nodeType":"ElementaryTypeName","src":"2742:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2741:15:27"},"scope":11451,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":10962,"nodeType":"FunctionDefinition","src":"2954:148:27","nodes":[],"body":{"id":10961,"nodeType":"Block","src":"3016:86:27","nodes":[],"statements":[{"assignments":[10954],"declarations":[{"constant":false,"id":10954,"mutability":"mutable","name":"$","nameLocation":"3047:1:27","nodeType":"VariableDeclaration","scope":10961,"src":"3026:22:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":10953,"nodeType":"UserDefinedTypeName","pathNode":{"id":10952,"name":"ERC20Storage","nameLocations":["3026:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":10875,"src":"3026:12:27"},"referencedDeclaration":10875,"src":"3026:12:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":10957,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10955,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"3051:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$10875_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":10956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3051:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3026:43:27"},{"expression":{"expression":{"id":10958,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10954,"src":"3086:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":10959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3088:7:27","memberName":"_symbol","nodeType":"MemberAccess","referencedDeclaration":10874,"src":"3086:9:27","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":10951,"id":10960,"nodeType":"Return","src":"3079:16:27"}]},"baseFunctions":[12667],"documentation":{"id":10947,"nodeType":"StructuredDocumentation","src":"2847:102:27","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2963:6:27","parameters":{"id":10948,"nodeType":"ParameterList","parameters":[],"src":"2969:2:27"},"returnParameters":{"id":10951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10950,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10962,"src":"3001:13:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10949,"name":"string","nodeType":"ElementaryTypeName","src":"3001:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3000:15:27"},"scope":11451,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":10971,"nodeType":"FunctionDefinition","src":"3735:82:27","nodes":[],"body":{"id":10970,"nodeType":"Block","src":"3791:26:27","nodes":[],"statements":[{"expression":{"hexValue":"3138","id":10968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3808:2:27","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":10967,"id":10969,"nodeType":"Return","src":"3801:9:27"}]},"baseFunctions":[12673],"documentation":{"id":10963,"nodeType":"StructuredDocumentation","src":"3108:622:27","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 default value returned by this function, unless\n it's overridden.\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","implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"3744:8:27","parameters":{"id":10964,"nodeType":"ParameterList","parameters":[],"src":"3752:2:27"},"returnParameters":{"id":10967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10966,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10971,"src":"3784:5:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":10965,"name":"uint8","nodeType":"ElementaryTypeName","src":"3784:5:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3783:7:27"},"scope":11451,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":10987,"nodeType":"FunctionDefinition","src":"3850:152:27","nodes":[],"body":{"id":10986,"nodeType":"Block","src":"3911:91:27","nodes":[],"statements":[{"assignments":[10979],"declarations":[{"constant":false,"id":10979,"mutability":"mutable","name":"$","nameLocation":"3942:1:27","nodeType":"VariableDeclaration","scope":10986,"src":"3921:22:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":10978,"nodeType":"UserDefinedTypeName","pathNode":{"id":10977,"name":"ERC20Storage","nameLocations":["3921:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":10875,"src":"3921:12:27"},"referencedDeclaration":10875,"src":"3921:12:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":10982,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10980,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"3946:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$10875_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":10981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3946:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3921:43:27"},{"expression":{"expression":{"id":10983,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10979,"src":"3981:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":10984,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3983:12:27","memberName":"_totalSupply","nodeType":"MemberAccess","referencedDeclaration":10870,"src":"3981:14:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10976,"id":10985,"nodeType":"Return","src":"3974:21:27"}]},"baseFunctions":[12597],"documentation":{"id":10972,"nodeType":"StructuredDocumentation","src":"3823:22:27","text":"@inheritdoc IERC20"},"functionSelector":"18160ddd","implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"3859:11:27","parameters":{"id":10973,"nodeType":"ParameterList","parameters":[],"src":"3870:2:27"},"returnParameters":{"id":10976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10975,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10987,"src":"3902:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10974,"name":"uint256","nodeType":"ElementaryTypeName","src":"3902:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3901:9:27"},"scope":11451,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":11007,"nodeType":"FunctionDefinition","src":"4035:171:27","nodes":[],"body":{"id":11006,"nodeType":"Block","src":"4109:97:27","nodes":[],"statements":[{"assignments":[10997],"declarations":[{"constant":false,"id":10997,"mutability":"mutable","name":"$","nameLocation":"4140:1:27","nodeType":"VariableDeclaration","scope":11006,"src":"4119:22:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":10996,"nodeType":"UserDefinedTypeName","pathNode":{"id":10995,"name":"ERC20Storage","nameLocations":["4119:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":10875,"src":"4119:12:27"},"referencedDeclaration":10875,"src":"4119:12:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":11000,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":10998,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"4144:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$10875_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":10999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4144:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4119:43:27"},{"expression":{"baseExpression":{"expression":{"id":11001,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10997,"src":"4179:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":11002,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4181:9:27","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":10862,"src":"4179:11:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11004,"indexExpression":{"id":11003,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10990,"src":"4191:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4179:20:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10994,"id":11005,"nodeType":"Return","src":"4172:27:27"}]},"baseFunctions":[12605],"documentation":{"id":10988,"nodeType":"StructuredDocumentation","src":"4008:22:27","text":"@inheritdoc IERC20"},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"4044:9:27","parameters":{"id":10991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10990,"mutability":"mutable","name":"account","nameLocation":"4062:7:27","nodeType":"VariableDeclaration","scope":11007,"src":"4054:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10989,"name":"address","nodeType":"ElementaryTypeName","src":"4054:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4053:17:27"},"returnParameters":{"id":10994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10993,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11007,"src":"4100:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10992,"name":"uint256","nodeType":"ElementaryTypeName","src":"4100:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4099:9:27"},"scope":11451,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":11031,"nodeType":"FunctionDefinition","src":"4401:178:27","nodes":[],"body":{"id":11030,"nodeType":"Block","src":"4476:103:27","nodes":[],"statements":[{"assignments":[11018],"declarations":[{"constant":false,"id":11018,"mutability":"mutable","name":"owner","nameLocation":"4494:5:27","nodeType":"VariableDeclaration","scope":11030,"src":"4486:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11017,"name":"address","nodeType":"ElementaryTypeName","src":"4486:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":11021,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11019,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11479,"src":"4502:10:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4502:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4486:28:27"},{"expression":{"arguments":[{"id":11023,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11018,"src":"4534:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11024,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11010,"src":"4541:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11025,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11012,"src":"4545:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11022,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11158,"src":"4524:9:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":11026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4524:27:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11027,"nodeType":"ExpressionStatement","src":"4524:27:27"},{"expression":{"hexValue":"74727565","id":11028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4568:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":11016,"id":11029,"nodeType":"Return","src":"4561:11:27"}]},"baseFunctions":[12615],"documentation":{"id":11008,"nodeType":"StructuredDocumentation","src":"4212:184:27","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`."},"functionSelector":"a9059cbb","implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"4410:8:27","parameters":{"id":11013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11010,"mutability":"mutable","name":"to","nameLocation":"4427:2:27","nodeType":"VariableDeclaration","scope":11031,"src":"4419:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11009,"name":"address","nodeType":"ElementaryTypeName","src":"4419:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11012,"mutability":"mutable","name":"value","nameLocation":"4439:5:27","nodeType":"VariableDeclaration","scope":11031,"src":"4431:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11011,"name":"uint256","nodeType":"ElementaryTypeName","src":"4431:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4418:27:27"},"returnParameters":{"id":11016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11015,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11031,"src":"4470:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11014,"name":"bool","nodeType":"ElementaryTypeName","src":"4470:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4469:6:27"},"scope":11451,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":11055,"nodeType":"FunctionDefinition","src":"4612:195:27","nodes":[],"body":{"id":11054,"nodeType":"Block","src":"4701:106:27","nodes":[],"statements":[{"assignments":[11043],"declarations":[{"constant":false,"id":11043,"mutability":"mutable","name":"$","nameLocation":"4732:1:27","nodeType":"VariableDeclaration","scope":11054,"src":"4711:22:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":11042,"nodeType":"UserDefinedTypeName","pathNode":{"id":11041,"name":"ERC20Storage","nameLocations":["4711:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":10875,"src":"4711:12:27"},"referencedDeclaration":10875,"src":"4711:12:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":11046,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11044,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"4736:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$10875_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":11045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4736:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4711:43:27"},{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":11047,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11043,"src":"4771:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":11048,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4773:11:27","memberName":"_allowances","nodeType":"MemberAccess","referencedDeclaration":10868,"src":"4771:13:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":11050,"indexExpression":{"id":11049,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11034,"src":"4785:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4771:20:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11052,"indexExpression":{"id":11051,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11036,"src":"4792:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4771:29:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11040,"id":11053,"nodeType":"Return","src":"4764:36:27"}]},"baseFunctions":[12625],"documentation":{"id":11032,"nodeType":"StructuredDocumentation","src":"4585:22:27","text":"@inheritdoc IERC20"},"functionSelector":"dd62ed3e","implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"4621:9:27","parameters":{"id":11037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11034,"mutability":"mutable","name":"owner","nameLocation":"4639:5:27","nodeType":"VariableDeclaration","scope":11055,"src":"4631:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11033,"name":"address","nodeType":"ElementaryTypeName","src":"4631:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11036,"mutability":"mutable","name":"spender","nameLocation":"4654:7:27","nodeType":"VariableDeclaration","scope":11055,"src":"4646:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11035,"name":"address","nodeType":"ElementaryTypeName","src":"4646:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4630:32:27"},"returnParameters":{"id":11040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11039,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11055,"src":"4692:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11038,"name":"uint256","nodeType":"ElementaryTypeName","src":"4692:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4691:9:27"},"scope":11451,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":11079,"nodeType":"FunctionDefinition","src":"5114:186:27","nodes":[],"body":{"id":11078,"nodeType":"Block","src":"5193:107:27","nodes":[],"statements":[{"assignments":[11066],"declarations":[{"constant":false,"id":11066,"mutability":"mutable","name":"owner","nameLocation":"5211:5:27","nodeType":"VariableDeclaration","scope":11078,"src":"5203:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11065,"name":"address","nodeType":"ElementaryTypeName","src":"5203:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":11069,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11067,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11479,"src":"5219:10:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5219:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5203:28:27"},{"expression":{"arguments":[{"id":11071,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11066,"src":"5250:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11072,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11058,"src":"5257:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11073,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11060,"src":"5266:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11070,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[11334,11402],"referencedDeclaration":11334,"src":"5241:8:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":11074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5241:31:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11075,"nodeType":"ExpressionStatement","src":"5241:31:27"},{"expression":{"hexValue":"74727565","id":11076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5289:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":11064,"id":11077,"nodeType":"Return","src":"5282:11:27"}]},"baseFunctions":[12635],"documentation":{"id":11056,"nodeType":"StructuredDocumentation","src":"4813:296:27","text":" @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"5123:7:27","parameters":{"id":11061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11058,"mutability":"mutable","name":"spender","nameLocation":"5139:7:27","nodeType":"VariableDeclaration","scope":11079,"src":"5131:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11057,"name":"address","nodeType":"ElementaryTypeName","src":"5131:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11060,"mutability":"mutable","name":"value","nameLocation":"5156:5:27","nodeType":"VariableDeclaration","scope":11079,"src":"5148:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11059,"name":"uint256","nodeType":"ElementaryTypeName","src":"5148:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5130:32:27"},"returnParameters":{"id":11064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11063,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11079,"src":"5187:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11062,"name":"bool","nodeType":"ElementaryTypeName","src":"5187:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5186:6:27"},"scope":11451,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":11111,"nodeType":"FunctionDefinition","src":"5892:244:27","nodes":[],"body":{"id":11110,"nodeType":"Block","src":"5985:151:27","nodes":[],"statements":[{"assignments":[11092],"declarations":[{"constant":false,"id":11092,"mutability":"mutable","name":"spender","nameLocation":"6003:7:27","nodeType":"VariableDeclaration","scope":11110,"src":"5995:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11091,"name":"address","nodeType":"ElementaryTypeName","src":"5995:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":11095,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11093,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11479,"src":"6013:10:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":11094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6013:12:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5995:30:27"},{"expression":{"arguments":[{"id":11097,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11082,"src":"6051:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11098,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11092,"src":"6057:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11099,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11086,"src":"6066:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11096,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11450,"src":"6035:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":11100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6035:37:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11101,"nodeType":"ExpressionStatement","src":"6035:37:27"},{"expression":{"arguments":[{"id":11103,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11082,"src":"6092:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11104,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11084,"src":"6098:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11105,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11086,"src":"6102:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11102,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11158,"src":"6082:9:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":11106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6082:26:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11107,"nodeType":"ExpressionStatement","src":"6082:26:27"},{"expression":{"hexValue":"74727565","id":11108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6125:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":11090,"id":11109,"nodeType":"Return","src":"6118:11:27"}]},"baseFunctions":[12647],"documentation":{"id":11080,"nodeType":"StructuredDocumentation","src":"5306:581:27","text":" @dev See {IERC20-transferFrom}.\n Skips emitting an {Approval} event indicating an allowance update. This is not\n required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"5901:12:27","parameters":{"id":11087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11082,"mutability":"mutable","name":"from","nameLocation":"5922:4:27","nodeType":"VariableDeclaration","scope":11111,"src":"5914:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11081,"name":"address","nodeType":"ElementaryTypeName","src":"5914:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11084,"mutability":"mutable","name":"to","nameLocation":"5936:2:27","nodeType":"VariableDeclaration","scope":11111,"src":"5928:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11083,"name":"address","nodeType":"ElementaryTypeName","src":"5928:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11086,"mutability":"mutable","name":"value","nameLocation":"5948:5:27","nodeType":"VariableDeclaration","scope":11111,"src":"5940:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11085,"name":"uint256","nodeType":"ElementaryTypeName","src":"5940:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5913:41:27"},"returnParameters":{"id":11090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11089,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11111,"src":"5979:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11088,"name":"bool","nodeType":"ElementaryTypeName","src":"5979:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5978:6:27"},"scope":11451,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":11158,"nodeType":"FunctionDefinition","src":"6509:300:27","nodes":[],"body":{"id":11157,"nodeType":"Block","src":"6578:231:27","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11121,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11114,"src":"6592:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":11124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6608:1:27","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":11123,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6600:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11122,"name":"address","nodeType":"ElementaryTypeName","src":"6600:7:27","typeDescriptions":{}}},"id":11125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6600:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6592:18:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11135,"nodeType":"IfStatement","src":"6588:86:27","trueBody":{"id":11134,"nodeType":"Block","src":"6612:62:27","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":11130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6660:1:27","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":11129,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6652:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11128,"name":"address","nodeType":"ElementaryTypeName","src":"6652:7:27","typeDescriptions":{}}},"id":11131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6652:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11127,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12072,"src":"6633:18:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":11132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6633:30:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11133,"nodeType":"RevertStatement","src":"6626:37:27"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11136,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11116,"src":"6687:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":11139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6701:1:27","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":11138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6693:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11137,"name":"address","nodeType":"ElementaryTypeName","src":"6693:7:27","typeDescriptions":{}}},"id":11140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6693:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6687:16:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11150,"nodeType":"IfStatement","src":"6683:86:27","trueBody":{"id":11149,"nodeType":"Block","src":"6705:64:27","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":11145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6755:1:27","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":11144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6747:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11143,"name":"address","nodeType":"ElementaryTypeName","src":"6747:7:27","typeDescriptions":{}}},"id":11146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6747:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11142,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12077,"src":"6726:20:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":11147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6726:32:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11148,"nodeType":"RevertStatement","src":"6719:39:27"}]}},{"expression":{"arguments":[{"id":11152,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11114,"src":"6786:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11153,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11116,"src":"6792:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11154,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11118,"src":"6796:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11151,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11250,"src":"6778:7:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":11155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6778:24:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11156,"nodeType":"ExpressionStatement","src":"6778:24:27"}]},"documentation":{"id":11112,"nodeType":"StructuredDocumentation","src":"6142:362:27","text":" @dev Moves a `value` amount of tokens from `from` to `to`.\n This 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 NOTE: This function is not virtual, {_update} should be overridden instead."},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"6518:9:27","parameters":{"id":11119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11114,"mutability":"mutable","name":"from","nameLocation":"6536:4:27","nodeType":"VariableDeclaration","scope":11158,"src":"6528:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11113,"name":"address","nodeType":"ElementaryTypeName","src":"6528:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11116,"mutability":"mutable","name":"to","nameLocation":"6550:2:27","nodeType":"VariableDeclaration","scope":11158,"src":"6542:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11115,"name":"address","nodeType":"ElementaryTypeName","src":"6542:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11118,"mutability":"mutable","name":"value","nameLocation":"6562:5:27","nodeType":"VariableDeclaration","scope":11158,"src":"6554:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11117,"name":"uint256","nodeType":"ElementaryTypeName","src":"6554:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6527:41:27"},"returnParameters":{"id":11120,"nodeType":"ParameterList","parameters":[],"src":"6578:0:27"},"scope":11451,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":11250,"nodeType":"FunctionDefinition","src":"7124:1170:27","nodes":[],"body":{"id":11249,"nodeType":"Block","src":"7199:1095:27","nodes":[],"statements":[{"assignments":[11170],"declarations":[{"constant":false,"id":11170,"mutability":"mutable","name":"$","nameLocation":"7230:1:27","nodeType":"VariableDeclaration","scope":11249,"src":"7209:22:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":11169,"nodeType":"UserDefinedTypeName","pathNode":{"id":11168,"name":"ERC20Storage","nameLocations":["7209:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":10875,"src":"7209:12:27"},"referencedDeclaration":10875,"src":"7209:12:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":11173,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11171,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"7234:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$10875_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":11172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7234:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7209:43:27"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11174,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11161,"src":"7266:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":11177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7282:1:27","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":11176,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7274:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11175,"name":"address","nodeType":"ElementaryTypeName","src":"7274:7:27","typeDescriptions":{}}},"id":11178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7274:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7266:18:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11216,"nodeType":"Block","src":"7442:366:27","statements":[{"assignments":[11188],"declarations":[{"constant":false,"id":11188,"mutability":"mutable","name":"fromBalance","nameLocation":"7464:11:27","nodeType":"VariableDeclaration","scope":11216,"src":"7456:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11187,"name":"uint256","nodeType":"ElementaryTypeName","src":"7456:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11193,"initialValue":{"baseExpression":{"expression":{"id":11189,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11170,"src":"7478:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":11190,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7480:9:27","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":10862,"src":"7478:11:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11192,"indexExpression":{"id":11191,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11161,"src":"7490:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7478:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7456:39:27"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11194,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11188,"src":"7513:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11195,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11165,"src":"7527:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7513:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11204,"nodeType":"IfStatement","src":"7509:115:27","trueBody":{"id":11203,"nodeType":"Block","src":"7534:90:27","statements":[{"errorCall":{"arguments":[{"id":11198,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11161,"src":"7584:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11199,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11188,"src":"7590:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11200,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11165,"src":"7603:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11197,"name":"ERC20InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12067,"src":"7559:24:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":11201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7559:50:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11202,"nodeType":"RevertStatement","src":"7552:57:27"}]}},{"id":11215,"nodeType":"UncheckedBlock","src":"7637:161:27","statements":[{"expression":{"id":11213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":11205,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11170,"src":"7744:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":11208,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7746:9:27","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":10862,"src":"7744:11:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11209,"indexExpression":{"id":11207,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11161,"src":"7756:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7744:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11210,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11188,"src":"7764:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11211,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11165,"src":"7778:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7764:19:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7744:39:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11214,"nodeType":"ExpressionStatement","src":"7744:39:27"}]}]},"id":11217,"nodeType":"IfStatement","src":"7262:546:27","trueBody":{"id":11186,"nodeType":"Block","src":"7286:150:27","statements":[{"expression":{"id":11184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11180,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11170,"src":"7402:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":11182,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7404:12:27","memberName":"_totalSupply","nodeType":"MemberAccess","referencedDeclaration":10870,"src":"7402:14:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":11183,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11165,"src":"7420:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7402:23:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11185,"nodeType":"ExpressionStatement","src":"7402:23:27"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11218,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11163,"src":"7822:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":11221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7836:1:27","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":11220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7828:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11219,"name":"address","nodeType":"ElementaryTypeName","src":"7828:7:27","typeDescriptions":{}}},"id":11222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7828:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7822:16:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11241,"nodeType":"Block","src":"8039:208:27","statements":[{"id":11240,"nodeType":"UncheckedBlock","src":"8053:184:27","statements":[{"expression":{"id":11238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":11232,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11170,"src":"8198:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":11235,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8200:9:27","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":10862,"src":"8198:11:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11236,"indexExpression":{"id":11234,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11163,"src":"8210:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8198:15:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":11237,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11165,"src":"8217:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8198:24:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11239,"nodeType":"ExpressionStatement","src":"8198:24:27"}]}]},"id":11242,"nodeType":"IfStatement","src":"7818:429:27","trueBody":{"id":11231,"nodeType":"Block","src":"7840:193:27","statements":[{"id":11230,"nodeType":"UncheckedBlock","src":"7854:169:27","statements":[{"expression":{"id":11228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":11224,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11170,"src":"7985:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":11226,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7987:12:27","memberName":"_totalSupply","nodeType":"MemberAccess","referencedDeclaration":10870,"src":"7985:14:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":11227,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11165,"src":"8003:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7985:23:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11229,"nodeType":"ExpressionStatement","src":"7985:23:27"}]}]}},{"eventCall":{"arguments":[{"id":11244,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11161,"src":"8271:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11245,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11163,"src":"8277:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11246,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11165,"src":"8281:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11243,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12582,"src":"8262:8:27","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":11247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8262:25:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11248,"nodeType":"EmitStatement","src":"8257:30:27"}]},"documentation":{"id":11159,"nodeType":"StructuredDocumentation","src":"6815:304:27","text":" @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"7133:7:27","parameters":{"id":11166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11161,"mutability":"mutable","name":"from","nameLocation":"7149:4:27","nodeType":"VariableDeclaration","scope":11250,"src":"7141:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11160,"name":"address","nodeType":"ElementaryTypeName","src":"7141:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11163,"mutability":"mutable","name":"to","nameLocation":"7163:2:27","nodeType":"VariableDeclaration","scope":11250,"src":"7155:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11162,"name":"address","nodeType":"ElementaryTypeName","src":"7155:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11165,"mutability":"mutable","name":"value","nameLocation":"7175:5:27","nodeType":"VariableDeclaration","scope":11250,"src":"7167:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11164,"name":"uint256","nodeType":"ElementaryTypeName","src":"7167:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7140:41:27"},"returnParameters":{"id":11167,"nodeType":"ParameterList","parameters":[],"src":"7199:0:27"},"scope":11451,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":11283,"nodeType":"FunctionDefinition","src":"8637:208:27","nodes":[],"body":{"id":11282,"nodeType":"Block","src":"8693:152:27","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11258,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11253,"src":"8707:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":11261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8726:1:27","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":11260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8718:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11259,"name":"address","nodeType":"ElementaryTypeName","src":"8718:7:27","typeDescriptions":{}}},"id":11262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8718:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8707:21:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11272,"nodeType":"IfStatement","src":"8703:91:27","trueBody":{"id":11271,"nodeType":"Block","src":"8730:64:27","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":11267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8780:1:27","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":11266,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8772:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11265,"name":"address","nodeType":"ElementaryTypeName","src":"8772:7:27","typeDescriptions":{}}},"id":11268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8772:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11264,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12077,"src":"8751:20:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":11269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8751:32:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11270,"nodeType":"RevertStatement","src":"8744:39:27"}]}},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":11276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8819:1:27","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":11275,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8811:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11274,"name":"address","nodeType":"ElementaryTypeName","src":"8811:7:27","typeDescriptions":{}}},"id":11277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8811:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11278,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11253,"src":"8823:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11279,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11255,"src":"8832:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11273,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11250,"src":"8803:7:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":11280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8803:35:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11281,"nodeType":"ExpressionStatement","src":"8803:35:27"}]},"documentation":{"id":11251,"nodeType":"StructuredDocumentation","src":"8300:332:27","text":" @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"8646:5:27","parameters":{"id":11256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11253,"mutability":"mutable","name":"account","nameLocation":"8660:7:27","nodeType":"VariableDeclaration","scope":11283,"src":"8652:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11252,"name":"address","nodeType":"ElementaryTypeName","src":"8652:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11255,"mutability":"mutable","name":"value","nameLocation":"8677:5:27","nodeType":"VariableDeclaration","scope":11283,"src":"8669:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11254,"name":"uint256","nodeType":"ElementaryTypeName","src":"8669:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8651:32:27"},"returnParameters":{"id":11257,"nodeType":"ParameterList","parameters":[],"src":"8693:0:27"},"scope":11451,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":11316,"nodeType":"FunctionDefinition","src":"9163:206:27","nodes":[],"body":{"id":11315,"nodeType":"Block","src":"9219:150:27","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11291,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11286,"src":"9233:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":11294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9252:1:27","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":11293,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9244:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11292,"name":"address","nodeType":"ElementaryTypeName","src":"9244:7:27","typeDescriptions":{}}},"id":11295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9244:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9233:21:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11305,"nodeType":"IfStatement","src":"9229:89:27","trueBody":{"id":11304,"nodeType":"Block","src":"9256:62:27","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":11300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9304:1:27","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":11299,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9296:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11298,"name":"address","nodeType":"ElementaryTypeName","src":"9296:7:27","typeDescriptions":{}}},"id":11301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9296:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11297,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12072,"src":"9277:18:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":11302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9277:30:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11303,"nodeType":"RevertStatement","src":"9270:37:27"}]}},{"expression":{"arguments":[{"id":11307,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11286,"src":"9335:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":11310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9352:1:27","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":11309,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9344:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11308,"name":"address","nodeType":"ElementaryTypeName","src":"9344:7:27","typeDescriptions":{}}},"id":11311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9344:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11312,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11288,"src":"9356:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11306,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11250,"src":"9327:7:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":11313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9327:35:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11314,"nodeType":"ExpressionStatement","src":"9327:35:27"}]},"documentation":{"id":11284,"nodeType":"StructuredDocumentation","src":"8851:307:27","text":" @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead"},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"9172:5:27","parameters":{"id":11289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11286,"mutability":"mutable","name":"account","nameLocation":"9186:7:27","nodeType":"VariableDeclaration","scope":11316,"src":"9178:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11285,"name":"address","nodeType":"ElementaryTypeName","src":"9178:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11288,"mutability":"mutable","name":"value","nameLocation":"9203:5:27","nodeType":"VariableDeclaration","scope":11316,"src":"9195:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11287,"name":"uint256","nodeType":"ElementaryTypeName","src":"9195:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9177:32:27"},"returnParameters":{"id":11290,"nodeType":"ParameterList","parameters":[],"src":"9219:0:27"},"scope":11451,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":11334,"nodeType":"FunctionDefinition","src":"9905:128:27","nodes":[],"body":{"id":11333,"nodeType":"Block","src":"9979:54:27","nodes":[],"statements":[{"expression":{"arguments":[{"id":11327,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"9998:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11328,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11321,"src":"10005:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11329,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11323,"src":"10014:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":11330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10021:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":11326,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[11334,11402],"referencedDeclaration":11402,"src":"9989:8:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":11331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9989:37:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11332,"nodeType":"ExpressionStatement","src":"9989:37:27"}]},"documentation":{"id":11317,"nodeType":"StructuredDocumentation","src":"9375:525:27","text":" @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n This 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.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"9914:8:27","parameters":{"id":11324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11319,"mutability":"mutable","name":"owner","nameLocation":"9931:5:27","nodeType":"VariableDeclaration","scope":11334,"src":"9923:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11318,"name":"address","nodeType":"ElementaryTypeName","src":"9923:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11321,"mutability":"mutable","name":"spender","nameLocation":"9946:7:27","nodeType":"VariableDeclaration","scope":11334,"src":"9938:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11320,"name":"address","nodeType":"ElementaryTypeName","src":"9938:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11323,"mutability":"mutable","name":"value","nameLocation":"9963:5:27","nodeType":"VariableDeclaration","scope":11334,"src":"9955:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11322,"name":"uint256","nodeType":"ElementaryTypeName","src":"9955:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9922:47:27"},"returnParameters":{"id":11325,"nodeType":"ParameterList","parameters":[],"src":"9979:0:27"},"scope":11451,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":11402,"nodeType":"FunctionDefinition","src":"10880:487:27","nodes":[],"body":{"id":11401,"nodeType":"Block","src":"10978:389:27","nodes":[],"statements":[{"assignments":[11348],"declarations":[{"constant":false,"id":11348,"mutability":"mutable","name":"$","nameLocation":"11009:1:27","nodeType":"VariableDeclaration","scope":11401,"src":"10988:22:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":11347,"nodeType":"UserDefinedTypeName","pathNode":{"id":11346,"name":"ERC20Storage","nameLocations":["10988:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":10875,"src":"10988:12:27"},"referencedDeclaration":10875,"src":"10988:12:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":11351,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11349,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10886,"src":"11013:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$10875_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":11350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11013:18:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10988:43:27"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11352,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11337,"src":"11045:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":11355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11062:1:27","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":11354,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11054:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11353,"name":"address","nodeType":"ElementaryTypeName","src":"11054:7:27","typeDescriptions":{}}},"id":11356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11054:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11045:19:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11366,"nodeType":"IfStatement","src":"11041:89:27","trueBody":{"id":11365,"nodeType":"Block","src":"11066:64:27","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":11361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11116:1:27","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":11360,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11108:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11359,"name":"address","nodeType":"ElementaryTypeName","src":"11108:7:27","typeDescriptions":{}}},"id":11362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11108:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11358,"name":"ERC20InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12091,"src":"11087:20:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":11363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11087:32:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11364,"nodeType":"RevertStatement","src":"11080:39:27"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11367,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11339,"src":"11143:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":11370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11162:1:27","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":11369,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11154:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11368,"name":"address","nodeType":"ElementaryTypeName","src":"11154:7:27","typeDescriptions":{}}},"id":11371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11154:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11143:21:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11381,"nodeType":"IfStatement","src":"11139:90:27","trueBody":{"id":11380,"nodeType":"Block","src":"11166:63:27","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":11376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11215:1:27","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":11375,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11207:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11374,"name":"address","nodeType":"ElementaryTypeName","src":"11207:7:27","typeDescriptions":{}}},"id":11377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11207:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11373,"name":"ERC20InvalidSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12096,"src":"11187:19:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":11378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11187:31:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11379,"nodeType":"RevertStatement","src":"11180:38:27"}]}},{"expression":{"id":11390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":11382,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11348,"src":"11238:1:27","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$10875_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":11386,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11240:11:27","memberName":"_allowances","nodeType":"MemberAccess","referencedDeclaration":10868,"src":"11238:13:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":11387,"indexExpression":{"id":11384,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11337,"src":"11252:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11238:20:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11388,"indexExpression":{"id":11385,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11339,"src":"11259:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11238:29:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11389,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11341,"src":"11270:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11238:37:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11391,"nodeType":"ExpressionStatement","src":"11238:37:27"},{"condition":{"id":11392,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11343,"src":"11289:9:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11400,"nodeType":"IfStatement","src":"11285:76:27","trueBody":{"id":11399,"nodeType":"Block","src":"11300:61:27","statements":[{"eventCall":{"arguments":[{"id":11394,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11337,"src":"11328:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11395,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11339,"src":"11335:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11396,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11341,"src":"11344:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11393,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12591,"src":"11319:8:27","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":11397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11319:31:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11398,"nodeType":"EmitStatement","src":"11314:36:27"}]}}]},"documentation":{"id":11335,"nodeType":"StructuredDocumentation","src":"10039:836:27","text":" @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n true using the following override:\n ```solidity\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}."},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"10889:8:27","parameters":{"id":11344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11337,"mutability":"mutable","name":"owner","nameLocation":"10906:5:27","nodeType":"VariableDeclaration","scope":11402,"src":"10898:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11336,"name":"address","nodeType":"ElementaryTypeName","src":"10898:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11339,"mutability":"mutable","name":"spender","nameLocation":"10921:7:27","nodeType":"VariableDeclaration","scope":11402,"src":"10913:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11338,"name":"address","nodeType":"ElementaryTypeName","src":"10913:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11341,"mutability":"mutable","name":"value","nameLocation":"10938:5:27","nodeType":"VariableDeclaration","scope":11402,"src":"10930:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11340,"name":"uint256","nodeType":"ElementaryTypeName","src":"10930:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11343,"mutability":"mutable","name":"emitEvent","nameLocation":"10950:9:27","nodeType":"VariableDeclaration","scope":11402,"src":"10945:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11342,"name":"bool","nodeType":"ElementaryTypeName","src":"10945:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10897:63:27"},"returnParameters":{"id":11345,"nodeType":"ParameterList","parameters":[],"src":"10978:0:27"},"scope":11451,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":11450,"nodeType":"FunctionDefinition","src":"11649:476:27","nodes":[],"body":{"id":11449,"nodeType":"Block","src":"11738:387:27","nodes":[],"statements":[{"assignments":[11413],"declarations":[{"constant":false,"id":11413,"mutability":"mutable","name":"currentAllowance","nameLocation":"11756:16:27","nodeType":"VariableDeclaration","scope":11449,"src":"11748:24:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11412,"name":"uint256","nodeType":"ElementaryTypeName","src":"11748:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11418,"initialValue":{"arguments":[{"id":11415,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11405,"src":"11785:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11416,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11407,"src":"11792:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":11414,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11055,"src":"11775:9:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":11417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11775:25:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11748:52:27"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11419,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11413,"src":"11814:16:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":11422,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11838:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11421,"name":"uint256","nodeType":"ElementaryTypeName","src":"11838:7:27","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":11420,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11833:4:27","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11833:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":11424,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11847:3:27","memberName":"max","nodeType":"MemberAccess","src":"11833:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11814:36:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11448,"nodeType":"IfStatement","src":"11810:309:27","trueBody":{"id":11447,"nodeType":"Block","src":"11852:267:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11426,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11413,"src":"11870:16:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11427,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11409,"src":"11889:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11870:24:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11436,"nodeType":"IfStatement","src":"11866:130:27","trueBody":{"id":11435,"nodeType":"Block","src":"11896:100:27","statements":[{"errorCall":{"arguments":[{"id":11430,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11407,"src":"11948:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11431,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11413,"src":"11957:16:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11432,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11409,"src":"11975:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11429,"name":"ERC20InsufficientAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12086,"src":"11921:26:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":11433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11921:60:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11434,"nodeType":"RevertStatement","src":"11914:67:27"}]}},{"id":11446,"nodeType":"UncheckedBlock","src":"12009:100:27","statements":[{"expression":{"arguments":[{"id":11438,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11405,"src":"12046:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11439,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11407,"src":"12053:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11440,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11413,"src":"12062:16:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11441,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11409,"src":"12081:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12062:24:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":11443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12088:5:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":11437,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[11334,11402],"referencedDeclaration":11402,"src":"12037:8:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":11444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12037:57:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11445,"nodeType":"ExpressionStatement","src":"12037:57:27"}]}]}}]},"documentation":{"id":11403,"nodeType":"StructuredDocumentation","src":"11373:271:27","text":" @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event."},"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"11658:15:27","parameters":{"id":11410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11405,"mutability":"mutable","name":"owner","nameLocation":"11682:5:27","nodeType":"VariableDeclaration","scope":11450,"src":"11674:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11404,"name":"address","nodeType":"ElementaryTypeName","src":"11674:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11407,"mutability":"mutable","name":"spender","nameLocation":"11697:7:27","nodeType":"VariableDeclaration","scope":11450,"src":"11689:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11406,"name":"address","nodeType":"ElementaryTypeName","src":"11689:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11409,"mutability":"mutable","name":"value","nameLocation":"11714:5:27","nodeType":"VariableDeclaration","scope":11450,"src":"11706:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11408,"name":"uint256","nodeType":"ElementaryTypeName","src":"11706:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11673:47:27"},"returnParameters":{"id":11411,"nodeType":"ParameterList","parameters":[],"src":"11738:0:27"},"scope":11451,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[{"baseName":{"id":10848,"name":"Initializable","nameLocations":["1319:13:27"],"nodeType":"IdentifierPath","referencedDeclaration":10652,"src":"1319:13:27"},"id":10849,"nodeType":"InheritanceSpecifier","src":"1319:13:27"},{"baseName":{"id":10850,"name":"ContextUpgradeable","nameLocations":["1334:18:27"],"nodeType":"IdentifierPath","referencedDeclaration":11497,"src":"1334:18:27"},"id":10851,"nodeType":"InheritanceSpecifier","src":"1334:18:27"},{"baseName":{"id":10852,"name":"IERC20","nameLocations":["1354:6:27"],"nodeType":"IdentifierPath","referencedDeclaration":12648,"src":"1354:6:27"},"id":10853,"nodeType":"InheritanceSpecifier","src":"1354:6:27"},{"baseName":{"id":10854,"name":"IERC20Metadata","nameLocations":["1362:14:27"],"nodeType":"IdentifierPath","referencedDeclaration":12674,"src":"1362:14:27"},"id":10855,"nodeType":"InheritanceSpecifier","src":"1362:14:27"},{"baseName":{"id":10856,"name":"IERC20Errors","nameLocations":["1378:12:27"],"nodeType":"IdentifierPath","referencedDeclaration":12097,"src":"1378:12:27"},"id":10857,"nodeType":"InheritanceSpecifier","src":"1378:12:27"}],"canonicalName":"ERC20Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":10847,"nodeType":"StructuredDocumentation","src":"523:757:27","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC-20\n applications."},"fullyImplemented":true,"linearizedBaseContracts":[11451,12097,12674,12648,11497,10652],"name":"ERC20Upgradeable","nameLocation":"1299:16:27","scope":11452,"usedErrors":[10401,10404,12067,12072,12077,12086,12091,12096],"usedEvents":[10409,12582,12591]}],"license":"MIT"},"id":27} |