{ "contractName": "SmartToken", "abi": [ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "uint8", "name": "_decimals", "type": "uint8" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "uint256", "name": "_amount", "type": "uint256" } ], "name": "Destruction", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "Issuance", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "OwnerUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function", "constant": true }, { "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": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [], "name": "newOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "transfersEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [ { "internalType": "contract IERC20Token", "name": "_token", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "withdrawTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_disable", "type": "bool" } ], "name": "disableTransfers", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "issue", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "destroy", "outputs": [], "stateMutability": "nonpayable", "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" } ], "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Destruction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Issuance\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_prevOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"OwnerUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"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\":\"\",\"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\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"destroy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_disable\",\"type\":\"bool\"}],\"name\":\"disableTransfers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"issue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"newOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transfersEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Token\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Smart Token 'Owned' is specified here for readability reasons\",\"events\":{\"Destruction(uint256)\":{\"details\":\"triggered when the total supply is decreased\",\"params\":{\"_amount\":\"amount that gets removed from the supply\"}},\"Issuance(uint256)\":{\"details\":\"triggered when the total supply is increased\",\"params\":{\"_amount\":\"amount that gets added to the supply\"}}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"used by a new owner to accept an ownership transfer\"},\"approve(address,uint256)\":{\"details\":\"allows another account/contract to transfers tokens on behalf of the caller throws on any error rather then return a false flag to minimize user errors also, to minimize the risk of the approve/transferFrom attack vector (see https://docs.google.com/document/d/1YLPtQxZu1UAvO9cZ1O2RPXBbT0mooh4DYKjA_jp-RLM/), approve has to be called twice in 2 separate transactions - once to change the allowance to 0 and secondly to change it to the new allowance value\",\"params\":{\"_spender\":\"approved address\",\"_value\":\"allowance amount\"},\"returns\":{\"_0\":\"true if the approval was successful, false if it wasn't\"}},\"constructor\":{\"details\":\"initializes a new SmartToken instance\",\"params\":{\"_decimals\":\"for display purposes only\",\"_name\":\"token name\",\"_symbol\":\"token short symbol, minimum 1 character\"}},\"destroy(address,uint256)\":{\"details\":\"removes tokens from the given account and decreases the token supply can only be called by the contract owner\",\"params\":{\"_amount\":\"amount to decrease the supply by\",\"_from\":\"account to remove the amount from\"}},\"disableTransfers(bool)\":{\"details\":\"disables/enables transfers can only be called by the contract owner\",\"params\":{\"_disable\":\"true to disable transfers, false to enable them\"}},\"issue(address,uint256)\":{\"details\":\"increases the token supply and sends the new tokens to the given account can only be called by the contract owner\",\"params\":{\"_amount\":\"amount to increase the supply by\",\"_to\":\"account to receive the new amount\"}},\"transfer(address,uint256)\":{\"details\":\"send coins throws on any error rather then return a false flag to minimize user errors in addition to the standard checks, the function throws if transfers are disabled\",\"params\":{\"_to\":\"target address\",\"_value\":\"transfer amount\"},\"returns\":{\"_0\":\"true if the transfer was successful, false if it wasn't\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"an account/contract attempts to get the coins throws on any error rather then return a false flag to minimize user errors in addition to the standard checks, the function throws if transfers are disabled\",\"params\":{\"_from\":\"source address\",\"_to\":\"target address\",\"_value\":\"transfer amount\"},\"returns\":{\"_0\":\"true if the transfer was successful, false if it wasn't\"}},\"transferOwnership(address)\":{\"details\":\"allows transferring the contract ownership the new owner still needs to accept the transfer can only be called by the contract owner\",\"params\":{\"_newOwner\":\"new contract owner\"}},\"withdrawTokens(address,address,uint256)\":{\"details\":\"withdraws tokens held by the contract and sends them to an account can only be called by the owner\",\"params\":{\"_amount\":\"amount to withdraw\",\"_to\":\"account to receive the new amount\",\"_token\":\"ERC20 token contract address\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/SmartToken.sol\":\"SmartToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/interfaces/IConverterAnchor.sol\":{\"keccak256\":\"0x9448cdbe90293fb5c1a0808b77af8754a1025b59c45f432eee01f659361a6115\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://1ef2bb2e1543c9324daf7f3fd086a57efb45b89f3d62b9d7a9fc78c138d24dbc\",\"dweb:/ipfs/QmVcXDib3K6xYJMBNxawmo4krJGiDfxb5oL64Lc3pi14XK\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/ERC20Token.sol\":{\"keccak256\":\"0xf64a993754bb4afcdfda9e8fe377c2c8a198f23b39e954f5ee3f9f2825958ebd\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://9ee0b7fd792a589b8321f1f13686fe5d5ae949288b124c1a57e2ad895c87e915\",\"dweb:/ipfs/QmTCRx2G6rJAhX9FyYkV4Gx69owVDYSkjNGNFrJGQ7Xnik\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/SmartToken.sol\":{\"keccak256\":\"0xf5036eb68eef5c9e8c8065c359e4a6f360a1ff1371129dc6a01ebcab29f4c034\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://99f904a959fa0c1237afc6e02342300be0e5eb2d9d96e9f8cd29dd2c52d1837b\",\"dweb:/ipfs/QmNxF79PB1fDsWDpCurH97mRVMgm56jACjf2KNj8syw4DG\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/IERC20Token.sol\":{\"keccak256\":\"0xe6f988c3156e88258474526a541d5a42b6a9adae98b04177a059d9f723bc82cd\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://9a6eb77a5b9ce70995a11a6e48ac3985a4c70896fe5fe04d46146ad7c1c83ea3\",\"dweb:/ipfs/QmYvGSveZFG51tghwkVuu6eK9Jy8frHpfLxHTMyvNZN461\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/ISmartToken.sol\":{\"keccak256\":\"0x5cfc15e7a23a9872059b0cea4d2ae902c3fc074a39e1c645036ce38ad47881ec\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://890ee09d24de5778e34c4c27d1377d83d378e8f4a13fcb94d5102f61d4749cce\",\"dweb:/ipfs/QmT89f61fmsUN1BVdebKxUc5VU7sitiP33LNk7TTtF18oj\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol\":{\"keccak256\":\"0x6ef69d9dcc80a8a36d5eb37783375cd5e4831c6d20c723fa6f6b6a06c0aeb53d\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://5a5d087e2c5b47739615ef22e1f29749de44b43c9a37cfae32b3dfc498a258c4\",\"dweb:/ipfs/Qmd1mXKEQbmBxqHk326LGVzNoayXsam8gZNecknnYpBnyh\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/SafeMath.sol\":{\"keccak256\":\"0x1ab7391a19ca8a3ad2f3c4a1074e080d4d76dfdb834637bdd0c1e6b6acdf28af\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://d6d8c99621ca884b72da2d84eddfec8ec8c5533915691d6eec94a07adf445608\",\"dweb:/ipfs/QmaXr6DN7VbfxfMn3PsTy7SAMgZVVXbdeaw11BsAjVL2x1\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHandler.sol\":{\"keccak256\":\"0xf65b87e3bf3343e368da67878c19d1a043a1025b10e9053d3562b53b4aa447fe\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://b85c5d96642c14c53b8d5062eecd4d27d3bdb457d1d0f130900763a75a512eb7\",\"dweb:/ipfs/QmUHtbqC1khqnRZXYn11Aykus4m5e9MVNUWqorxhpr5ipJ\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHolder.sol\":{\"keccak256\":\"0xac6bc102eff6c1bb8c1bb4466eab50322c7c101e2e33d577dd3035f106627577\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://9fdbda2d4509260ca3dd43654bdaea07ef18a5e04213ff16e38e3b4abad78a5f\",\"dweb:/ipfs/QmPb69rzX1DwDeEhhfzqQNS3U2bfGcFjXNaV5ffHsZHzfP\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Utils.sol\":{\"keccak256\":\"0x073efa69fcd6b5e60f841b28b366d63b62ff48ab12a06ce3f5a7f41afd6ce885\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://e8b8ecb2d29197ca77f0ed98f728ace54e6edcfdf5cd1194ae22701607eaf608\",\"dweb:/ipfs/QmcsR6Q35Hurh3TrPkYAboicz9bQQoGCWmZLzUCDyhotH8\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IOwned.sol\":{\"keccak256\":\"0xc60a9d197abc28c1906ed4d18b59caa0242db754a0e1f67af6e6277593530dae\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://a8c6f3e6525a81a5165ccbf04f73f6c389c14b74135d11a7b5f70b1c9bdac75c\",\"dweb:/ipfs/QmaPu4Z7yUPc9sMADmoTZVY6AnyDSYHtNNCx3mm4VkJwhP\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/ITokenHolder.sol\":{\"keccak256\":\"0x9ccb8ab04d0bd874ba7aae5277e60f35c36918922649a0596bf3664ed257bfe2\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://b65e6db19cd244c9f3545695de5fd7573711c49fb306631ddbf0e1d2fa9fb589\",\"dweb:/ipfs/QmZeu5KYVMTbTx7h2BVUq52fpwL9Q44AUfzeVksucDohgf\"]}},\"version\":1}", "bytecode": "0x60806040526008805460ff191660011790553480156200001e57600080fd5b506040516200123338038062001233833981810160405260608110156200004457600080fd5b81019080805160405193929190846401000000008211156200006557600080fd5b9083019060208201858111156200007b57600080fd5b82516401000000008111828201881017156200009657600080fd5b82525081516020918201929091019080838360005b83811015620000c5578181015183820152602001620000ab565b50505050905090810190601f168015620000f35780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011757600080fd5b9083019060208201858111156200012d57600080fd5b82516401000000008111828201881017156200014857600080fd5b82525081516020918201929091019080838360005b83811015620001775781810151838201526020016200015d565b50505050905090810190601f168015620001a55780820380516001836020036101000a031916815260200191505b5060405260200151600080546001600160a01b031916331781558551919350859250849184919062000211576040805162461bcd60e51b815260206004820152601060248201526f4552525f494e56414c49445f4e414d4560801b604482015290519081900360640190fd5b60008351116200025d576040805162461bcd60e51b815260206004820152601260248201527111549497d253959053125117d4d6535093d360721b604482015290519081900360640190fd5b835162000272906002906020870190620002bf565b50825162000288906003906020860190620002bf565b506004805460ff191660ff9390931692909217909155600581905533600090815260066020526040902055506200035b9350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030257805160ff191683800117855562000332565b8280016001018555821562000332579182015b828111156200033257825182559160200191906001019062000315565b506200034092915062000344565b5090565b5b8082111562000340576000815560010162000345565b610ec8806200036b6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806379ba5097116100ad578063a9059cbb11610071578063a9059cbb14610379578063bef97c87146103a5578063d4ee1d90146103ad578063dd62ed3e146103b5578063f2fde38b146103e357610121565b806379ba5097146102ed578063867904b4146102f55780638da5cb5b1461032157806395d89b4114610345578063a24835d11461034d57610121565b806323b872dd116100f457806323b872dd1461021e578063313ce5671461025457806354fd4d50146102725780635e35359e1461029157806370a08231146102c757610121565b806306fdde0314610126578063095ea7b3146101a35780631608f18f146101e357806318160ddd14610204575b600080fd5b61012e610409565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610168578181015183820152602001610150565b50505050905090810190601f1680156101955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101cf600480360360408110156101b957600080fd5b506001600160a01b038135169060200135610494565b604080519115158252519081900360200190f35b610202600480360360208110156101f957600080fd5b5035151561057c565b005b61020c610596565b60408051918252519081900360200190f35b6101cf6004803603606081101561023457600080fd5b506001600160a01b0381358116916020810135909116906040013561059c565b61025c6105b9565b6040805160ff9092168252519081900360200190f35b61027a6105c2565b6040805161ffff9092168252519081900360200190f35b610202600480360360608110156102a757600080fd5b506001600160a01b038135811691602081013590911690604001356105c7565b61020c600480360360208110156102dd57600080fd5b50356001600160a01b0316610600565b610202610612565b6102026004803603604081101561030b57600080fd5b506001600160a01b0381351690602001356106c9565b61032961079f565b604080516001600160a01b039092168252519081900360200190f35b61012e6107ae565b6102026004803603604081101561036357600080fd5b506001600160a01b038135169060200135610809565b6101cf6004803603604081101561038f57600080fd5b506001600160a01b0381351690602001356108c3565b6101cf6108de565b6103296108e7565b61020c600480360360408110156103cb57600080fd5b506001600160a01b03813581169160200135166108f6565b610202600480360360208110156103f957600080fd5b50356001600160a01b0316610913565b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561048c5780601f106104615761010080835404028352916020019161048c565b820191906000526020600020905b81548152906001019060200180831161046f57829003601f168201915b505050505081565b6000826104a081610991565b8215806104ce57503360009081526007602090815260408083206001600160a01b0388168452909152902054155b610514576040805162461bcd60e51b815260206004820152601260248201527111549497d253959053125117d05353d5539560721b604482015290519081900360640190fd5b3360008181526007602090815260408083206001600160a01b03891680855290835292819020879055805187815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6105846109e5565b6008805460ff19169115919091179055565b60055481565b60006105a6610a3a565b6105b1848484610a8a565b949350505050565b60045460ff1681565b600481565b6105cf6109e5565b826105d981610991565b826105e381610991565b836105ed81610b89565b6105f8868686610bdd565b505050505050565b60066020526000908152604090205481565b6001546001600160a01b03163314610665576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6106d16109e5565b816106db81610991565b826106e581610b89565b6005546106f29084610d3d565b6005556001600160a01b0384166000908152600660205260409020546107189084610d3d565b6001600160a01b03851660009081526006602090815260409182902092909255805185815290517f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3929181900390910190a16040805184815290516001600160a01b03861691600091600080516020610e738339815191529181900360200190a350505050565b6000546001600160a01b031681565b6003805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561048c5780601f106104615761010080835404028352916020019161048c565b6108116109e5565b6001600160a01b0382166000908152600660205260409020546108349082610d86565b6001600160a01b03831660009081526006602052604090205560055461085a9082610d86565b6005556040805182815290516000916001600160a01b03851691600080516020610e738339815191529181900360200190a36040805182815290517f9a1b418bc061a5d80270261562e6986a35d995f8051145f277be16103abd34539181900360200190a15050565b60006108cd610a3a565b6108d78383610dd3565b9392505050565b60085460ff1681565b6001546001600160a01b031681565b600760209081526000928352604080842090915290825290205481565b61091b6109e5565b6000546001600160a01b038281169116141561096f576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166109e2576040805162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b604482015290519081900360640190fd5b50565b6000546001600160a01b03163314610a38576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b60085460ff16610a38576040805162461bcd60e51b815260206004820152601660248201527511549497d514905394d1915494d7d11254d05093115160521b604482015290519081900360640190fd5b600083610a9681610991565b83610aa081610991565b6001600160a01b0386166000908152600760209081526040808320338452909152902054610ace9085610d86565b6001600160a01b038716600081815260076020908152604080832033845282528083209490945591815260069091522054610b099085610d86565b6001600160a01b038088166000908152600660205260408082209390935590871681522054610b389085610d3d565b6001600160a01b0380871660008181526006602090815260409182902094909455805188815290519193928a1692600080516020610e7383398151915292918290030190a350600195945050505050565b6001600160a01b0381163014156109e2576040805162461bcd60e51b815260206004820152601360248201527222a9292fa0a2222922a9a9afa4a9afa9a2a62360691b604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310610c5a5780518252601f199092019160209182019101610c3b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610cbc576040519150601f19603f3d011682016040523d82523d6000602084013e610cc1565b606091505b5091509150818015610cef575080511580610cef5750808060200190516020811015610cec57600080fd5b50515b610d36576040805162461bcd60e51b815260206004820152601360248201527211549497d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b5050505050565b6000828201838110156108d7576040805162461bcd60e51b815260206004820152600c60248201526b4552525f4f564552464c4f5760a01b604482015290519081900360640190fd5b600081831015610dcd576040805162461bcd60e51b815260206004820152600d60248201526c4552525f554e444552464c4f5760981b604482015290519081900360640190fd5b50900390565b600082610ddf81610991565b33600090815260066020526040902054610df99084610d86565b33600090815260066020526040808220929092556001600160a01b03861681522054610e259084610d3d565b6001600160a01b038516600081815260066020908152604091829020939093558051868152905191923392600080516020610e738339815191529281900390910190a3506001939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d062eb319db2db22c11903c935b69a66b9513479c3c65c965f0b19eb73aa4f9464736f6c634300060c0033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c806379ba5097116100ad578063a9059cbb11610071578063a9059cbb14610379578063bef97c87146103a5578063d4ee1d90146103ad578063dd62ed3e146103b5578063f2fde38b146103e357610121565b806379ba5097146102ed578063867904b4146102f55780638da5cb5b1461032157806395d89b4114610345578063a24835d11461034d57610121565b806323b872dd116100f457806323b872dd1461021e578063313ce5671461025457806354fd4d50146102725780635e35359e1461029157806370a08231146102c757610121565b806306fdde0314610126578063095ea7b3146101a35780631608f18f146101e357806318160ddd14610204575b600080fd5b61012e610409565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610168578181015183820152602001610150565b50505050905090810190601f1680156101955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101cf600480360360408110156101b957600080fd5b506001600160a01b038135169060200135610494565b604080519115158252519081900360200190f35b610202600480360360208110156101f957600080fd5b5035151561057c565b005b61020c610596565b60408051918252519081900360200190f35b6101cf6004803603606081101561023457600080fd5b506001600160a01b0381358116916020810135909116906040013561059c565b61025c6105b9565b6040805160ff9092168252519081900360200190f35b61027a6105c2565b6040805161ffff9092168252519081900360200190f35b610202600480360360608110156102a757600080fd5b506001600160a01b038135811691602081013590911690604001356105c7565b61020c600480360360208110156102dd57600080fd5b50356001600160a01b0316610600565b610202610612565b6102026004803603604081101561030b57600080fd5b506001600160a01b0381351690602001356106c9565b61032961079f565b604080516001600160a01b039092168252519081900360200190f35b61012e6107ae565b6102026004803603604081101561036357600080fd5b506001600160a01b038135169060200135610809565b6101cf6004803603604081101561038f57600080fd5b506001600160a01b0381351690602001356108c3565b6101cf6108de565b6103296108e7565b61020c600480360360408110156103cb57600080fd5b506001600160a01b03813581169160200135166108f6565b610202600480360360208110156103f957600080fd5b50356001600160a01b0316610913565b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561048c5780601f106104615761010080835404028352916020019161048c565b820191906000526020600020905b81548152906001019060200180831161046f57829003601f168201915b505050505081565b6000826104a081610991565b8215806104ce57503360009081526007602090815260408083206001600160a01b0388168452909152902054155b610514576040805162461bcd60e51b815260206004820152601260248201527111549497d253959053125117d05353d5539560721b604482015290519081900360640190fd5b3360008181526007602090815260408083206001600160a01b03891680855290835292819020879055805187815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6105846109e5565b6008805460ff19169115919091179055565b60055481565b60006105a6610a3a565b6105b1848484610a8a565b949350505050565b60045460ff1681565b600481565b6105cf6109e5565b826105d981610991565b826105e381610991565b836105ed81610b89565b6105f8868686610bdd565b505050505050565b60066020526000908152604090205481565b6001546001600160a01b03163314610665576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6106d16109e5565b816106db81610991565b826106e581610b89565b6005546106f29084610d3d565b6005556001600160a01b0384166000908152600660205260409020546107189084610d3d565b6001600160a01b03851660009081526006602090815260409182902092909255805185815290517f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3929181900390910190a16040805184815290516001600160a01b03861691600091600080516020610e738339815191529181900360200190a350505050565b6000546001600160a01b031681565b6003805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561048c5780601f106104615761010080835404028352916020019161048c565b6108116109e5565b6001600160a01b0382166000908152600660205260409020546108349082610d86565b6001600160a01b03831660009081526006602052604090205560055461085a9082610d86565b6005556040805182815290516000916001600160a01b03851691600080516020610e738339815191529181900360200190a36040805182815290517f9a1b418bc061a5d80270261562e6986a35d995f8051145f277be16103abd34539181900360200190a15050565b60006108cd610a3a565b6108d78383610dd3565b9392505050565b60085460ff1681565b6001546001600160a01b031681565b600760209081526000928352604080842090915290825290205481565b61091b6109e5565b6000546001600160a01b038281169116141561096f576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166109e2576040805162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b604482015290519081900360640190fd5b50565b6000546001600160a01b03163314610a38576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b60085460ff16610a38576040805162461bcd60e51b815260206004820152601660248201527511549497d514905394d1915494d7d11254d05093115160521b604482015290519081900360640190fd5b600083610a9681610991565b83610aa081610991565b6001600160a01b0386166000908152600760209081526040808320338452909152902054610ace9085610d86565b6001600160a01b038716600081815260076020908152604080832033845282528083209490945591815260069091522054610b099085610d86565b6001600160a01b038088166000908152600660205260408082209390935590871681522054610b389085610d3d565b6001600160a01b0380871660008181526006602090815260409182902094909455805188815290519193928a1692600080516020610e7383398151915292918290030190a350600195945050505050565b6001600160a01b0381163014156109e2576040805162461bcd60e51b815260206004820152601360248201527222a9292fa0a2222922a9a9afa4a9afa9a2a62360691b604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310610c5a5780518252601f199092019160209182019101610c3b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610cbc576040519150601f19603f3d011682016040523d82523d6000602084013e610cc1565b606091505b5091509150818015610cef575080511580610cef5750808060200190516020811015610cec57600080fd5b50515b610d36576040805162461bcd60e51b815260206004820152601360248201527211549497d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b5050505050565b6000828201838110156108d7576040805162461bcd60e51b815260206004820152600c60248201526b4552525f4f564552464c4f5760a01b604482015290519081900360640190fd5b600081831015610dcd576040805162461bcd60e51b815260206004820152600d60248201526c4552525f554e444552464c4f5760981b604482015290519081900360640190fd5b50900390565b600082610ddf81610991565b33600090815260066020526040902054610df99084610d86565b33600090815260066020526040808220929092556001600160a01b03861681522054610e259084610d3d565b6001600160a01b038516600081815260066020908152604091829020939093558051868152905191923392600080516020610e738339815191529281900390910190a3506001939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d062eb319db2db22c11903c935b69a66b9513479c3c65c965f0b19eb73aa4f9464736f6c634300060c0033", "immutableReferences": {}, "sourceMap": "308:4264:51:-:0;;;460:35;;;-1:-1:-1;;460:35:51;491:4;460:35;;;1189:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1189:152:51;;;;;;;;;;-1:-1:-1;1189:152:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1189:152:51;;;;;;;;;;-1:-1:-1;1189:152:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1189:152:51;;;;;1325:1;619:18:58;;-1:-1:-1;;;;;;619:18:58;627:10;619:18;;;1725:19:48;;1189:152:51;;-1:-1:-1;1725:19:48;;-1:-1:-1;1305:7:51;;1189:152;;1325:1;1717:52:48;;;;;-1:-1:-1;;;1717:52:48;;;;;;;;;;;;-1:-1:-1;;;1717:52:48;;;;;;;;;;;;;;;1812:1;1794:7;1788:21;:25;1780:56;;;;;-1:-1:-1;;;1780:56:48;;;;;;;;;;;;-1:-1:-1;;;1780:56:48;;;;;;;;;;;;;;;1849:12;;;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;1872:16:48;;;;:6;;:16;;;;;:::i;:::-;-1:-1:-1;1899:8:48;:20;;-1:-1:-1;;1899:20:48;;;;;;;;;;;;;1930:11;:26;;;1977:10;-1:-1:-1;1967:21:48;;;:9;:21;;;;;:36;-1:-1:-1;308:4264:51;;-1:-1:-1;;;;308:4264:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;308:4264:51;;;-1:-1:-1;308:4264:51;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;", "deployedSourceMap": "308:4264:51:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;327:27:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4284:519;;;;;;;;;;;;;;;;-1:-1:-1;4284:519:48;;-1:-1:-1;;;;;4284:519:48;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1851:114:51;;;;;;;;;;;;;;;;-1:-1:-1;1851:114:51;;;;:::i;:::-;;434:35:48;;;:::i;:::-;;;;;;;;;;;;;;;;4324:245:51;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4324:245:51;;;;;;;;;;;;;;;;;:::i;397:30:48:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;417:34:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1196:290:63;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1196:290:63;;;;;;;;;;;;;;;;;:::i;476:54:48:-;;;;;;;;;;;;;;;;-1:-1:-1;476:54:48;-1:-1:-1;;;;;476:54:48;;:::i;1422:217:58:-;;;:::i;2253:349:51:-;;;;;;;;;;;;;;;;-1:-1:-1;2253:349:51;;-1:-1:-1;;;;;2253:349:51;;;;;;:::i;219:29:58:-;;;:::i;:::-;;;;-1:-1:-1;;;;;219:29:58;;;;;;;;;;;;;;361::48;;;:::i;2886:281:51:-;;;;;;;;;;;;;;;;-1:-1:-1;2886:281:51;;-1:-1:-1;;;;;2886:281:51;;;;;;:::i;3637:214::-;;;;;;;;;;;;;;;;-1:-1:-1;3637:214:51;;-1:-1:-1;;;;;3637:214:51;;;;;;:::i;460:35::-;;;:::i;255:23:58:-;;;:::i;537:75:48:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;537:75:48;;;;;;;;;;:::i;1164:167:58:-;;;;;;;;;;;;;;;;-1:-1:-1;1164:167:58;-1:-1:-1;;;;;1164:167:58;;:::i;327:27:48:-;;;;;;;;;;;;;;-1:-1:-1;;327:27:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4284:519::-;4436:4;4408:8;594:23:65;608:8;594:13;:23::i;:::-;4592:11:48;;;:51:::1;;-1:-1:-1::0;4617:10:48::1;4607:21;::::0;;;:9:::1;:21;::::0;;;;;;;-1:-1:-1;;;;;4607:31:48;::::1;::::0;;;;;;;;:36;4592:51:::1;4584:82;;;::::0;;-1:-1:-1;;;4584:82:48;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;4584:82:48;;;;;;;;;;;;;::::1;;4689:10;4679:21;::::0;;;:9:::1;:21;::::0;;;;;;;-1:-1:-1;;;;;4679:31:48;::::1;::::0;;;;;;;;;;:40;;;4735:38;;;;;;;4679:31;;4689:10;4735:38:::1;::::0;;;;;;;;;::::1;-1:-1:-1::0;4791:4:48::1;::::0;4284:519;-1:-1:-1;;;4284:519:48:o;1851:114:51:-;726:12:58;:10;:12::i;:::-;1929:16:51::1;:28:::0;;-1:-1:-1;;1929:28:51::1;1948:9:::0;::::1;1929:28:::0;;;::::1;::::0;;1851:114::o;434:35:48:-;;;;:::o;4324:245:51:-;4493:4;1443:19;:17;:19::i;:::-;4523:38:::1;4542:5;4549:3;4554:6;4523:18;:38::i;:::-;4516:45:::0;4324:245;-1:-1:-1;;;;4324:245:51:o;397:30:48:-;;;;;;:::o;417:34:51:-;450:1;417:34;:::o;1196:290:63:-;726:12:58;:10;:12::i;:::-;1370:6:63::1;594:23:65;608:8;594:13;:23::i;:::-;1401:3:63::2;594:23:65;608:8;594:13;:23::i;:::-;1423:3:63::3;948:18:65;957:8;948;:18::i;:::-;1444:34:63::4;1457:6;1465:3;1470:7;1444:12;:34::i;:::-;628:1:65::3;::::2;749::58::1;1196:290:63::0;;;:::o;476:54:48:-;;;;;;;;;;;;;:::o;1422:217:58:-;1498:8;;-1:-1:-1;;;;;1498:8:58;1484:10;:22;1476:52;;;;;-1:-1:-1;;;1476:52:58;;;;;;;;;;;;-1:-1:-1;;;1476:52:58;;;;;;;;;;;;;;;1563:8;;;1556:5;;1544:28;;-1:-1:-1;;;;;1563:8:58;;;;1556:5;;;;1544:28;;;1591:8;;;;1583:16;;-1:-1:-1;;;;;1591:8:58;;-1:-1:-1;;;;;;1583:16:58;;;;;;;1610:21;;;1422:217::o;2253:349:51:-;726:12:58;:10;:12::i;:::-;2373:3:51::1;594:23:65;608:8;594:13;:23::i;:::-;2395:3:51::2;948:18:65;957:8;948;:18::i;:::-;2430:11:51::3;::::0;:24:::3;::::0;2446:7;2430:15:::3;:24::i;:::-;2416:11;:38:::0;-1:-1:-1;;;;;2482:14:51;::::3;;::::0;;;:9:::3;:14;::::0;;;;;:27:::3;::::0;2501:7;2482:18:::3;:27::i;:::-;-1:-1:-1::0;;;;;2465:14:51;::::3;;::::0;;;:9:::3;:14;::::0;;;;;;;;:44;;;;2527:17;;;;;;;::::3;::::0;;;;;;;;;::::3;2560:34;::::0;;;;;;;2577:1:::3;-1:-1:-1::0;;;;;;;2560:34:51;::::3;::::0;2577:1;;2560:34;2577:1;;-1:-1:-1;;2577:1:51;-1:-1:-1;;;;;2560:34:51;;;;::::3;::::0;;::::3;628:1:65::2;749::58::1;2253:349:51::0;;:::o;219:29:58:-;;;-1:-1:-1;;;;;219:29:58;;:::o;361::48:-;;;;;;;;;;;;;;;-1:-1:-1;;361:29:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2886:281:51;726:12:58;:10;:12::i;:::-;-1:-1:-1;;;;;2991:16:51;::::1;;::::0;;;:9:::1;:16;::::0;;;;;:29:::1;::::0;3012:7;2991:20:::1;:29::i;:::-;-1:-1:-1::0;;;;;2972:16:51;::::1;;::::0;;;:9:::1;:16;::::0;;;;:48;3045:11:::1;::::0;:24:::1;::::0;3061:7;3045:15:::1;:24::i;:::-;3031:11;:38:::0;3087:36:::1;::::0;;;;;;;3111:1:::1;::::0;-1:-1:-1;;;;;3087:36:51;::::1;::::0;-1:-1:-1;;;;;;;;;;;3087:36:51;;;;::::1;::::0;;::::1;3139:20;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;2886:281:::0;;:::o;3637:214::-;3787:4;1443:19;:17;:19::i;:::-;3816:27:::1;3831:3;3836:6;3816:14;:27::i;:::-;3809:34:::0;3637:214;-1:-1:-1;;;3637:214:51:o;460:35::-;;;;;;:::o;255:23:58:-;;;-1:-1:-1;;;;;255:23:58;;:::o;537:75:48:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;1164:167:58:-;726:12;:10;:12::i;:::-;1268:5:::1;::::0;-1:-1:-1;;;;;1255:18:58;;::::1;1268:5:::0;::::1;1255:18;;1247:45;;;::::0;;-1:-1:-1;;;1247:45:58;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;1247:45:58;;;;;;;;;;;;;::::1;;1303:8;:20:::0;;-1:-1:-1;;;;;;1303:20:58::1;-1:-1:-1::0;;;;;1303:20:58;;;::::1;::::0;;;::::1;::::0;;1164:167::o;692:128:65:-;-1:-1:-1;;;;;766:22:65;;758:54;;;;;-1:-1:-1;;;758:54:65;;;;;;;;;;;;-1:-1:-1;;;758:54:65;;;;;;;;;;;;;;;692:128;:::o;813:104:58:-;882:5;;-1:-1:-1;;;;;882:5:58;868:10;:19;860:49;;;;;-1:-1:-1;;;860:49:58;;;;;;;;;;;;-1:-1:-1;;;860:49:58;;;;;;;;;;;;;;;813:104::o;1537:113:51:-;1599:16;;;;1591:51;;;;;-1:-1:-1;;;1591:51:51;;;;;;;;;;;;-1:-1:-1;;;1591:51:51;;;;;;;;;;;;;;3099:470:48;3290:4;3238:5;594:23:65;608:8;594:13;:23::i;:::-;3267:3:48::1;594:23:65;608:8;594:13;:23::i;:::-;-1:-1:-1::0;;;;;3343:16:48;::::2;;::::0;;;:9:::2;:16;::::0;;;;;;;3360:10:::2;3343:28:::0;;;;;;;;:40:::2;::::0;3376:6;3343:32:::2;:40::i;:::-;-1:-1:-1::0;;;;;3312:16:48;::::2;;::::0;;;:9:::2;:16;::::0;;;;;;;3329:10:::2;3312:28:::0;;;;;;;:71;;;;3413:16;;;:9:::2;:16:::0;;;;;:28:::2;::::0;3434:6;3413:20:::2;:28::i;:::-;-1:-1:-1::0;;;;;3394:16:48;;::::2;;::::0;;;:9:::2;:16;::::0;;;;;:47;;;;3469:14;;::::2;::::0;;;;:26:::2;::::0;3488:6;3469:18:::2;:26::i;:::-;-1:-1:-1::0;;;;;3452:14:48;;::::2;;::::0;;;:9:::2;:14;::::0;;;;;;;:43;;;;3511:28;;;;;;;-1:-1:-1;;3452:14:48;;3511:28;;::::2;::::0;;;;;3452:14;;-1:-1:-1;3452:14:48;-1:-1:-1;;;;;3511:28:48;;;;;;;::::2;-1:-1:-1::0;3557:4:48::2;::::0;3099:470;-1:-1:-1;;;;;3099:470:48:o;1041:126:65:-;1130:4;-1:-1:-1;;;;;1110:25:65;;;;1102:57;;;;;-1:-1:-1;;;1102:57:65;;;;;;;;;;;;-1:-1:-1;;;1102:57:65;;;;;;;;;;;;;;1485:312:62;1631:59;;;-1:-1:-1;;;;;1631:59:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1631:59:62;-1:-1:-1;;;1631:59:62;;;1610:81;;;;-1:-1:-1;;1589:17:62;;1610:20;;;;1631:59;1610:81;;;1631:59;1610:81;;1631:59;1610:81;;;;;;;;;;-1:-1:-1;;1610:81:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1574:117;;;;1709:7;:57;;;;-1:-1:-1;1721:11:62;;:16;;:44;;;1752:4;1741:24;;;;;;;;;;;;;;;-1:-1:-1;1741:24:62;1721:44;1701:89;;;;;-1:-1:-1;;;1701:89:62;;;;;;;;;;;;-1:-1:-1;;;1701:89:62;;;;;;;;;;;;;;;1485:312;;;;;:::o;386:169:61:-;446:7;478;;;504;;;;496:32;;;;;-1:-1:-1;;;496:32:61;;;;;;;;;;;;-1:-1:-1;;;496:32:61;;;;;;;;;;;;;;778:147;838:7;872:2;866;:8;;858:34;;;;;-1:-1:-1;;;858:34:61;;;;;;;;;;;;-1:-1:-1;;;858:34:61;;;;;;;;;;;;;;;-1:-1:-1;910:7:61;;;778:147::o;2343:355:48:-;2486:4;2463:3;594:23:65;608:8;594:13;:23::i;:::-;2542:10:48::1;2532:21;::::0;;;:9:::1;:21;::::0;;;;;:33:::1;::::0;2558:6;2532:25:::1;:33::i;:::-;2518:10;2508:21;::::0;;;:9:::1;:21;::::0;;;;;:57;;;;-1:-1:-1;;;;;2593:14:48;::::1;::::0;;;;:26:::1;::::0;2612:6;2593:18:::1;:26::i;:::-;-1:-1:-1::0;;;;;2576:14:48;::::1;;::::0;;;:9:::1;:14;::::0;;;;;;;:43;;;;2635:33;;;;;;;-1:-1:-1;;2576:14:48;;2644:10:::1;::::0;2635:33;;2576:14;;-1:-1:-1;2576:14:48;-1:-1:-1;;;;;2635:33:48;;;;;;;;::::1;-1:-1:-1::0;2686:4:48::1;::::0;2343:355;-1:-1:-1;;;2343:355:48:o", "source": "// SPDX-License-Identifier: SEE LICENSE IN LICENSE\r\npragma solidity 0.6.12;\r\nimport \"./ERC20Token.sol\";\r\nimport \"./interfaces/ISmartToken.sol\";\r\nimport \"../utility/Owned.sol\";\r\nimport \"../utility/TokenHolder.sol\";\r\n\r\n/**\r\n * @dev Smart Token\r\n *\r\n * 'Owned' is specified here for readability reasons\r\n*/\r\ncontract SmartToken is ISmartToken, Owned, ERC20Token, TokenHolder {\r\n using SafeMath for uint256;\r\n\r\n uint16 public constant version = 4;\r\n\r\n bool public transfersEnabled = true; // true if transfer/transferFrom are enabled, false otherwise\r\n\r\n /**\r\n * @dev triggered when the total supply is increased\r\n *\r\n * @param _amount amount that gets added to the supply\r\n */\r\n event Issuance(uint256 _amount);\r\n\r\n /**\r\n * @dev triggered when the total supply is decreased\r\n *\r\n * @param _amount amount that gets removed from the supply\r\n */\r\n event Destruction(uint256 _amount);\r\n\r\n /**\r\n * @dev initializes a new SmartToken instance\r\n *\r\n * @param _name token name\r\n * @param _symbol token short symbol, minimum 1 character\r\n * @param _decimals for display purposes only\r\n */\r\n constructor(string memory _name, string memory _symbol, uint8 _decimals)\r\n public\r\n ERC20Token(_name, _symbol, _decimals, 0)\r\n {\r\n }\r\n\r\n // allows execution only when transfers are enabled\r\n modifier transfersAllowed {\r\n _transfersAllowed();\r\n _;\r\n }\r\n\r\n // error message binary size optimization\r\n function _transfersAllowed() internal view {\r\n require(transfersEnabled, \"ERR_TRANSFERS_DISABLED\");\r\n }\r\n\r\n /**\r\n * @dev disables/enables transfers\r\n * can only be called by the contract owner\r\n *\r\n * @param _disable true to disable transfers, false to enable them\r\n */\r\n function disableTransfers(bool _disable) public override ownerOnly {\r\n transfersEnabled = !_disable;\r\n }\r\n\r\n /**\r\n * @dev increases the token supply and sends the new tokens to the given account\r\n * can only be called by the contract owner\r\n *\r\n * @param _to account to receive the new amount\r\n * @param _amount amount to increase the supply by\r\n */\r\n function issue(address _to, uint256 _amount)\r\n public\r\n override\r\n ownerOnly\r\n validAddress(_to)\r\n notThis(_to)\r\n {\r\n totalSupply = totalSupply.add(_amount);\r\n balanceOf[_to] = balanceOf[_to].add(_amount);\r\n\r\n emit Issuance(_amount);\r\n emit Transfer(address(0), _to, _amount);\r\n }\r\n\r\n /**\r\n * @dev removes tokens from the given account and decreases the token supply\r\n * can only be called by the contract owner\r\n *\r\n * @param _from account to remove the amount from\r\n * @param _amount amount to decrease the supply by\r\n */\r\n function destroy(address _from, uint256 _amount) public override ownerOnly {\r\n balanceOf[_from] = balanceOf[_from].sub(_amount);\r\n totalSupply = totalSupply.sub(_amount);\r\n\r\n emit Transfer(_from, address(0), _amount);\r\n emit Destruction(_amount);\r\n }\r\n\r\n // ERC20 standard method overrides with some extra functionality\r\n\r\n /**\r\n * @dev send coins\r\n * throws on any error rather then return a false flag to minimize user errors\r\n * in addition to the standard checks, the function throws if transfers are disabled\r\n *\r\n * @param _to target address\r\n * @param _value transfer amount\r\n *\r\n * @return true if the transfer was successful, false if it wasn't\r\n */\r\n function transfer(address _to, uint256 _value)\r\n public\r\n override(IERC20Token, ERC20Token)\r\n transfersAllowed\r\n returns (bool)\r\n {\r\n return super.transfer(_to, _value);\r\n }\r\n\r\n /**\r\n * @dev an account/contract attempts to get the coins\r\n * throws on any error rather then return a false flag to minimize user errors\r\n * in addition to the standard checks, the function throws if transfers are disabled\r\n *\r\n * @param _from source address\r\n * @param _to target address\r\n * @param _value transfer amount\r\n *\r\n * @return true if the transfer was successful, false if it wasn't\r\n */\r\n function transferFrom(address _from, address _to, uint256 _value)\r\n public\r\n override(IERC20Token, ERC20Token)\r\n transfersAllowed\r\n returns (bool) \r\n {\r\n return super.transferFrom(_from, _to, _value);\r\n }\r\n}\r\n", "sourcePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/SmartToken.sol", "ast": { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/SmartToken.sol", "exportedSymbols": { "SmartToken": [ 21394 ] }, "id": 21395, "license": "SEE LICENSE IN LICENSE", "nodeType": "SourceUnit", "nodes": [ { "id": 21174, "literals": [ "solidity", "0.6", ".12" ], "nodeType": "PragmaDirective", "src": "52:23:51" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/ERC20Token.sol", "file": "./ERC20Token.sol", "id": 21175, "nodeType": "ImportDirective", "scope": 21395, "sourceUnit": 20618, "src": "77:26:51", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/ISmartToken.sol", "file": "./interfaces/ISmartToken.sol", "id": 21176, "nodeType": "ImportDirective", "scope": 21395, "sourceUnit": 21518, "src": "105:38:51", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol", "file": "../utility/Owned.sol", "id": 21177, "nodeType": "ImportDirective", "scope": 21395, "sourceUnit": 22154, "src": "145:30:51", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHolder.sol", "file": "../utility/TokenHolder.sol", "id": 21178, "nodeType": "ImportDirective", "scope": 21395, "sourceUnit": 22911, "src": "177:36:51", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 21180, "name": "ISmartToken", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21517, "src": "331:11:51", "typeDescriptions": { "typeIdentifier": "t_contract$_ISmartToken_$21517", "typeString": "contract ISmartToken" } }, "id": 21181, "nodeType": "InheritanceSpecifier", "src": "331:11:51" }, { "arguments": null, "baseName": { "contractScope": null, "id": 21182, "name": "Owned", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22153, "src": "344:5:51", "typeDescriptions": { "typeIdentifier": "t_contract$_Owned_$22153", "typeString": "contract Owned" } }, "id": 21183, "nodeType": "InheritanceSpecifier", "src": "344:5:51" }, { "arguments": null, "baseName": { "contractScope": null, "id": 21184, "name": "ERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 20617, "src": "351:10:51", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20Token_$20617", "typeString": "contract ERC20Token" } }, "id": 21185, "nodeType": "InheritanceSpecifier", "src": "351:10:51" }, { "arguments": null, "baseName": { "contractScope": null, "id": 21186, "name": "TokenHolder", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22910, "src": "363:11:51", "typeDescriptions": { "typeIdentifier": "t_contract$_TokenHolder_$22910", "typeString": "contract TokenHolder" } }, "id": 21187, "nodeType": "InheritanceSpecifier", "src": "363:11:51" } ], "contractDependencies": [ 13349, 20617, 21462, 21517, 22153, 22861, 22910, 22996, 23182, 23242 ], "contractKind": "contract", "documentation": { "id": 21179, "nodeType": "StructuredDocumentation", "src": "217:89:51", "text": " @dev Smart Token\n 'Owned' is specified here for readability reasons" }, "fullyImplemented": true, "id": 21394, "linearizedBaseContracts": [ 21394, 22910, 20617, 22996, 22153, 22861, 21517, 21462, 13349, 23242, 23182 ], "name": "SmartToken", "nodeType": "ContractDefinition", "nodes": [ { "id": 21190, "libraryName": { "contractScope": null, "id": 21188, "name": "SafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22689, "src": "388:8:51", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeMath_$22689", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "382:27:51", "typeName": { "id": 21189, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "401:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "constant": true, "functionSelector": "54fd4d50", "id": 21193, "mutability": "constant", "name": "version", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21394, "src": "417:34:51", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" }, "typeName": { "id": 21191, "name": "uint16", "nodeType": "ElementaryTypeName", "src": "417:6:51", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, "value": { "argumentTypes": null, "hexValue": "34", "id": 21192, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "450:1:51", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" }, "visibility": "public" }, { "constant": false, "functionSelector": "bef97c87", "id": 21196, "mutability": "mutable", "name": "transfersEnabled", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21394, "src": "460:35:51", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 21194, "name": "bool", "nodeType": "ElementaryTypeName", "src": "460:4:51", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": { "argumentTypes": null, "hexValue": "74727565", "id": 21195, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "491:4:51", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "visibility": "public" }, { "anonymous": false, "documentation": { "id": 21197, "nodeType": "StructuredDocumentation", "src": "569:141:51", "text": " @dev triggered when the total supply is increased\n @param _amount amount that gets added to the supply" }, "id": 21201, "name": "Issuance", "nodeType": "EventDefinition", "parameters": { "id": 21200, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21199, "indexed": false, "mutability": "mutable", "name": "_amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21201, "src": "731:15:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 21198, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "731:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "730:17:51" }, "src": "716:32:51" }, { "anonymous": false, "documentation": { "id": 21202, "nodeType": "StructuredDocumentation", "src": "756:145:51", "text": " @dev triggered when the total supply is decreased\n @param _amount amount that gets removed from the supply" }, "id": 21206, "name": "Destruction", "nodeType": "EventDefinition", "parameters": { "id": 21205, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21204, "indexed": false, "mutability": "mutable", "name": "_amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21206, "src": "925:15:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 21203, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "925:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "924:17:51" }, "src": "907:35:51" }, { "body": { "id": 21222, "nodeType": "Block", "src": "1333:8:51", "statements": [] }, "documentation": { "id": 21207, "nodeType": "StructuredDocumentation", "src": "950:233:51", "text": " @dev initializes a new SmartToken instance\n @param _name token name\n @param _symbol token short symbol, minimum 1 character\n @param _decimals for display purposes only" }, "id": 21223, "implemented": true, "kind": "constructor", "modifiers": [ { "arguments": [ { "argumentTypes": null, "id": 21216, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21209, "src": "1298:5:51", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { "argumentTypes": null, "id": 21217, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21211, "src": "1305:7:51", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { "argumentTypes": null, "id": 21218, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21213, "src": "1314:9:51", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "hexValue": "30", "id": 21219, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1325:1:51", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "id": 21220, "modifierName": { "argumentTypes": null, "id": 21215, "name": "ERC20Token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 20617, "src": "1287:10:51", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC20Token_$20617_$", "typeString": "type(contract ERC20Token)" } }, "nodeType": "ModifierInvocation", "src": "1287:40:51" } ], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21214, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21209, "mutability": "mutable", "name": "_name", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21223, "src": "1201:19:51", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 21208, "name": "string", "nodeType": "ElementaryTypeName", "src": "1201:6:51", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 21211, "mutability": "mutable", "name": "_symbol", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21223, "src": "1222:21:51", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 21210, "name": "string", "nodeType": "ElementaryTypeName", "src": "1222:6:51", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 21213, "mutability": "mutable", "name": "_decimals", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21223, "src": "1245:15:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 21212, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1245:5:51", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "1200:61:51" }, "returnParameters": { "id": 21221, "nodeType": "ParameterList", "parameters": [], "src": "1333:0:51" }, "scope": 21394, "src": "1189:152:51", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 21229, "nodeType": "Block", "src": "1432:50:51", "statements": [ { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 21225, "name": "_transfersAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21239, "src": "1443:17:51", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$__$", "typeString": "function () view" } }, "id": 21226, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1443:19:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21227, "nodeType": "ExpressionStatement", "src": "1443:19:51" }, { "id": 21228, "nodeType": "PlaceholderStatement", "src": "1473:1:51" } ] }, "documentation": null, "id": 21230, "name": "transfersAllowed", "nodeType": "ModifierDefinition", "overrides": null, "parameters": { "id": 21224, "nodeType": "ParameterList", "parameters": [], "src": "1432:0:51" }, "src": "1406:76:51", "virtual": false, "visibility": "internal" }, { "body": { "id": 21238, "nodeType": "Block", "src": "1580:70:51", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21234, "name": "transfersEnabled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21196, "src": "1599:16:51", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f5452414e53464552535f44495341424c4544", "id": 21235, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1617:24:51", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_da0eea8408576dc7745752d8573d65c520f2ae4c7522ecd9096dbc953230a52a", "typeString": "literal_string \"ERR_TRANSFERS_DISABLED\"" }, "value": "ERR_TRANSFERS_DISABLED" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_da0eea8408576dc7745752d8573d65c520f2ae4c7522ecd9096dbc953230a52a", "typeString": "literal_string \"ERR_TRANSFERS_DISABLED\"" } ], "id": 21233, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "1591:7:51", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 21236, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1591:51:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21237, "nodeType": "ExpressionStatement", "src": "1591:51:51" } ] }, "documentation": null, "id": 21239, "implemented": true, "kind": "function", "modifiers": [], "name": "_transfersAllowed", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21231, "nodeType": "ParameterList", "parameters": [], "src": "1563:2:51" }, "returnParameters": { "id": 21232, "nodeType": "ParameterList", "parameters": [], "src": "1580:0:51" }, "scope": 21394, "src": "1537:113:51", "stateMutability": "view", "virtual": false, "visibility": "internal" }, { "baseFunctions": [ 21502 ], "body": { "id": 21253, "nodeType": "Block", "src": "1918:47:51", "statements": [ { "expression": { "argumentTypes": null, "id": 21251, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 21248, "name": "transfersEnabled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21196, "src": "1929:16:51", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 21250, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1948:9:51", "subExpression": { "argumentTypes": null, "id": 21249, "name": "_disable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21242, "src": "1949:8:51", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1929:28:51", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 21252, "nodeType": "ExpressionStatement", "src": "1929:28:51" } ] }, "documentation": { "id": 21240, "nodeType": "StructuredDocumentation", "src": "1658:187:51", "text": " @dev disables/enables transfers\n can only be called by the contract owner\n @param _disable true to disable transfers, false to enable them" }, "functionSelector": "1608f18f", "id": 21254, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 21246, "modifierName": { "argumentTypes": null, "id": 21245, "name": "ownerOnly", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22089, "src": "1908:9:51", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "1908:9:51" } ], "name": "disableTransfers", "nodeType": "FunctionDefinition", "overrides": { "id": 21244, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1899:8:51" }, "parameters": { "id": 21243, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21242, "mutability": "mutable", "name": "_disable", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21254, "src": "1877:13:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 21241, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1877:4:51", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "1876:15:51" }, "returnParameters": { "id": 21247, "nodeType": "ParameterList", "parameters": [], "src": "1918:0:51" }, "scope": 21394, "src": "1851:114:51", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "baseFunctions": [ 21509 ], "body": { "id": 21302, "nodeType": "Block", "src": "2405:197:51", "statements": [ { "expression": { "argumentTypes": null, "id": 21276, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 21271, "name": "totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 20364, "src": "2416:11:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21274, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21259, "src": "2446:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 21272, "name": "totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 20364, "src": "2430:11:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 22606, "src": "2430:15:51", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 21275, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2430:24:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2416:38:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21277, "nodeType": "ExpressionStatement", "src": "2416:38:51" }, { "expression": { "argumentTypes": null, "id": 21287, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21278, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 20369, "src": "2465:9:51", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 21280, "indexExpression": { "argumentTypes": null, "id": 21279, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21257, "src": "2475:3:51", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2465:14:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21285, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21259, "src": "2501:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21281, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 20369, "src": "2482:9:51", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 21283, "indexExpression": { "argumentTypes": null, "id": 21282, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21257, "src": "2492:3:51", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2482:14:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21284, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 22606, "src": "2482:18:51", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 21286, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2482:27:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2465:44:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21288, "nodeType": "ExpressionStatement", "src": "2465:44:51" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21290, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21259, "src": "2536:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 21289, "name": "Issuance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21201, "src": "2527:8:51", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 21291, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2527:17:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21292, "nodeType": "EmitStatement", "src": "2522:22:51" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 21296, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2577:1:51", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 21295, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2569:7:51", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 21294, "name": "address", "nodeType": "ElementaryTypeName", "src": "2569:7:51", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 21297, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2569:10:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 21298, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21257, "src": "2581:3:51", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 21299, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21259, "src": "2586:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 21293, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 20385, "src": "2560:8:51", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 21300, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2560:34:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21301, "nodeType": "EmitStatement", "src": "2555:39:51" } ] }, "documentation": { "id": 21255, "nodeType": "StructuredDocumentation", "src": "1973:274:51", "text": " @dev increases the token supply and sends the new tokens to the given account\n can only be called by the contract owner\n @param _to account to receive the new amount\n @param _amount amount to increase the supply by" }, "functionSelector": "867904b4", "id": 21303, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 21263, "modifierName": { "argumentTypes": null, "id": 21262, "name": "ownerOnly", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22089, "src": "2341:9:51", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2341:9:51" }, { "arguments": [ { "argumentTypes": null, "id": 21265, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21257, "src": "2373:3:51", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "id": 21266, "modifierName": { "argumentTypes": null, "id": 21264, "name": "validAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22953, "src": "2360:12:51", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_address_$", "typeString": "modifier (address)" } }, "nodeType": "ModifierInvocation", "src": "2360:17:51" }, { "arguments": [ { "argumentTypes": null, "id": 21268, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21257, "src": "2395:3:51", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "id": 21269, "modifierName": { "argumentTypes": null, "id": 21267, "name": "notThis", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22979, "src": "2387:7:51", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_address_$", "typeString": "modifier (address)" } }, "nodeType": "ModifierInvocation", "src": "2387:12:51" } ], "name": "issue", "nodeType": "FunctionDefinition", "overrides": { "id": 21261, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2323:8:51" }, "parameters": { "id": 21260, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21257, "mutability": "mutable", "name": "_to", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21303, "src": "2268:11:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21256, "name": "address", "nodeType": "ElementaryTypeName", "src": "2268:7:51", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 21259, "mutability": "mutable", "name": "_amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21303, "src": "2281:15:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 21258, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2281:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2267:30:51" }, "returnParameters": { "id": 21270, "nodeType": "ParameterList", "parameters": [], "src": "2405:0:51" }, "scope": 21394, "src": "2253:349:51", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "baseFunctions": [ 21516 ], "body": { "id": 21345, "nodeType": "Block", "src": "2961:206:51", "statements": [ { "expression": { "argumentTypes": null, "id": 21323, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21314, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 20369, "src": "2972:9:51", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 21316, "indexExpression": { "argumentTypes": null, "id": 21315, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21306, "src": "2982:5:51", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2972:16:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21321, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21308, "src": "3012:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21317, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 20369, "src": "2991:9:51", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 21319, "indexExpression": { "argumentTypes": null, "id": 21318, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21306, "src": "3001:5:51", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2991:16:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21320, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 22628, "src": "2991:20:51", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 21322, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2991:29:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2972:48:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21324, "nodeType": "ExpressionStatement", "src": "2972:48:51" }, { "expression": { "argumentTypes": null, "id": 21330, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 21325, "name": "totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 20364, "src": "3031:11:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21328, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21308, "src": "3061:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 21326, "name": "totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 20364, "src": "3045:11:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21327, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 22628, "src": "3045:15:51", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 21329, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3045:24:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3031:38:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21331, "nodeType": "ExpressionStatement", "src": "3031:38:51" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21333, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21306, "src": "3096:5:51", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 21336, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3111:1:51", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 21335, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3103:7:51", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 21334, "name": "address", "nodeType": "ElementaryTypeName", "src": "3103:7:51", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 21337, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3103:10:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 21338, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21308, "src": "3115:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 21332, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 20385, "src": "3087:8:51", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 21339, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3087:36:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21340, "nodeType": "EmitStatement", "src": "3082:41:51" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21342, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21308, "src": "3151:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 21341, "name": "Destruction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21206, "src": "3139:11:51", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 21343, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3139:20:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21344, "nodeType": "EmitStatement", "src": "3134:25:51" } ] }, "documentation": { "id": 21304, "nodeType": "StructuredDocumentation", "src": "2610:270:51", "text": " @dev removes tokens from the given account and decreases the token supply\n can only be called by the contract owner\n @param _from account to remove the amount from\n @param _amount amount to decrease the supply by" }, "functionSelector": "a24835d1", "id": 21346, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 21312, "modifierName": { "argumentTypes": null, "id": 21311, "name": "ownerOnly", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22089, "src": "2951:9:51", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2951:9:51" } ], "name": "destroy", "nodeType": "FunctionDefinition", "overrides": { "id": 21310, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2942:8:51" }, "parameters": { "id": 21309, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21306, "mutability": "mutable", "name": "_from", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21346, "src": "2903:13:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21305, "name": "address", "nodeType": "ElementaryTypeName", "src": "2903:7:51", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 21308, "mutability": "mutable", "name": "_amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21346, "src": "2918:15:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 21307, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2918:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2902:32:51" }, "returnParameters": { "id": 21313, "nodeType": "ParameterList", "parameters": [], "src": "2961:0:51" }, "scope": 21394, "src": "2886:281:51", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "baseFunctions": [ 20500, 21441 ], "body": { "id": 21367, "nodeType": "Block", "src": "3798:53:51", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21363, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21349, "src": "3831:3:51", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 21364, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21351, "src": "3836:6:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 21361, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "3816:5:51", "typeDescriptions": { "typeIdentifier": "t_super$_SmartToken_$21394", "typeString": "contract super SmartToken" } }, "id": 21362, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 20500, "src": "3816:14:51", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) returns (bool)" } }, "id": 21365, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3816:27:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 21360, "id": 21366, "nodeType": "Return", "src": "3809:34:51" } ] }, "documentation": { "id": 21347, "nodeType": "StructuredDocumentation", "src": "3247:384:51", "text": " @dev send coins\n throws on any error rather then return a false flag to minimize user errors\n in addition to the standard checks, the function throws if transfers are disabled\n @param _to target address\n @param _value transfer amount\n @return true if the transfer was successful, false if it wasn't" }, "functionSelector": "a9059cbb", "id": 21368, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 21357, "modifierName": { "argumentTypes": null, "id": 21356, "name": "transfersAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21230, "src": "3752:16:51", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3752:16:51" } ], "name": "transfer", "nodeType": "FunctionDefinition", "overrides": { "id": 21355, "nodeType": "OverrideSpecifier", "overrides": [ { "contractScope": null, "id": 21353, "name": "IERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21462, "src": "3718:11:51", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21462", "typeString": "contract IERC20Token" } }, { "contractScope": null, "id": 21354, "name": "ERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 20617, "src": "3731:10:51", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20Token_$20617", "typeString": "contract ERC20Token" } } ], "src": "3709:33:51" }, "parameters": { "id": 21352, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21349, "mutability": "mutable", "name": "_to", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21368, "src": "3655:11:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21348, "name": "address", "nodeType": "ElementaryTypeName", "src": "3655:7:51", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 21351, "mutability": "mutable", "name": "_value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21368, "src": "3668:14:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 21350, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3668:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3654:29:51" }, "returnParameters": { "id": 21360, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21359, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21368, "src": "3787:4:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 21358, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3787:4:51", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "3786:6:51" }, "scope": 21394, "src": "3637:214:51", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "baseFunctions": [ 20567, 21452 ], "body": { "id": 21392, "nodeType": "Block", "src": "4505:64:51", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21387, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21371, "src": "4542:5:51", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 21388, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21373, "src": "4549:3:51", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 21389, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21375, "src": "4554:6:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 21385, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "4523:5:51", "typeDescriptions": { "typeIdentifier": "t_super$_SmartToken_$21394", "typeString": "contract super SmartToken" } }, "id": 21386, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 20567, "src": "4523:18:51", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) returns (bool)" } }, "id": 21390, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4523:38:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 21384, "id": 21391, "nodeType": "Return", "src": "4516:45:51" } ] }, "documentation": { "id": 21369, "nodeType": "StructuredDocumentation", "src": "3859:459:51", "text": " @dev an account/contract attempts to get the coins\n throws on any error rather then return a false flag to minimize user errors\n in addition to the standard checks, the function throws if transfers are disabled\n @param _from source address\n @param _to target address\n @param _value transfer amount\n @return true if the transfer was successful, false if it wasn't" }, "functionSelector": "23b872dd", "id": 21393, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 21381, "modifierName": { "argumentTypes": null, "id": 21380, "name": "transfersAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21230, "src": "4458:16:51", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "4458:16:51" } ], "name": "transferFrom", "nodeType": "FunctionDefinition", "overrides": { "id": 21379, "nodeType": "OverrideSpecifier", "overrides": [ { "contractScope": null, "id": 21377, "name": "IERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21462, "src": "4424:11:51", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21462", "typeString": "contract IERC20Token" } }, { "contractScope": null, "id": 21378, "name": "ERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 20617, "src": "4437:10:51", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20Token_$20617", "typeString": "contract ERC20Token" } } ], "src": "4415:33:51" }, "parameters": { "id": 21376, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21371, "mutability": "mutable", "name": "_from", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21393, "src": "4346:13:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21370, "name": "address", "nodeType": "ElementaryTypeName", "src": "4346:7:51", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 21373, "mutability": "mutable", "name": "_to", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21393, "src": "4361:11:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21372, "name": "address", "nodeType": "ElementaryTypeName", "src": "4361:7:51", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 21375, "mutability": "mutable", "name": "_value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21393, "src": "4374:14:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 21374, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4374:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4345:44:51" }, "returnParameters": { "id": 21384, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21383, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21393, "src": "4493:4:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 21382, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4493:4:51", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "4492:6:51" }, "scope": 21394, "src": "4324:245:51", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" } ], "scope": 21395, "src": "308:4264:51" } ], "src": "52:4522:51" }, "legacyAST": { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/SmartToken.sol", "exportedSymbols": { "SmartToken": [ 21394 ] }, "id": 21395, "license": "SEE LICENSE IN LICENSE", "nodeType": "SourceUnit", "nodes": [ { "id": 21174, "literals": [ "solidity", "0.6", ".12" ], "nodeType": "PragmaDirective", "src": "52:23:51" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/ERC20Token.sol", "file": "./ERC20Token.sol", "id": 21175, "nodeType": "ImportDirective", "scope": 21395, "sourceUnit": 20618, "src": "77:26:51", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/interfaces/ISmartToken.sol", "file": "./interfaces/ISmartToken.sol", "id": 21176, "nodeType": "ImportDirective", "scope": 21395, "sourceUnit": 21518, "src": "105:38:51", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol", "file": "../utility/Owned.sol", "id": 21177, "nodeType": "ImportDirective", "scope": 21395, "sourceUnit": 22154, "src": "145:30:51", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHolder.sol", "file": "../utility/TokenHolder.sol", "id": 21178, "nodeType": "ImportDirective", "scope": 21395, "sourceUnit": 22911, "src": "177:36:51", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 21180, "name": "ISmartToken", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21517, "src": "331:11:51", "typeDescriptions": { "typeIdentifier": "t_contract$_ISmartToken_$21517", "typeString": "contract ISmartToken" } }, "id": 21181, "nodeType": "InheritanceSpecifier", "src": "331:11:51" }, { "arguments": null, "baseName": { "contractScope": null, "id": 21182, "name": "Owned", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22153, "src": "344:5:51", "typeDescriptions": { "typeIdentifier": "t_contract$_Owned_$22153", "typeString": "contract Owned" } }, "id": 21183, "nodeType": "InheritanceSpecifier", "src": "344:5:51" }, { "arguments": null, "baseName": { "contractScope": null, "id": 21184, "name": "ERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 20617, "src": "351:10:51", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20Token_$20617", "typeString": "contract ERC20Token" } }, "id": 21185, "nodeType": "InheritanceSpecifier", "src": "351:10:51" }, { "arguments": null, "baseName": { "contractScope": null, "id": 21186, "name": "TokenHolder", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22910, "src": "363:11:51", "typeDescriptions": { "typeIdentifier": "t_contract$_TokenHolder_$22910", "typeString": "contract TokenHolder" } }, "id": 21187, "nodeType": "InheritanceSpecifier", "src": "363:11:51" } ], "contractDependencies": [ 13349, 20617, 21462, 21517, 22153, 22861, 22910, 22996, 23182, 23242 ], "contractKind": "contract", "documentation": { "id": 21179, "nodeType": "StructuredDocumentation", "src": "217:89:51", "text": " @dev Smart Token\n 'Owned' is specified here for readability reasons" }, "fullyImplemented": true, "id": 21394, "linearizedBaseContracts": [ 21394, 22910, 20617, 22996, 22153, 22861, 21517, 21462, 13349, 23242, 23182 ], "name": "SmartToken", "nodeType": "ContractDefinition", "nodes": [ { "id": 21190, "libraryName": { "contractScope": null, "id": 21188, "name": "SafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22689, "src": "388:8:51", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeMath_$22689", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "382:27:51", "typeName": { "id": 21189, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "401:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "constant": true, "functionSelector": "54fd4d50", "id": 21193, "mutability": "constant", "name": "version", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21394, "src": "417:34:51", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" }, "typeName": { "id": 21191, "name": "uint16", "nodeType": "ElementaryTypeName", "src": "417:6:51", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, "value": { "argumentTypes": null, "hexValue": "34", "id": 21192, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "450:1:51", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" }, "visibility": "public" }, { "constant": false, "functionSelector": "bef97c87", "id": 21196, "mutability": "mutable", "name": "transfersEnabled", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21394, "src": "460:35:51", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 21194, "name": "bool", "nodeType": "ElementaryTypeName", "src": "460:4:51", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": { "argumentTypes": null, "hexValue": "74727565", "id": 21195, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "491:4:51", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "visibility": "public" }, { "anonymous": false, "documentation": { "id": 21197, "nodeType": "StructuredDocumentation", "src": "569:141:51", "text": " @dev triggered when the total supply is increased\n @param _amount amount that gets added to the supply" }, "id": 21201, "name": "Issuance", "nodeType": "EventDefinition", "parameters": { "id": 21200, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21199, "indexed": false, "mutability": "mutable", "name": "_amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21201, "src": "731:15:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 21198, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "731:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "730:17:51" }, "src": "716:32:51" }, { "anonymous": false, "documentation": { "id": 21202, "nodeType": "StructuredDocumentation", "src": "756:145:51", "text": " @dev triggered when the total supply is decreased\n @param _amount amount that gets removed from the supply" }, "id": 21206, "name": "Destruction", "nodeType": "EventDefinition", "parameters": { "id": 21205, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21204, "indexed": false, "mutability": "mutable", "name": "_amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21206, "src": "925:15:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 21203, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "925:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "924:17:51" }, "src": "907:35:51" }, { "body": { "id": 21222, "nodeType": "Block", "src": "1333:8:51", "statements": [] }, "documentation": { "id": 21207, "nodeType": "StructuredDocumentation", "src": "950:233:51", "text": " @dev initializes a new SmartToken instance\n @param _name token name\n @param _symbol token short symbol, minimum 1 character\n @param _decimals for display purposes only" }, "id": 21223, "implemented": true, "kind": "constructor", "modifiers": [ { "arguments": [ { "argumentTypes": null, "id": 21216, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21209, "src": "1298:5:51", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { "argumentTypes": null, "id": 21217, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21211, "src": "1305:7:51", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { "argumentTypes": null, "id": 21218, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21213, "src": "1314:9:51", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "hexValue": "30", "id": 21219, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1325:1:51", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "id": 21220, "modifierName": { "argumentTypes": null, "id": 21215, "name": "ERC20Token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 20617, "src": "1287:10:51", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC20Token_$20617_$", "typeString": "type(contract ERC20Token)" } }, "nodeType": "ModifierInvocation", "src": "1287:40:51" } ], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21214, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21209, "mutability": "mutable", "name": "_name", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21223, "src": "1201:19:51", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 21208, "name": "string", "nodeType": "ElementaryTypeName", "src": "1201:6:51", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 21211, "mutability": "mutable", "name": "_symbol", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21223, "src": "1222:21:51", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 21210, "name": "string", "nodeType": "ElementaryTypeName", "src": "1222:6:51", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 21213, "mutability": "mutable", "name": "_decimals", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21223, "src": "1245:15:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 21212, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1245:5:51", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "1200:61:51" }, "returnParameters": { "id": 21221, "nodeType": "ParameterList", "parameters": [], "src": "1333:0:51" }, "scope": 21394, "src": "1189:152:51", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 21229, "nodeType": "Block", "src": "1432:50:51", "statements": [ { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "id": 21225, "name": "_transfersAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21239, "src": "1443:17:51", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$__$", "typeString": "function () view" } }, "id": 21226, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1443:19:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21227, "nodeType": "ExpressionStatement", "src": "1443:19:51" }, { "id": 21228, "nodeType": "PlaceholderStatement", "src": "1473:1:51" } ] }, "documentation": null, "id": 21230, "name": "transfersAllowed", "nodeType": "ModifierDefinition", "overrides": null, "parameters": { "id": 21224, "nodeType": "ParameterList", "parameters": [], "src": "1432:0:51" }, "src": "1406:76:51", "virtual": false, "visibility": "internal" }, { "body": { "id": 21238, "nodeType": "Block", "src": "1580:70:51", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21234, "name": "transfersEnabled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21196, "src": "1599:16:51", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f5452414e53464552535f44495341424c4544", "id": 21235, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1617:24:51", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_da0eea8408576dc7745752d8573d65c520f2ae4c7522ecd9096dbc953230a52a", "typeString": "literal_string \"ERR_TRANSFERS_DISABLED\"" }, "value": "ERR_TRANSFERS_DISABLED" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_da0eea8408576dc7745752d8573d65c520f2ae4c7522ecd9096dbc953230a52a", "typeString": "literal_string \"ERR_TRANSFERS_DISABLED\"" } ], "id": 21233, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "1591:7:51", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 21236, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1591:51:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21237, "nodeType": "ExpressionStatement", "src": "1591:51:51" } ] }, "documentation": null, "id": 21239, "implemented": true, "kind": "function", "modifiers": [], "name": "_transfersAllowed", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21231, "nodeType": "ParameterList", "parameters": [], "src": "1563:2:51" }, "returnParameters": { "id": 21232, "nodeType": "ParameterList", "parameters": [], "src": "1580:0:51" }, "scope": 21394, "src": "1537:113:51", "stateMutability": "view", "virtual": false, "visibility": "internal" }, { "baseFunctions": [ 21502 ], "body": { "id": 21253, "nodeType": "Block", "src": "1918:47:51", "statements": [ { "expression": { "argumentTypes": null, "id": 21251, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 21248, "name": "transfersEnabled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21196, "src": "1929:16:51", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 21250, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1948:9:51", "subExpression": { "argumentTypes": null, "id": 21249, "name": "_disable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21242, "src": "1949:8:51", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1929:28:51", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 21252, "nodeType": "ExpressionStatement", "src": "1929:28:51" } ] }, "documentation": { "id": 21240, "nodeType": "StructuredDocumentation", "src": "1658:187:51", "text": " @dev disables/enables transfers\n can only be called by the contract owner\n @param _disable true to disable transfers, false to enable them" }, "functionSelector": "1608f18f", "id": 21254, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 21246, "modifierName": { "argumentTypes": null, "id": 21245, "name": "ownerOnly", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22089, "src": "1908:9:51", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "1908:9:51" } ], "name": "disableTransfers", "nodeType": "FunctionDefinition", "overrides": { "id": 21244, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1899:8:51" }, "parameters": { "id": 21243, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21242, "mutability": "mutable", "name": "_disable", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21254, "src": "1877:13:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 21241, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1877:4:51", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "1876:15:51" }, "returnParameters": { "id": 21247, "nodeType": "ParameterList", "parameters": [], "src": "1918:0:51" }, "scope": 21394, "src": "1851:114:51", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "baseFunctions": [ 21509 ], "body": { "id": 21302, "nodeType": "Block", "src": "2405:197:51", "statements": [ { "expression": { "argumentTypes": null, "id": 21276, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 21271, "name": "totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 20364, "src": "2416:11:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21274, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21259, "src": "2446:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 21272, "name": "totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 20364, "src": "2430:11:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21273, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 22606, "src": "2430:15:51", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 21275, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2430:24:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2416:38:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21277, "nodeType": "ExpressionStatement", "src": "2416:38:51" }, { "expression": { "argumentTypes": null, "id": 21287, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21278, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 20369, "src": "2465:9:51", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 21280, "indexExpression": { "argumentTypes": null, "id": 21279, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21257, "src": "2475:3:51", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2465:14:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21285, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21259, "src": "2501:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21281, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 20369, "src": "2482:9:51", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 21283, "indexExpression": { "argumentTypes": null, "id": 21282, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21257, "src": "2492:3:51", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2482:14:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21284, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", "referencedDeclaration": 22606, "src": "2482:18:51", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 21286, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2482:27:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2465:44:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21288, "nodeType": "ExpressionStatement", "src": "2465:44:51" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21290, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21259, "src": "2536:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 21289, "name": "Issuance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21201, "src": "2527:8:51", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 21291, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2527:17:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21292, "nodeType": "EmitStatement", "src": "2522:22:51" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 21296, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2577:1:51", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 21295, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2569:7:51", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 21294, "name": "address", "nodeType": "ElementaryTypeName", "src": "2569:7:51", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 21297, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2569:10:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 21298, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21257, "src": "2581:3:51", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 21299, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21259, "src": "2586:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 21293, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 20385, "src": "2560:8:51", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 21300, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2560:34:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21301, "nodeType": "EmitStatement", "src": "2555:39:51" } ] }, "documentation": { "id": 21255, "nodeType": "StructuredDocumentation", "src": "1973:274:51", "text": " @dev increases the token supply and sends the new tokens to the given account\n can only be called by the contract owner\n @param _to account to receive the new amount\n @param _amount amount to increase the supply by" }, "functionSelector": "867904b4", "id": 21303, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 21263, "modifierName": { "argumentTypes": null, "id": 21262, "name": "ownerOnly", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22089, "src": "2341:9:51", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2341:9:51" }, { "arguments": [ { "argumentTypes": null, "id": 21265, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21257, "src": "2373:3:51", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "id": 21266, "modifierName": { "argumentTypes": null, "id": 21264, "name": "validAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22953, "src": "2360:12:51", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_address_$", "typeString": "modifier (address)" } }, "nodeType": "ModifierInvocation", "src": "2360:17:51" }, { "arguments": [ { "argumentTypes": null, "id": 21268, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21257, "src": "2395:3:51", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "id": 21269, "modifierName": { "argumentTypes": null, "id": 21267, "name": "notThis", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22979, "src": "2387:7:51", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_address_$", "typeString": "modifier (address)" } }, "nodeType": "ModifierInvocation", "src": "2387:12:51" } ], "name": "issue", "nodeType": "FunctionDefinition", "overrides": { "id": 21261, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2323:8:51" }, "parameters": { "id": 21260, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21257, "mutability": "mutable", "name": "_to", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21303, "src": "2268:11:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21256, "name": "address", "nodeType": "ElementaryTypeName", "src": "2268:7:51", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 21259, "mutability": "mutable", "name": "_amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21303, "src": "2281:15:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 21258, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2281:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2267:30:51" }, "returnParameters": { "id": 21270, "nodeType": "ParameterList", "parameters": [], "src": "2405:0:51" }, "scope": 21394, "src": "2253:349:51", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "baseFunctions": [ 21516 ], "body": { "id": 21345, "nodeType": "Block", "src": "2961:206:51", "statements": [ { "expression": { "argumentTypes": null, "id": 21323, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21314, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 20369, "src": "2972:9:51", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 21316, "indexExpression": { "argumentTypes": null, "id": 21315, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21306, "src": "2982:5:51", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2972:16:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21321, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21308, "src": "3012:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21317, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 20369, "src": "2991:9:51", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 21319, "indexExpression": { "argumentTypes": null, "id": 21318, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21306, "src": "3001:5:51", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2991:16:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21320, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 22628, "src": "2991:20:51", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 21322, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2991:29:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2972:48:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21324, "nodeType": "ExpressionStatement", "src": "2972:48:51" }, { "expression": { "argumentTypes": null, "id": 21330, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 21325, "name": "totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 20364, "src": "3031:11:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21328, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21308, "src": "3061:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 21326, "name": "totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 20364, "src": "3045:11:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21327, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 22628, "src": "3045:15:51", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 21329, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3045:24:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3031:38:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21331, "nodeType": "ExpressionStatement", "src": "3031:38:51" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21333, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21306, "src": "3096:5:51", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 21336, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3111:1:51", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 21335, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3103:7:51", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 21334, "name": "address", "nodeType": "ElementaryTypeName", "src": "3103:7:51", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 21337, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3103:10:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 21338, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21308, "src": "3115:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 21332, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 20385, "src": "3087:8:51", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, "id": 21339, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3087:36:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21340, "nodeType": "EmitStatement", "src": "3082:41:51" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21342, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21308, "src": "3151:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 21341, "name": "Destruction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21206, "src": "3139:11:51", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 21343, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3139:20:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21344, "nodeType": "EmitStatement", "src": "3134:25:51" } ] }, "documentation": { "id": 21304, "nodeType": "StructuredDocumentation", "src": "2610:270:51", "text": " @dev removes tokens from the given account and decreases the token supply\n can only be called by the contract owner\n @param _from account to remove the amount from\n @param _amount amount to decrease the supply by" }, "functionSelector": "a24835d1", "id": 21346, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 21312, "modifierName": { "argumentTypes": null, "id": 21311, "name": "ownerOnly", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22089, "src": "2951:9:51", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2951:9:51" } ], "name": "destroy", "nodeType": "FunctionDefinition", "overrides": { "id": 21310, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2942:8:51" }, "parameters": { "id": 21309, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21306, "mutability": "mutable", "name": "_from", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21346, "src": "2903:13:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21305, "name": "address", "nodeType": "ElementaryTypeName", "src": "2903:7:51", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 21308, "mutability": "mutable", "name": "_amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21346, "src": "2918:15:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 21307, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2918:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "2902:32:51" }, "returnParameters": { "id": 21313, "nodeType": "ParameterList", "parameters": [], "src": "2961:0:51" }, "scope": 21394, "src": "2886:281:51", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "baseFunctions": [ 20500, 21441 ], "body": { "id": 21367, "nodeType": "Block", "src": "3798:53:51", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21363, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21349, "src": "3831:3:51", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 21364, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21351, "src": "3836:6:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 21361, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "3816:5:51", "typeDescriptions": { "typeIdentifier": "t_super$_SmartToken_$21394", "typeString": "contract super SmartToken" } }, "id": 21362, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 20500, "src": "3816:14:51", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) returns (bool)" } }, "id": 21365, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3816:27:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 21360, "id": 21366, "nodeType": "Return", "src": "3809:34:51" } ] }, "documentation": { "id": 21347, "nodeType": "StructuredDocumentation", "src": "3247:384:51", "text": " @dev send coins\n throws on any error rather then return a false flag to minimize user errors\n in addition to the standard checks, the function throws if transfers are disabled\n @param _to target address\n @param _value transfer amount\n @return true if the transfer was successful, false if it wasn't" }, "functionSelector": "a9059cbb", "id": 21368, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 21357, "modifierName": { "argumentTypes": null, "id": 21356, "name": "transfersAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21230, "src": "3752:16:51", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3752:16:51" } ], "name": "transfer", "nodeType": "FunctionDefinition", "overrides": { "id": 21355, "nodeType": "OverrideSpecifier", "overrides": [ { "contractScope": null, "id": 21353, "name": "IERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21462, "src": "3718:11:51", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21462", "typeString": "contract IERC20Token" } }, { "contractScope": null, "id": 21354, "name": "ERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 20617, "src": "3731:10:51", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20Token_$20617", "typeString": "contract ERC20Token" } } ], "src": "3709:33:51" }, "parameters": { "id": 21352, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21349, "mutability": "mutable", "name": "_to", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21368, "src": "3655:11:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21348, "name": "address", "nodeType": "ElementaryTypeName", "src": "3655:7:51", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 21351, "mutability": "mutable", "name": "_value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21368, "src": "3668:14:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 21350, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3668:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3654:29:51" }, "returnParameters": { "id": 21360, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21359, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21368, "src": "3787:4:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 21358, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3787:4:51", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "3786:6:51" }, "scope": 21394, "src": "3637:214:51", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "baseFunctions": [ 20567, 21452 ], "body": { "id": 21392, "nodeType": "Block", "src": "4505:64:51", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21387, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21371, "src": "4542:5:51", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 21388, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21373, "src": "4549:3:51", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 21389, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21375, "src": "4554:6:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 21385, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "4523:5:51", "typeDescriptions": { "typeIdentifier": "t_super$_SmartToken_$21394", "typeString": "contract super SmartToken" } }, "id": 21386, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 20567, "src": "4523:18:51", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) returns (bool)" } }, "id": 21390, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4523:38:51", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 21384, "id": 21391, "nodeType": "Return", "src": "4516:45:51" } ] }, "documentation": { "id": 21369, "nodeType": "StructuredDocumentation", "src": "3859:459:51", "text": " @dev an account/contract attempts to get the coins\n throws on any error rather then return a false flag to minimize user errors\n in addition to the standard checks, the function throws if transfers are disabled\n @param _from source address\n @param _to target address\n @param _value transfer amount\n @return true if the transfer was successful, false if it wasn't" }, "functionSelector": "23b872dd", "id": 21393, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 21381, "modifierName": { "argumentTypes": null, "id": 21380, "name": "transfersAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21230, "src": "4458:16:51", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "4458:16:51" } ], "name": "transferFrom", "nodeType": "FunctionDefinition", "overrides": { "id": 21379, "nodeType": "OverrideSpecifier", "overrides": [ { "contractScope": null, "id": 21377, "name": "IERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21462, "src": "4424:11:51", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20Token_$21462", "typeString": "contract IERC20Token" } }, { "contractScope": null, "id": 21378, "name": "ERC20Token", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 20617, "src": "4437:10:51", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20Token_$20617", "typeString": "contract ERC20Token" } } ], "src": "4415:33:51" }, "parameters": { "id": 21376, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21371, "mutability": "mutable", "name": "_from", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21393, "src": "4346:13:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21370, "name": "address", "nodeType": "ElementaryTypeName", "src": "4346:7:51", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 21373, "mutability": "mutable", "name": "_to", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21393, "src": "4361:11:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21372, "name": "address", "nodeType": "ElementaryTypeName", "src": "4361:7:51", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 21375, "mutability": "mutable", "name": "_value", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21393, "src": "4374:14:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 21374, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4374:7:51", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4345:44:51" }, "returnParameters": { "id": 21384, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21383, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21393, "src": "4493:4:51", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 21382, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4493:4:51", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "4492:6:51" }, "scope": 21394, "src": "4324:245:51", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" } ], "scope": 21395, "src": "308:4264:51" } ], "src": "52:4522:51" }, "compiler": { "name": "solc", "version": "0.6.12+commit.27d51765.Emscripten.clang" }, "networks": {}, "schemaVersion": "3.2.3", "updatedAt": "2020-11-10T14:20:44.730Z", "networkType": "ethereum", "devdoc": { "details": "Smart Token 'Owned' is specified here for readability reasons", "events": { "Destruction(uint256)": { "details": "triggered when the total supply is decreased", "params": { "_amount": "amount that gets removed from the supply" } }, "Issuance(uint256)": { "details": "triggered when the total supply is increased", "params": { "_amount": "amount that gets added to the supply" } } }, "kind": "dev", "methods": { "acceptOwnership()": { "details": "used by a new owner to accept an ownership transfer" }, "approve(address,uint256)": { "details": "allows another account/contract to transfers tokens on behalf of the caller throws on any error rather then return a false flag to minimize user errors also, to minimize the risk of the approve/transferFrom attack vector (see https://docs.google.com/document/d/1YLPtQxZu1UAvO9cZ1O2RPXBbT0mooh4DYKjA_jp-RLM/), approve has to be called twice in 2 separate transactions - once to change the allowance to 0 and secondly to change it to the new allowance value", "params": { "_spender": "approved address", "_value": "allowance amount" }, "returns": { "_0": "true if the approval was successful, false if it wasn't" } }, "constructor": { "details": "initializes a new SmartToken instance", "params": { "_decimals": "for display purposes only", "_name": "token name", "_symbol": "token short symbol, minimum 1 character" } }, "destroy(address,uint256)": { "details": "removes tokens from the given account and decreases the token supply can only be called by the contract owner", "params": { "_amount": "amount to decrease the supply by", "_from": "account to remove the amount from" } }, "disableTransfers(bool)": { "details": "disables/enables transfers can only be called by the contract owner", "params": { "_disable": "true to disable transfers, false to enable them" } }, "issue(address,uint256)": { "details": "increases the token supply and sends the new tokens to the given account can only be called by the contract owner", "params": { "_amount": "amount to increase the supply by", "_to": "account to receive the new amount" } }, "transfer(address,uint256)": { "details": "send coins throws on any error rather then return a false flag to minimize user errors in addition to the standard checks, the function throws if transfers are disabled", "params": { "_to": "target address", "_value": "transfer amount" }, "returns": { "_0": "true if the transfer was successful, false if it wasn't" } }, "transferFrom(address,address,uint256)": { "details": "an account/contract attempts to get the coins throws on any error rather then return a false flag to minimize user errors in addition to the standard checks, the function throws if transfers are disabled", "params": { "_from": "source address", "_to": "target address", "_value": "transfer amount" }, "returns": { "_0": "true if the transfer was successful, false if it wasn't" } }, "transferOwnership(address)": { "details": "allows transferring the contract ownership the new owner still needs to accept the transfer can only be called by the contract owner", "params": { "_newOwner": "new contract owner" } }, "withdrawTokens(address,address,uint256)": { "details": "withdraws tokens held by the contract and sends them to an account can only be called by the owner", "params": { "_amount": "amount to withdraw", "_to": "account to receive the new amount", "_token": "ERC20 token contract address" } } }, "version": 1 }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }