cic-stack/apps/cic-eth/tests/testdata/bancor/PoolTokensContainer.json

5939 lines
288 KiB
JSON

{
"contractName": "PoolTokensContainer",
"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": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
},
{
"inputs": [],
"name": "acceptOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "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": [
{
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"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"
},
{
"inputs": [],
"name": "poolTokens",
"outputs": [
{
"internalType": "contract ISmartToken[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "createToken",
"outputs": [
{
"internalType": "contract ISmartToken",
"name": "",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract ISmartToken",
"name": "_token",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "mint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract ISmartToken",
"name": "_token",
"type": "address"
},
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"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\":\"_prevOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"OwnerUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISmartToken\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"contract ISmartToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISmartToken\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"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\":\"poolTokens\",\"outputs\":[{\"internalType\":\"contract ISmartToken[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"The PoolTokensContainer contract serves as a container for multiple pool tokens. It is used by specific liquidity pool types that require more than a single pool token, while still maintaining the single converter / anchor relationship. It maintains and provides a list of the underlying pool tokens.\",\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"used by a new owner to accept an ownership transfer\"},\"burn(address,address,uint256)\":{\"details\":\"removes tokens from the given account and decreases the pool token supply can only be called by the contract owner\",\"params\":{\"_amount\":\"amount to burn\",\"_from\":\"account to remove the tokens from\",\"_token\":\"pool token address\"}},\"constructor\":{\"details\":\"initializes a new PoolTokensContainer instance\",\"params\":{\"_decimals\":\"used for the underlying pool token decimals\",\"_name\":\"pool name, also used as a prefix for the underlying pool token names\",\"_symbol\":\"pool symbol, also used as a prefix for the underlying pool token symbols\"}},\"createToken()\":{\"details\":\"creates a new pool token and adds it to the list\",\"returns\":{\"_0\":\"new pool token address\"}},\"mint(address,address,uint256)\":{\"details\":\"increases the pool token supply and sends the new tokens to the given account can only be called by the contract owner\",\"params\":{\"_amount\":\"amount to mint\",\"_to\":\"account to receive the newly minted tokens\",\"_token\":\"pool token address\"}},\"poolTokens()\":{\"details\":\"returns the list of pool tokens\",\"returns\":{\"_0\":\"list of pool tokens\"}},\"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/converter/types/liquidity-pool-v2/PoolTokensContainer.sol\":\"PoolTokensContainer\"},\"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/converter/types/liquidity-pool-v2/PoolTokensContainer.sol\":{\"keccak256\":\"0x79e583ec380c8982f74d4f707ae26ed96e1c90a6b54b4fc058ab2316656e0ddb\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://3c900b396fefda767db8b99d9ed10c9a22151279b0f8229098d28a08e75046da\",\"dweb:/ipfs/QmZBqgB1CnKpjM8Bv6HMrYtzdwu8wBmS3FzpWuvhyfGLwd\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/types/liquidity-pool-v2/interfaces/IPoolTokensContainer.sol\":{\"keccak256\":\"0xb62b1efbd3188a2ef15fef6122f45278e1c354cadb2544cb600af28bda00f3cd\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://ce08db6aafa20ced1fbaed11d4413580901f525bb318c23dff7532c815b03e1e\",\"dweb:/ipfs/QmeoC4D4vJiPMW7TjTmtu3z8WAtBDQ4GNSTeJzZsDzA36c\"]},\"/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": "0x60806040523480156200001157600080fd5b506040516200224a3803806200224a833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405260200151600080546001600160a01b0319163317905584519092501515905062000200576040805162461bcd60e51b815260206004820152601060248201526f4552525f494e56414c49445f4e414d4560801b604482015290519081900360640190fd5b60008251116200024c576040805162461bcd60e51b815260206004820152601260248201527111549497d253959053125117d4d6535093d360721b604482015290519081900360640190fd5b82516200026190600290602086019062000295565b5081516200027790600390602085019062000295565b506004805460ff191660ff9290921691909117905550620003319050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002d857805160ff191683800117855562000308565b8280016001018555821562000308579182015b8281111562000308578251825591602001919060010190620002eb565b50620003169291506200031a565b5090565b5b808211156200031657600081556001016200031b565b611f0980620003416000396000f3fe60806040523480156200001157600080fd5b5060043610620000c45760003560e01c806395d89b41116200007b57806395d89b4114620002325780639cbf9e36146200023c578063c6c3bbe61462000246578063d4ee1d90146200027f578063f2fde38b1462000289578063f6b911bc14620002b257620000c4565b806306fdde0314620000c9578063313ce567146200014b5780635e35359e146200016b5780636d3e313e14620001a657806379ba509714620002025780638da5cb5b146200020c575b600080fd5b620000d3620002eb565b6040805160208082528351818301528351919283929083019185019080838360005b838110156200010f578181015183820152602001620000f5565b50505050905090810190601f1680156200013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b620001556200037a565b6040805160ff9092168252519081900360200190f35b620001a4600480360360608110156200018357600080fd5b506001600160a01b0381358116916020810135909116906040013562000383565b005b620001b0620003c6565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015620001ee578181015183820152602001620001d4565b505050509050019250505060405180910390f35b620001a46200042a565b62000216620004e2565b604080516001600160a01b039092168252519081900360200190f35b620000d3620004f1565b620002166200054f565b620001a4600480360360608110156200025e57600080fd5b506001600160a01b038135811691602081013590911690604001356200082e565b62000216620008ae565b620001a460048036036020811015620002a157600080fd5b50356001600160a01b0316620008bd565b620001a460048036036060811015620002ca57600080fd5b506001600160a01b038135811691602081013590911690604001356200093e565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015620003725780601f10620003465761010080835404028352916020019162000372565b820191906000526020600020905b8154815290600101906020018083116200035457829003601f168201915b505050505081565b60045460ff1681565b6200038d620009a0565b826200039981620009f6565b82620003a581620009f6565b83620003b18162000a4b565b620003be86868662000aa0565b505050505050565b606060058054806020026020016040519081016040528092919081815260200182805480156200042057602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000401575b5050505050905090565b6001546001600160a01b031633146200047e576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b031681565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015620003725780601f10620003465761010080835404028352916020019162000372565b60006200055b620009a0565b6005805410620005aa576040805162461bcd60e51b815260206004820152601560248201527411549497d3505617d31253525517d4915050d21151605a1b604482015290519081900360640190fd5b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181526060936200064e93919290918301828280156200063b5780601f106200060f576101008083540402835291602001916200063b565b820191906000526020600020905b8154815290600101906020018083116200061d57829003601f168201915b5050600554600101925062000c08915050565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152939450606093620006ba93909290918301828280156200063b5780601f106200060f576101008083540402835291602001916200063b565b905060008282600460009054906101000a900460ff16604051620006de9062000c92565b60ff82166040820152606080825284519082015283518190602080830191608084019188019080838360005b83811015620007245781810151838201526020016200070a565b50505050905090810190601f168015620007525780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015620007875781810151838201526020016200076d565b50505050905090810190601f168015620007b55780820380516001836020036101000a031916815260200191505b5095505050505050604051809103906000f080158015620007da573d6000803e3d6000fd5b50600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319166001600160a01b038316179055949350505050565b62000838620009a0565b826001600160a01b031663867904b483836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156200089057600080fd5b505af1158015620008a5573d6000803e3d6000fd5b50505050505050565b6001546001600160a01b031681565b620008c7620009a0565b6000546001600160a01b03828116911614156200091c576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b62000948620009a0565b826001600160a01b031663a24835d183836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156200089057600080fd5b6000546001600160a01b03163314620009f4576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b6001600160a01b03811662000a48576040805162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b604482015290519081900360640190fd5b50565b6001600160a01b03811630141562000a48576040805162461bcd60e51b815260206004820152601360248201527222a9292fa0a2222922a9a9afa4a9afa9a2a62360691b604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b6020831062000b1f5780518252601f19909201916020918201910162000afe565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811462000b83576040519150601f19603f3d011682016040523d82523d6000602084013e62000b88565b606091505b509150915081801562000bb957508051158062000bb9575080806020019051602081101562000bb657600080fd5b50515b62000c01576040805162461bcd60e51b815260206004820152601360248201527211549497d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b5050505050565b60608282600360fc1b60f81c016040516020018083805190602001908083835b6020831062000c495780518252601f19909201916020918201910162000c28565b6001836020036101000a0380198251168184511680821785525050505050509050018260ff1660f81b815260010192505050604051602081830303815290604052905092915050565b6112338062000ca18339019056fe60806040526008805460ff191660011790553480156200001e57600080fd5b506040516200123338038062001233833981810160405260608110156200004457600080fd5b81019080805160405193929190846401000000008211156200006557600080fd5b9083019060208201858111156200007b57600080fd5b82516401000000008111828201881017156200009657600080fd5b82525081516020918201929091019080838360005b83811015620000c5578181015183820152602001620000ab565b50505050905090810190601f168015620000f35780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011757600080fd5b9083019060208201858111156200012d57600080fd5b82516401000000008111828201881017156200014857600080fd5b82525081516020918201929091019080838360005b83811015620001775781810151838201526020016200015d565b50505050905090810190601f168015620001a55780820380516001836020036101000a031916815260200191505b5060405260200151600080546001600160a01b031916331781558551919350859250849184919062000211576040805162461bcd60e51b815260206004820152601060248201526f4552525f494e56414c49445f4e414d4560801b604482015290519081900360640190fd5b60008351116200025d576040805162461bcd60e51b815260206004820152601260248201527111549497d253959053125117d4d6535093d360721b604482015290519081900360640190fd5b835162000272906002906020870190620002bf565b50825162000288906003906020860190620002bf565b506004805460ff191660ff9390931692909217909155600581905533600090815260066020526040902055506200035b9350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030257805160ff191683800117855562000332565b8280016001018555821562000332579182015b828111156200033257825182559160200191906001019062000315565b506200034092915062000344565b5090565b5b8082111562000340576000815560010162000345565b610ec8806200036b6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806379ba5097116100ad578063a9059cbb11610071578063a9059cbb14610379578063bef97c87146103a5578063d4ee1d90146103ad578063dd62ed3e146103b5578063f2fde38b146103e357610121565b806379ba5097146102ed578063867904b4146102f55780638da5cb5b1461032157806395d89b4114610345578063a24835d11461034d57610121565b806323b872dd116100f457806323b872dd1461021e578063313ce5671461025457806354fd4d50146102725780635e35359e1461029157806370a08231146102c757610121565b806306fdde0314610126578063095ea7b3146101a35780631608f18f146101e357806318160ddd14610204575b600080fd5b61012e610409565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610168578181015183820152602001610150565b50505050905090810190601f1680156101955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101cf600480360360408110156101b957600080fd5b506001600160a01b038135169060200135610494565b604080519115158252519081900360200190f35b610202600480360360208110156101f957600080fd5b5035151561057c565b005b61020c610596565b60408051918252519081900360200190f35b6101cf6004803603606081101561023457600080fd5b506001600160a01b0381358116916020810135909116906040013561059c565b61025c6105b9565b6040805160ff9092168252519081900360200190f35b61027a6105c2565b6040805161ffff9092168252519081900360200190f35b610202600480360360608110156102a757600080fd5b506001600160a01b038135811691602081013590911690604001356105c7565b61020c600480360360208110156102dd57600080fd5b50356001600160a01b0316610600565b610202610612565b6102026004803603604081101561030b57600080fd5b506001600160a01b0381351690602001356106c9565b61032961079f565b604080516001600160a01b039092168252519081900360200190f35b61012e6107ae565b6102026004803603604081101561036357600080fd5b506001600160a01b038135169060200135610809565b6101cf6004803603604081101561038f57600080fd5b506001600160a01b0381351690602001356108c3565b6101cf6108de565b6103296108e7565b61020c600480360360408110156103cb57600080fd5b506001600160a01b03813581169160200135166108f6565b610202600480360360208110156103f957600080fd5b50356001600160a01b0316610913565b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561048c5780601f106104615761010080835404028352916020019161048c565b820191906000526020600020905b81548152906001019060200180831161046f57829003601f168201915b505050505081565b6000826104a081610991565b8215806104ce57503360009081526007602090815260408083206001600160a01b0388168452909152902054155b610514576040805162461bcd60e51b815260206004820152601260248201527111549497d253959053125117d05353d5539560721b604482015290519081900360640190fd5b3360008181526007602090815260408083206001600160a01b03891680855290835292819020879055805187815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6105846109e5565b6008805460ff19169115919091179055565b60055481565b60006105a6610a3a565b6105b1848484610a8a565b949350505050565b60045460ff1681565b600481565b6105cf6109e5565b826105d981610991565b826105e381610991565b836105ed81610b89565b6105f8868686610bdd565b505050505050565b60066020526000908152604090205481565b6001546001600160a01b03163314610665576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6106d16109e5565b816106db81610991565b826106e581610b89565b6005546106f29084610d3d565b6005556001600160a01b0384166000908152600660205260409020546107189084610d3d565b6001600160a01b03851660009081526006602090815260409182902092909255805185815290517f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3929181900390910190a16040805184815290516001600160a01b03861691600091600080516020610e738339815191529181900360200190a350505050565b6000546001600160a01b031681565b6003805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561048c5780601f106104615761010080835404028352916020019161048c565b6108116109e5565b6001600160a01b0382166000908152600660205260409020546108349082610d86565b6001600160a01b03831660009081526006602052604090205560055461085a9082610d86565b6005556040805182815290516000916001600160a01b03851691600080516020610e738339815191529181900360200190a36040805182815290517f9a1b418bc061a5d80270261562e6986a35d995f8051145f277be16103abd34539181900360200190a15050565b60006108cd610a3a565b6108d78383610dd3565b9392505050565b60085460ff1681565b6001546001600160a01b031681565b600760209081526000928352604080842090915290825290205481565b61091b6109e5565b6000546001600160a01b038281169116141561096f576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166109e2576040805162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b604482015290519081900360640190fd5b50565b6000546001600160a01b03163314610a38576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b60085460ff16610a38576040805162461bcd60e51b815260206004820152601660248201527511549497d514905394d1915494d7d11254d05093115160521b604482015290519081900360640190fd5b600083610a9681610991565b83610aa081610991565b6001600160a01b0386166000908152600760209081526040808320338452909152902054610ace9085610d86565b6001600160a01b038716600081815260076020908152604080832033845282528083209490945591815260069091522054610b099085610d86565b6001600160a01b038088166000908152600660205260408082209390935590871681522054610b389085610d3d565b6001600160a01b0380871660008181526006602090815260409182902094909455805188815290519193928a1692600080516020610e7383398151915292918290030190a350600195945050505050565b6001600160a01b0381163014156109e2576040805162461bcd60e51b815260206004820152601360248201527222a9292fa0a2222922a9a9afa4a9afa9a2a62360691b604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310610c5a5780518252601f199092019160209182019101610c3b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610cbc576040519150601f19603f3d011682016040523d82523d6000602084013e610cc1565b606091505b5091509150818015610cef575080511580610cef5750808060200190516020811015610cec57600080fd5b50515b610d36576040805162461bcd60e51b815260206004820152601360248201527211549497d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b5050505050565b6000828201838110156108d7576040805162461bcd60e51b815260206004820152600c60248201526b4552525f4f564552464c4f5760a01b604482015290519081900360640190fd5b600081831015610dcd576040805162461bcd60e51b815260206004820152600d60248201526c4552525f554e444552464c4f5760981b604482015290519081900360640190fd5b50900390565b600082610ddf81610991565b33600090815260066020526040902054610df99084610d86565b33600090815260066020526040808220929092556001600160a01b03861681522054610e259084610d3d565b6001600160a01b038516600081815260066020908152604091829020939093558051868152905191923392600080516020610e738339815191529281900390910190a3506001939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d062eb319db2db22c11903c935b69a66b9513479c3c65c965f0b19eb73aa4f9464736f6c634300060c0033a26469706673582212204f09fb1778cc831abb7f873219dbed978e552fc8cd81237b1adc3e5d9ff2530f64736f6c634300060c0033",
"deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620000c45760003560e01c806395d89b41116200007b57806395d89b4114620002325780639cbf9e36146200023c578063c6c3bbe61462000246578063d4ee1d90146200027f578063f2fde38b1462000289578063f6b911bc14620002b257620000c4565b806306fdde0314620000c9578063313ce567146200014b5780635e35359e146200016b5780636d3e313e14620001a657806379ba509714620002025780638da5cb5b146200020c575b600080fd5b620000d3620002eb565b6040805160208082528351818301528351919283929083019185019080838360005b838110156200010f578181015183820152602001620000f5565b50505050905090810190601f1680156200013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b620001556200037a565b6040805160ff9092168252519081900360200190f35b620001a4600480360360608110156200018357600080fd5b506001600160a01b0381358116916020810135909116906040013562000383565b005b620001b0620003c6565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015620001ee578181015183820152602001620001d4565b505050509050019250505060405180910390f35b620001a46200042a565b62000216620004e2565b604080516001600160a01b039092168252519081900360200190f35b620000d3620004f1565b620002166200054f565b620001a4600480360360608110156200025e57600080fd5b506001600160a01b038135811691602081013590911690604001356200082e565b62000216620008ae565b620001a460048036036020811015620002a157600080fd5b50356001600160a01b0316620008bd565b620001a460048036036060811015620002ca57600080fd5b506001600160a01b038135811691602081013590911690604001356200093e565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015620003725780601f10620003465761010080835404028352916020019162000372565b820191906000526020600020905b8154815290600101906020018083116200035457829003601f168201915b505050505081565b60045460ff1681565b6200038d620009a0565b826200039981620009f6565b82620003a581620009f6565b83620003b18162000a4b565b620003be86868662000aa0565b505050505050565b606060058054806020026020016040519081016040528092919081815260200182805480156200042057602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000401575b5050505050905090565b6001546001600160a01b031633146200047e576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b031681565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015620003725780601f10620003465761010080835404028352916020019162000372565b60006200055b620009a0565b6005805410620005aa576040805162461bcd60e51b815260206004820152601560248201527411549497d3505617d31253525517d4915050d21151605a1b604482015290519081900360640190fd5b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181526060936200064e93919290918301828280156200063b5780601f106200060f576101008083540402835291602001916200063b565b820191906000526020600020905b8154815290600101906020018083116200061d57829003601f168201915b5050600554600101925062000c08915050565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152939450606093620006ba93909290918301828280156200063b5780601f106200060f576101008083540402835291602001916200063b565b905060008282600460009054906101000a900460ff16604051620006de9062000c92565b60ff82166040820152606080825284519082015283518190602080830191608084019188019080838360005b83811015620007245781810151838201526020016200070a565b50505050905090810190601f168015620007525780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015620007875781810151838201526020016200076d565b50505050905090810190601f168015620007b55780820380516001836020036101000a031916815260200191505b5095505050505050604051809103906000f080158015620007da573d6000803e3d6000fd5b50600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319166001600160a01b038316179055949350505050565b62000838620009a0565b826001600160a01b031663867904b483836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156200089057600080fd5b505af1158015620008a5573d6000803e3d6000fd5b50505050505050565b6001546001600160a01b031681565b620008c7620009a0565b6000546001600160a01b03828116911614156200091c576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b62000948620009a0565b826001600160a01b031663a24835d183836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156200089057600080fd5b6000546001600160a01b03163314620009f4576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b6001600160a01b03811662000a48576040805162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b604482015290519081900360640190fd5b50565b6001600160a01b03811630141562000a48576040805162461bcd60e51b815260206004820152601360248201527222a9292fa0a2222922a9a9afa4a9afa9a2a62360691b604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b6020831062000b1f5780518252601f19909201916020918201910162000afe565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811462000b83576040519150601f19603f3d011682016040523d82523d6000602084013e62000b88565b606091505b509150915081801562000bb957508051158062000bb9575080806020019051602081101562000bb657600080fd5b50515b62000c01576040805162461bcd60e51b815260206004820152601360248201527211549497d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b5050505050565b60608282600360fc1b60f81c016040516020018083805190602001908083835b6020831062000c495780518252601f19909201916020918201910162000c28565b6001836020036101000a0380198251168184511680821785525050505050509050018260ff1660f81b815260010192505050604051602081830303815290604052905092915050565b6112338062000ca18339019056fe60806040526008805460ff191660011790553480156200001e57600080fd5b506040516200123338038062001233833981810160405260608110156200004457600080fd5b81019080805160405193929190846401000000008211156200006557600080fd5b9083019060208201858111156200007b57600080fd5b82516401000000008111828201881017156200009657600080fd5b82525081516020918201929091019080838360005b83811015620000c5578181015183820152602001620000ab565b50505050905090810190601f168015620000f35780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011757600080fd5b9083019060208201858111156200012d57600080fd5b82516401000000008111828201881017156200014857600080fd5b82525081516020918201929091019080838360005b83811015620001775781810151838201526020016200015d565b50505050905090810190601f168015620001a55780820380516001836020036101000a031916815260200191505b5060405260200151600080546001600160a01b031916331781558551919350859250849184919062000211576040805162461bcd60e51b815260206004820152601060248201526f4552525f494e56414c49445f4e414d4560801b604482015290519081900360640190fd5b60008351116200025d576040805162461bcd60e51b815260206004820152601260248201527111549497d253959053125117d4d6535093d360721b604482015290519081900360640190fd5b835162000272906002906020870190620002bf565b50825162000288906003906020860190620002bf565b506004805460ff191660ff9390931692909217909155600581905533600090815260066020526040902055506200035b9350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030257805160ff191683800117855562000332565b8280016001018555821562000332579182015b828111156200033257825182559160200191906001019062000315565b506200034092915062000344565b5090565b5b8082111562000340576000815560010162000345565b610ec8806200036b6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806379ba5097116100ad578063a9059cbb11610071578063a9059cbb14610379578063bef97c87146103a5578063d4ee1d90146103ad578063dd62ed3e146103b5578063f2fde38b146103e357610121565b806379ba5097146102ed578063867904b4146102f55780638da5cb5b1461032157806395d89b4114610345578063a24835d11461034d57610121565b806323b872dd116100f457806323b872dd1461021e578063313ce5671461025457806354fd4d50146102725780635e35359e1461029157806370a08231146102c757610121565b806306fdde0314610126578063095ea7b3146101a35780631608f18f146101e357806318160ddd14610204575b600080fd5b61012e610409565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610168578181015183820152602001610150565b50505050905090810190601f1680156101955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101cf600480360360408110156101b957600080fd5b506001600160a01b038135169060200135610494565b604080519115158252519081900360200190f35b610202600480360360208110156101f957600080fd5b5035151561057c565b005b61020c610596565b60408051918252519081900360200190f35b6101cf6004803603606081101561023457600080fd5b506001600160a01b0381358116916020810135909116906040013561059c565b61025c6105b9565b6040805160ff9092168252519081900360200190f35b61027a6105c2565b6040805161ffff9092168252519081900360200190f35b610202600480360360608110156102a757600080fd5b506001600160a01b038135811691602081013590911690604001356105c7565b61020c600480360360208110156102dd57600080fd5b50356001600160a01b0316610600565b610202610612565b6102026004803603604081101561030b57600080fd5b506001600160a01b0381351690602001356106c9565b61032961079f565b604080516001600160a01b039092168252519081900360200190f35b61012e6107ae565b6102026004803603604081101561036357600080fd5b506001600160a01b038135169060200135610809565b6101cf6004803603604081101561038f57600080fd5b506001600160a01b0381351690602001356108c3565b6101cf6108de565b6103296108e7565b61020c600480360360408110156103cb57600080fd5b506001600160a01b03813581169160200135166108f6565b610202600480360360208110156103f957600080fd5b50356001600160a01b0316610913565b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561048c5780601f106104615761010080835404028352916020019161048c565b820191906000526020600020905b81548152906001019060200180831161046f57829003601f168201915b505050505081565b6000826104a081610991565b8215806104ce57503360009081526007602090815260408083206001600160a01b0388168452909152902054155b610514576040805162461bcd60e51b815260206004820152601260248201527111549497d253959053125117d05353d5539560721b604482015290519081900360640190fd5b3360008181526007602090815260408083206001600160a01b03891680855290835292819020879055805187815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6105846109e5565b6008805460ff19169115919091179055565b60055481565b60006105a6610a3a565b6105b1848484610a8a565b949350505050565b60045460ff1681565b600481565b6105cf6109e5565b826105d981610991565b826105e381610991565b836105ed81610b89565b6105f8868686610bdd565b505050505050565b60066020526000908152604090205481565b6001546001600160a01b03163314610665576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6106d16109e5565b816106db81610991565b826106e581610b89565b6005546106f29084610d3d565b6005556001600160a01b0384166000908152600660205260409020546107189084610d3d565b6001600160a01b03851660009081526006602090815260409182902092909255805185815290517f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3929181900390910190a16040805184815290516001600160a01b03861691600091600080516020610e738339815191529181900360200190a350505050565b6000546001600160a01b031681565b6003805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561048c5780601f106104615761010080835404028352916020019161048c565b6108116109e5565b6001600160a01b0382166000908152600660205260409020546108349082610d86565b6001600160a01b03831660009081526006602052604090205560055461085a9082610d86565b6005556040805182815290516000916001600160a01b03851691600080516020610e738339815191529181900360200190a36040805182815290517f9a1b418bc061a5d80270261562e6986a35d995f8051145f277be16103abd34539181900360200190a15050565b60006108cd610a3a565b6108d78383610dd3565b9392505050565b60085460ff1681565b6001546001600160a01b031681565b600760209081526000928352604080842090915290825290205481565b61091b6109e5565b6000546001600160a01b038281169116141561096f576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166109e2576040805162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b604482015290519081900360640190fd5b50565b6000546001600160a01b03163314610a38576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b60085460ff16610a38576040805162461bcd60e51b815260206004820152601660248201527511549497d514905394d1915494d7d11254d05093115160521b604482015290519081900360640190fd5b600083610a9681610991565b83610aa081610991565b6001600160a01b0386166000908152600760209081526040808320338452909152902054610ace9085610d86565b6001600160a01b038716600081815260076020908152604080832033845282528083209490945591815260069091522054610b099085610d86565b6001600160a01b038088166000908152600660205260408082209390935590871681522054610b389085610d3d565b6001600160a01b0380871660008181526006602090815260409182902094909455805188815290519193928a1692600080516020610e7383398151915292918290030190a350600195945050505050565b6001600160a01b0381163014156109e2576040805162461bcd60e51b815260206004820152601360248201527222a9292fa0a2222922a9a9afa4a9afa9a2a62360691b604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310610c5a5780518252601f199092019160209182019101610c3b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610cbc576040519150601f19603f3d011682016040523d82523d6000602084013e610cc1565b606091505b5091509150818015610cef575080511580610cef5750808060200190516020811015610cec57600080fd5b50515b610d36576040805162461bcd60e51b815260206004820152601360248201527211549497d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b5050505050565b6000828201838110156108d7576040805162461bcd60e51b815260206004820152600c60248201526b4552525f4f564552464c4f5760a01b604482015290519081900360640190fd5b600081831015610dcd576040805162461bcd60e51b815260206004820152600d60248201526c4552525f554e444552464c4f5760981b604482015290519081900360640190fd5b50900390565b600082610ddf81610991565b33600090815260066020526040902054610df99084610d86565b33600090815260066020526040808220929092556001600160a01b03861681522054610e259084610d3d565b6001600160a01b038516600081815260066020908152604091829020939093558051868152905191923392600080516020610e738339815191529281900390910190a3506001939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d062eb319db2db22c11903c935b69a66b9513479c3c65c965f0b19eb73aa4f9464736f6c634300060c0033a26469706673582212204f09fb1778cc831abb7f873219dbed978e552fc8cd81237b1adc3e5d9ff2530f64736f6c634300060c0033",
"immutableReferences": {},
"sourceMap": "592:3348:32:-:0;;;1382:329;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1382:329:32;;;;;;;;;;-1:-1:-1;1382:329:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1382:329:32;;;;;;;;;;-1:-1:-1;1382:329:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1382:329:32;;;;;619:5:58;:18;;-1:-1:-1;;;;;;619:18:58;627:10;619:18;;;1509:19:32;;1382:329;;-1:-1:-1;1509:23:32;;;-1:-1:-1;1501:52:32;;;;;-1:-1:-1;;;1501:52:32;;;;;;;;;;;;-1:-1:-1;;;1501:52:32;;;;;;;;;;;;;;;1596:1;1578:7;1572:21;:25;1564:56;;;;;-1:-1:-1;;;1564:56:32;;;;;;;;;;;;-1:-1:-1;;;1564:56:32;;;;;;;;;;;;;;;1633:12;;;;:4;;:12;;;;;:::i;:::-;-1:-1:-1;1656:16:32;;;;:6;;:16;;;;;:::i;:::-;-1:-1:-1;1683:8:32;:20;;-1:-1:-1;;1683:20:32;;;;;;;;;;;;-1:-1:-1;592:3348:32;;-1:-1:-1;592:3348:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;592:3348:32;;;-1:-1:-1;592:3348:32;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;",
"deployedSourceMap": "592:3348:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;767:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;877:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1196:290:63;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1196:290:63;;;;;;;;;;;;;;;;;:::i;:::-;;1828:113:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1422:217:58;;;:::i;219:29::-;;;:::i;:::-;;;;-1:-1:-1;;;;;219:29:58;;;;;;;;;;;;;;821:20:32;;;:::i;2078:530::-;;;:::i;2936:137::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2936:137:32;;;;;;;;;;;;;;;;;:::i;255:23:58:-;;;:::i;1164:167::-;;;;;;;;;;;;;;;;-1:-1:-1;1164:167:58;-1:-1:-1;;;;;1164:167:58;;:::i;3388:143:32:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3388:143:32;;;;;;;;;;;;;;;;;:::i;767:18::-;;;;;;;;;;;;;;-1:-1:-1;;767:18:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;877:21::-;;;;;;:::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;1828:113:32:-;1882:20;1922:11;1915:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1915:18:32;;;-1:-1:-1;1915:18:32;;;;;;;;;;;;;;;;;;;1828:113;:::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;219:29::-;;;-1:-1:-1;;;;;219:29:58;;:::o;821:20:32:-;;;;;;;;;;;;;;;-1:-1:-1;;821:20:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2078:530;2138:11;726:12:58;:10;:12::i;:::-;714:1:32::1;2223:18:::0;;:36:::1;2215:70;;;::::0;;-1:-1:-1;;;2215:70:32;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;2215:70:32;;;;;;;;;;;;;::::1;;2338:4;2323:51:::0;;::::1;::::0;;::::1;;::::0;::::1;;;;-1:-1:-1::0;;2323:51:32;;;::::1;::::0;;::::1;;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;2298:22:::1;::::0;2323:51:::1;::::0;;;2338:4;;2323:51;::::1;2338:4:::0;2323:51;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;2350:11:32::1;:18:::0;2371:1:::1;2350:22;::::0;-1:-1:-1;2323:14:32::1;::::0;-1:-1:-1;;2323:51:32:i:1;:::-;2427:6;2412:53:::0;;::::1;::::0;;::::1;;;::::0;::::1;;;;-1:-1:-1::0;;2412:53:32;;;::::1;::::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;2298:76;;-1:-1:-1;2385:24:32::1;::::0;2412:53:::1;::::0;;;2427:6;;2412:53;;::::1;2427:6:::0;2412:53;;::::1;;;;;;;;;;;;;;;;;;;;;;;2385:80;;2478:16;2512:8;2522:10;2534:8;;;;;;;;;;;2497:46;;;;;:::i;:::-;;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;;;;;::::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;2497:46:32;;::::1;::::0;;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;2554:11:32::1;:23:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;2554:23:32;;;;;::::1;::::0;;-1:-1:-1;;;;;;2554:23:32::1;-1:-1:-1::0;;;;;2554:23:32;::::1;;::::0;;;;-1:-1:-1;;;;2078:530:32:o;2936:137::-;726:12:58;:10;:12::i;:::-;3039:26:32::1;::::0;;-1:-1:-1;;;3039:26:32;;-1:-1:-1;;;;;3039:26:32;;::::1;;::::0;::::1;::::0;;;;;;;;;:12;;::::1;::::0;::::1;::::0;:26;;;;;-1:-1:-1;;3039:26:32;;;;;;;;-1:-1:-1;3039:12:32;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2936:137:::0;;;:::o;255:23:58:-;;;-1:-1:-1;;;;;255:23:58;;:::o;1164:167::-;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;3388:143:32:-;726:12:58;:10;:12::i;:::-;3493:30:32::1;::::0;;-1:-1:-1;;;3493:30:32;;-1:-1:-1;;;;;3493:30:32;;::::1;;::::0;::::1;::::0;;;;;;;;;:14;;::::1;::::0;::::1;::::0;:30;;;;;-1:-1:-1;;3493:30:32;;;;;;;;-1:-1:-1;3493:14:32;:30;::::1;;::::0;::::1;;;;::::0;::::1;813:104:58::0;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;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;1041:126::-;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;3757:180:32:-;3837:13;3894:4;3921:6;-1:-1:-1;;;3900:18:32;;:27;3877:51;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3877:51:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3863:66;;3757:180;;;;:::o;-1:-1:-1:-;;;;;;;;:::o",
"source": "// SPDX-License-Identifier: SEE LICENSE IN LICENSE\r\npragma solidity 0.6.12;\r\nimport \"./interfaces/IPoolTokensContainer.sol\";\r\nimport \"../../../utility/Owned.sol\";\r\nimport \"../../../utility/TokenHolder.sol\";\r\nimport \"../../../token/SmartToken.sol\";\r\n\r\n/**\r\n * @dev The PoolTokensContainer contract serves as a container for multiple pool tokens.\r\n * It is used by specific liquidity pool types that require more than a single pool token,\r\n * while still maintaining the single converter / anchor relationship.\r\n *\r\n * It maintains and provides a list of the underlying pool tokens.\r\n */\r\ncontract PoolTokensContainer is IPoolTokensContainer, Owned, TokenHolder {\r\n uint8 internal constant MAX_POOL_TOKENS = 5; // maximum pool tokens in the container\r\n\r\n string public name; // pool name\r\n string public symbol; // pool symbol\r\n uint8 public decimals; // underlying pool tokens decimals\r\n ISmartToken[] private _poolTokens; // underlying pool tokens\r\n\r\n /**\r\n * @dev initializes a new PoolTokensContainer instance\r\n *\r\n * @param _name pool name, also used as a prefix for the underlying pool token names\r\n * @param _symbol pool symbol, also used as a prefix for the underlying pool token symbols\r\n * @param _decimals used for the underlying pool token decimals\r\n */\r\n constructor(string memory _name, string memory _symbol, uint8 _decimals) public {\r\n // validate input\r\n require(bytes(_name).length > 0, \"ERR_INVALID_NAME\");\r\n require(bytes(_symbol).length > 0, \"ERR_INVALID_SYMBOL\");\r\n\r\n name = _name;\r\n symbol = _symbol;\r\n decimals = _decimals;\r\n }\r\n\r\n /**\r\n * @dev returns the list of pool tokens\r\n *\r\n * @return list of pool tokens\r\n */\r\n function poolTokens() external view override returns (ISmartToken[] memory) {\r\n return _poolTokens;\r\n }\r\n\r\n /**\r\n * @dev creates a new pool token and adds it to the list\r\n *\r\n * @return new pool token address\r\n */\r\n function createToken() external override ownerOnly returns (ISmartToken) {\r\n // verify that the max limit wasn't reached\r\n require(_poolTokens.length < MAX_POOL_TOKENS, \"ERR_MAX_LIMIT_REACHED\");\r\n\r\n string memory poolName = concatStrDigit(name, uint8(_poolTokens.length + 1));\r\n string memory poolSymbol = concatStrDigit(symbol, uint8(_poolTokens.length + 1));\r\n\r\n SmartToken token = new SmartToken(poolName, poolSymbol, decimals);\r\n _poolTokens.push(token);\r\n return token;\r\n }\r\n\r\n /**\r\n * @dev increases the pool 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 _token pool token address\r\n * @param _to account to receive the newly minted tokens\r\n * @param _amount amount to mint\r\n */\r\n function mint(ISmartToken _token, address _to, uint256 _amount) external override ownerOnly {\r\n _token.issue(_to, _amount);\r\n }\r\n\r\n /**\r\n * @dev removes tokens from the given account and decreases the pool token supply\r\n * can only be called by the contract owner\r\n *\r\n * @param _token pool token address\r\n * @param _from account to remove the tokens from\r\n * @param _amount amount to burn\r\n */\r\n function burn(ISmartToken _token, address _from, uint256 _amount) external override ownerOnly {\r\n _token.destroy(_from, _amount);\r\n }\r\n\r\n /**\r\n * @dev concatenates a string and a digit (single only) and returns the result string\r\n *\r\n * @param _str string\r\n * @param _digit digit\r\n * @return concatenated string\r\n */\r\n function concatStrDigit(string memory _str, uint8 _digit) private pure returns (string memory) {\r\n return string(abi.encodePacked(_str, uint8(bytes1('0')) + _digit));\r\n }\r\n}\r\n",
"sourcePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/types/liquidity-pool-v2/PoolTokensContainer.sol",
"ast": {
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/types/liquidity-pool-v2/PoolTokensContainer.sol",
"exportedSymbols": {
"PoolTokensContainer": [
18724
]
},
"id": 18725,
"license": "SEE LICENSE IN LICENSE",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 18513,
"literals": [
"solidity",
"0.6",
".12"
],
"nodeType": "PragmaDirective",
"src": "52:23:32"
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/types/liquidity-pool-v2/interfaces/IPoolTokensContainer.sol",
"file": "./interfaces/IPoolTokensContainer.sol",
"id": 18514,
"nodeType": "ImportDirective",
"scope": 18725,
"sourceUnit": 18802,
"src": "77:47:32",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol",
"file": "../../../utility/Owned.sol",
"id": 18515,
"nodeType": "ImportDirective",
"scope": 18725,
"sourceUnit": 22154,
"src": "126:36:32",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHolder.sol",
"file": "../../../utility/TokenHolder.sol",
"id": 18516,
"nodeType": "ImportDirective",
"scope": 18725,
"sourceUnit": 22911,
"src": "164:42:32",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/SmartToken.sol",
"file": "../../../token/SmartToken.sol",
"id": 18517,
"nodeType": "ImportDirective",
"scope": 18725,
"sourceUnit": 21395,
"src": "208:39:32",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 18519,
"name": "IPoolTokensContainer",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 18801,
"src": "624:20:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolTokensContainer_$18801",
"typeString": "contract IPoolTokensContainer"
}
},
"id": 18520,
"nodeType": "InheritanceSpecifier",
"src": "624:20:32"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 18521,
"name": "Owned",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22153,
"src": "646:5:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Owned_$22153",
"typeString": "contract Owned"
}
},
"id": 18522,
"nodeType": "InheritanceSpecifier",
"src": "646:5:32"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 18523,
"name": "TokenHolder",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22910,
"src": "653:11:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_TokenHolder_$22910",
"typeString": "contract TokenHolder"
}
},
"id": 18524,
"nodeType": "InheritanceSpecifier",
"src": "653:11:32"
}
],
"contractDependencies": [
13349,
18801,
21394,
22153,
22861,
22910,
22996,
23182,
23242
],
"contractKind": "contract",
"documentation": {
"id": 18518,
"nodeType": "StructuredDocumentation",
"src": "251:339:32",
"text": " @dev The PoolTokensContainer contract serves as a container for multiple pool tokens.\n It is used by specific liquidity pool types that require more than a single pool token,\n while still maintaining the single converter / anchor relationship.\n It maintains and provides a list of the underlying pool tokens."
},
"fullyImplemented": true,
"id": 18724,
"linearizedBaseContracts": [
18724,
22910,
22996,
22153,
22861,
18801,
13349,
23242,
23182
],
"name": "PoolTokensContainer",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"id": 18527,
"mutability": "constant",
"name": "MAX_POOL_TOKENS",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18724,
"src": "672:43:32",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 18525,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "672:5:32",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": {
"argumentTypes": null,
"hexValue": "35",
"id": 18526,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "714:1:32",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_5_by_1",
"typeString": "int_const 5"
},
"value": "5"
},
"visibility": "internal"
},
{
"constant": false,
"functionSelector": "06fdde03",
"id": 18529,
"mutability": "mutable",
"name": "name",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18724,
"src": "767:18:32",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string"
},
"typeName": {
"id": 18528,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "767:6:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "95d89b41",
"id": 18531,
"mutability": "mutable",
"name": "symbol",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18724,
"src": "821:20:32",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string"
},
"typeName": {
"id": 18530,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "821:6:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "313ce567",
"id": 18533,
"mutability": "mutable",
"name": "decimals",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18724,
"src": "877:21:32",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 18532,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "877:5:32",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 18536,
"mutability": "mutable",
"name": "_poolTokens",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18724,
"src": "953:33:32",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage",
"typeString": "contract ISmartToken[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 18534,
"name": "ISmartToken",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21517,
"src": "953:11:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21517",
"typeString": "contract ISmartToken"
}
},
"id": 18535,
"length": null,
"nodeType": "ArrayTypeName",
"src": "953:13:32",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage_ptr",
"typeString": "contract ISmartToken[]"
}
},
"value": null,
"visibility": "private"
},
{
"body": {
"id": 18580,
"nodeType": "Block",
"src": "1462:249:32",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 18553,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 18549,
"name": "_name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18539,
"src": "1515:5:32",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 18548,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1509:5:32",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
"typeString": "type(bytes storage pointer)"
},
"typeName": {
"id": 18547,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "1509:5:32",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 18550,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1509:12:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 18551,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1509:19:32",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 18552,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1531:1:32",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1509:23:32",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f494e56414c49445f4e414d45",
"id": 18554,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1534:18:32",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246",
"typeString": "literal_string \"ERR_INVALID_NAME\""
},
"value": "ERR_INVALID_NAME"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246",
"typeString": "literal_string \"ERR_INVALID_NAME\""
}
],
"id": 18546,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1501:7:32",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 18555,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1501:52:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 18556,
"nodeType": "ExpressionStatement",
"src": "1501:52:32"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 18564,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 18560,
"name": "_symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18541,
"src": "1578:7:32",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 18559,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1572:5:32",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
"typeString": "type(bytes storage pointer)"
},
"typeName": {
"id": 18558,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "1572:5:32",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 18561,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1572:14:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 18562,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1572:21:32",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 18563,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1596:1:32",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1572:25:32",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f494e56414c49445f53594d424f4c",
"id": 18565,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1599:20:32",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8cbe13dffb618f268f4d803a75787a665744c462e7a6ba0f32e015df7f7a2fda",
"typeString": "literal_string \"ERR_INVALID_SYMBOL\""
},
"value": "ERR_INVALID_SYMBOL"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8cbe13dffb618f268f4d803a75787a665744c462e7a6ba0f32e015df7f7a2fda",
"typeString": "literal_string \"ERR_INVALID_SYMBOL\""
}
],
"id": 18557,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1564:7:32",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 18566,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1564:56:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 18567,
"nodeType": "ExpressionStatement",
"src": "1564:56:32"
},
{
"expression": {
"argumentTypes": null,
"id": 18570,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 18568,
"name": "name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18529,
"src": "1633:4:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 18569,
"name": "_name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18539,
"src": "1640:5:32",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"src": "1633:12:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"id": 18571,
"nodeType": "ExpressionStatement",
"src": "1633:12:32"
},
{
"expression": {
"argumentTypes": null,
"id": 18574,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 18572,
"name": "symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18531,
"src": "1656:6:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 18573,
"name": "_symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18541,
"src": "1665:7:32",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"src": "1656:16:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"id": 18575,
"nodeType": "ExpressionStatement",
"src": "1656:16:32"
},
{
"expression": {
"argumentTypes": null,
"id": 18578,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 18576,
"name": "decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18533,
"src": "1683:8:32",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 18577,
"name": "_decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18543,
"src": "1694:9:32",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "1683:20:32",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 18579,
"nodeType": "ExpressionStatement",
"src": "1683:20:32"
}
]
},
"documentation": {
"id": 18537,
"nodeType": "StructuredDocumentation",
"src": "1022:354:32",
"text": " @dev initializes a new PoolTokensContainer instance\n @param _name pool name, also used as a prefix for the underlying pool token names\n @param _symbol pool symbol, also used as a prefix for the underlying pool token symbols\n @param _decimals used for the underlying pool token decimals"
},
"id": 18581,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 18544,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 18539,
"mutability": "mutable",
"name": "_name",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18581,
"src": "1394:19:32",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 18538,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1394:6:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 18541,
"mutability": "mutable",
"name": "_symbol",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18581,
"src": "1415:21:32",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 18540,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1415:6:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 18543,
"mutability": "mutable",
"name": "_decimals",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18581,
"src": "1438:15:32",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 18542,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1438:5:32",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1393:61:32"
},
"returnParameters": {
"id": 18545,
"nodeType": "ParameterList",
"parameters": [],
"src": "1462:0:32"
},
"scope": 18724,
"src": "1382:329:32",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
18777
],
"body": {
"id": 18591,
"nodeType": "Block",
"src": "1904:37:32",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 18589,
"name": "_poolTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18536,
"src": "1922:11:32",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage",
"typeString": "contract ISmartToken[] storage ref"
}
},
"functionReturnParameters": 18588,
"id": 18590,
"nodeType": "Return",
"src": "1915:18:32"
}
]
},
"documentation": {
"id": 18582,
"nodeType": "StructuredDocumentation",
"src": "1719:103:32",
"text": " @dev returns the list of pool tokens\n @return list of pool tokens"
},
"functionSelector": "6d3e313e",
"id": 18592,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "poolTokens",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 18584,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "1864:8:32"
},
"parameters": {
"id": 18583,
"nodeType": "ParameterList",
"parameters": [],
"src": "1847:2:32"
},
"returnParameters": {
"id": 18588,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 18587,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18592,
"src": "1882:20:32",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_memory_ptr",
"typeString": "contract ISmartToken[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 18585,
"name": "ISmartToken",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21517,
"src": "1882:11:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21517",
"typeString": "contract ISmartToken"
}
},
"id": 18586,
"length": null,
"nodeType": "ArrayTypeName",
"src": "1882:13:32",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage_ptr",
"typeString": "contract ISmartToken[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1881:22:32"
},
"scope": 18724,
"src": "1828:113:32",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
18782
],
"body": {
"id": 18652,
"nodeType": "Block",
"src": "2151:457:32",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 18605,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 18602,
"name": "_poolTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18536,
"src": "2223:11:32",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage",
"typeString": "contract ISmartToken[] storage ref"
}
},
"id": 18603,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2223:18:32",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 18604,
"name": "MAX_POOL_TOKENS",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18527,
"src": "2244:15:32",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "2223:36:32",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f4d41585f4c494d49545f52454143484544",
"id": 18606,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2261:23:32",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_65600c00f67ab34f2203e92774a46e26e7dd32d8502d3f07241456a23d1290f8",
"typeString": "literal_string \"ERR_MAX_LIMIT_REACHED\""
},
"value": "ERR_MAX_LIMIT_REACHED"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_65600c00f67ab34f2203e92774a46e26e7dd32d8502d3f07241456a23d1290f8",
"typeString": "literal_string \"ERR_MAX_LIMIT_REACHED\""
}
],
"id": 18601,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2215:7:32",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 18607,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2215:70:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 18608,
"nodeType": "ExpressionStatement",
"src": "2215:70:32"
},
{
"assignments": [
18610
],
"declarations": [
{
"constant": false,
"id": 18610,
"mutability": "mutable",
"name": "poolName",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18652,
"src": "2298:22:32",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 18609,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2298:6:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 18621,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 18612,
"name": "name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18529,
"src": "2338:4:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 18618,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 18615,
"name": "_poolTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18536,
"src": "2350:11:32",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage",
"typeString": "contract ISmartToken[] storage ref"
}
},
"id": 18616,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2350:18:32",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 18617,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2371:1:32",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "2350:22:32",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 18614,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2344:5:32",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint8_$",
"typeString": "type(uint8)"
},
"typeName": {
"id": 18613,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2344:5:32",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 18619,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2344:29:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 18611,
"name": "concatStrDigit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18723,
"src": "2323:14:32",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint8_$returns$_t_string_memory_ptr_$",
"typeString": "function (string memory,uint8) pure returns (string memory)"
}
},
"id": 18620,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2323:51:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2298:76:32"
},
{
"assignments": [
18623
],
"declarations": [
{
"constant": false,
"id": 18623,
"mutability": "mutable",
"name": "poolSymbol",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18652,
"src": "2385:24:32",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 18622,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2385:6:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 18634,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 18625,
"name": "symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18531,
"src": "2427:6:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 18631,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 18628,
"name": "_poolTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18536,
"src": "2441:11:32",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage",
"typeString": "contract ISmartToken[] storage ref"
}
},
"id": 18629,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2441:18:32",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 18630,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2462:1:32",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "2441:22:32",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 18627,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2435:5:32",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint8_$",
"typeString": "type(uint8)"
},
"typeName": {
"id": 18626,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2435:5:32",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 18632,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2435:29:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 18624,
"name": "concatStrDigit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18723,
"src": "2412:14:32",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint8_$returns$_t_string_memory_ptr_$",
"typeString": "function (string memory,uint8) pure returns (string memory)"
}
},
"id": 18633,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2412:53:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2385:80:32"
},
{
"assignments": [
18636
],
"declarations": [
{
"constant": false,
"id": 18636,
"mutability": "mutable",
"name": "token",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18652,
"src": "2478:16:32",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SmartToken_$21394",
"typeString": "contract SmartToken"
},
"typeName": {
"contractScope": null,
"id": 18635,
"name": "SmartToken",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21394,
"src": "2478:10:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SmartToken_$21394",
"typeString": "contract SmartToken"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 18643,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 18639,
"name": "poolName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18610,
"src": "2512:8:32",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"id": 18640,
"name": "poolSymbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18623,
"src": "2522:10:32",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"id": 18641,
"name": "decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18533,
"src": "2534:8:32",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 18638,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "2497:14:32",
"typeDescriptions": {
"typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_contract$_SmartToken_$21394_$",
"typeString": "function (string memory,string memory,uint8) returns (contract SmartToken)"
},
"typeName": {
"contractScope": null,
"id": 18637,
"name": "SmartToken",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21394,
"src": "2501:10:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SmartToken_$21394",
"typeString": "contract SmartToken"
}
}
},
"id": 18642,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2497:46:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_SmartToken_$21394",
"typeString": "contract SmartToken"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2478:65:32"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 18647,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18636,
"src": "2571:5:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SmartToken_$21394",
"typeString": "contract SmartToken"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_SmartToken_$21394",
"typeString": "contract SmartToken"
}
],
"expression": {
"argumentTypes": null,
"id": 18644,
"name": "_poolTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18536,
"src": "2554:11:32",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage",
"typeString": "contract ISmartToken[] storage ref"
}
},
"id": 18646,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "push",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2554:16:32",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_ISmartToken_$21517_$returns$__$",
"typeString": "function (contract ISmartToken)"
}
},
"id": 18648,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2554:23:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 18649,
"nodeType": "ExpressionStatement",
"src": "2554:23:32"
},
{
"expression": {
"argumentTypes": null,
"id": 18650,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18636,
"src": "2595:5:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SmartToken_$21394",
"typeString": "contract SmartToken"
}
},
"functionReturnParameters": 18600,
"id": 18651,
"nodeType": "Return",
"src": "2588:12:32"
}
]
},
"documentation": {
"id": 18593,
"nodeType": "StructuredDocumentation",
"src": "1949:123:32",
"text": " @dev creates a new pool token and adds it to the list\n @return new pool token address"
},
"functionSelector": "9cbf9e36",
"id": 18653,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 18597,
"modifierName": {
"argumentTypes": null,
"id": 18596,
"name": "ownerOnly",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22089,
"src": "2119:9:32",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "2119:9:32"
}
],
"name": "createToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 18595,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2110:8:32"
},
"parameters": {
"id": 18594,
"nodeType": "ParameterList",
"parameters": [],
"src": "2098:2:32"
},
"returnParameters": {
"id": 18600,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 18599,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18653,
"src": "2138:11:32",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21517",
"typeString": "contract ISmartToken"
},
"typeName": {
"contractScope": null,
"id": 18598,
"name": "ISmartToken",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21517,
"src": "2138:11:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21517",
"typeString": "contract ISmartToken"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2137:13:32"
},
"scope": 18724,
"src": "2078:530:32",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
18791
],
"body": {
"id": 18673,
"nodeType": "Block",
"src": "3028:45:32",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 18669,
"name": "_to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18658,
"src": "3052:3:32",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 18670,
"name": "_amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18660,
"src": "3057:7:32",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 18666,
"name": "_token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18656,
"src": "3039:6:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21517",
"typeString": "contract ISmartToken"
}
},
"id": 18668,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "issue",
"nodeType": "MemberAccess",
"referencedDeclaration": 21509,
"src": "3039:12:32",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256) external"
}
},
"id": 18671,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3039:26:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 18672,
"nodeType": "ExpressionStatement",
"src": "3039:26:32"
}
]
},
"documentation": {
"id": 18654,
"nodeType": "StructuredDocumentation",
"src": "2616:314:32",
"text": " @dev increases the pool token supply and sends the new tokens to the given account\n can only be called by the contract owner\n @param _token pool token address\n @param _to account to receive the newly minted tokens\n @param _amount amount to mint"
},
"functionSelector": "c6c3bbe6",
"id": 18674,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 18664,
"modifierName": {
"argumentTypes": null,
"id": 18663,
"name": "ownerOnly",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22089,
"src": "3018:9:32",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3018:9:32"
}
],
"name": "mint",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 18662,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "3009:8:32"
},
"parameters": {
"id": 18661,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 18656,
"mutability": "mutable",
"name": "_token",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18674,
"src": "2950:18:32",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21517",
"typeString": "contract ISmartToken"
},
"typeName": {
"contractScope": null,
"id": 18655,
"name": "ISmartToken",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21517,
"src": "2950:11:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21517",
"typeString": "contract ISmartToken"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 18658,
"mutability": "mutable",
"name": "_to",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18674,
"src": "2970:11:32",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 18657,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2970:7:32",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 18660,
"mutability": "mutable",
"name": "_amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18674,
"src": "2983:15:32",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 18659,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2983:7:32",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2949:50:32"
},
"returnParameters": {
"id": 18665,
"nodeType": "ParameterList",
"parameters": [],
"src": "3028:0:32"
},
"scope": 18724,
"src": "2936:137:32",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
18800
],
"body": {
"id": 18694,
"nodeType": "Block",
"src": "3482:49:32",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 18690,
"name": "_from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18679,
"src": "3508:5:32",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 18691,
"name": "_amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18681,
"src": "3515:7:32",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 18687,
"name": "_token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18677,
"src": "3493:6:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21517",
"typeString": "contract ISmartToken"
}
},
"id": 18689,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "destroy",
"nodeType": "MemberAccess",
"referencedDeclaration": 21516,
"src": "3493:14:32",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256) external"
}
},
"id": 18692,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3493:30:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 18693,
"nodeType": "ExpressionStatement",
"src": "3493:30:32"
}
]
},
"documentation": {
"id": 18675,
"nodeType": "StructuredDocumentation",
"src": "3081:301:32",
"text": " @dev removes tokens from the given account and decreases the pool token supply\n can only be called by the contract owner\n @param _token pool token address\n @param _from account to remove the tokens from\n @param _amount amount to burn"
},
"functionSelector": "f6b911bc",
"id": 18695,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 18685,
"modifierName": {
"argumentTypes": null,
"id": 18684,
"name": "ownerOnly",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22089,
"src": "3472:9:32",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3472:9:32"
}
],
"name": "burn",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 18683,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "3463:8:32"
},
"parameters": {
"id": 18682,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 18677,
"mutability": "mutable",
"name": "_token",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18695,
"src": "3402:18:32",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21517",
"typeString": "contract ISmartToken"
},
"typeName": {
"contractScope": null,
"id": 18676,
"name": "ISmartToken",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21517,
"src": "3402:11:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21517",
"typeString": "contract ISmartToken"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 18679,
"mutability": "mutable",
"name": "_from",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18695,
"src": "3422:13:32",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 18678,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3422:7:32",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 18681,
"mutability": "mutable",
"name": "_amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18695,
"src": "3437:15:32",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 18680,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3437:7:32",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3401:52:32"
},
"returnParameters": {
"id": 18686,
"nodeType": "ParameterList",
"parameters": [],
"src": "3482:0:32"
},
"scope": 18724,
"src": "3388:143:32",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": {
"id": 18722,
"nodeType": "Block",
"src": "3852:85:32",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 18709,
"name": "_str",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18698,
"src": "3894:4:32",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 18718,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 18714,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3913:3:32",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
"typeString": "literal_string \"0\""
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
"typeString": "literal_string \"0\""
}
],
"id": 18713,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3906:6:32",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes1_$",
"typeString": "type(bytes1)"
},
"typeName": {
"id": 18712,
"name": "bytes1",
"nodeType": "ElementaryTypeName",
"src": "3906:6:32",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 18715,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3906:11:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
],
"id": 18711,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3900:5:32",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint8_$",
"typeString": "type(uint8)"
},
"typeName": {
"id": 18710,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3900:5:32",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 18716,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3900:18:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"id": 18717,
"name": "_digit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18700,
"src": "3921:6:32",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "3900:27:32",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"expression": {
"argumentTypes": null,
"id": 18707,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "3877:3:32",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 18708,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3877:16:32",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 18719,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3877:51:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 18706,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3870:6:32",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_string_storage_ptr_$",
"typeString": "type(string storage pointer)"
},
"typeName": {
"id": 18705,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "3870:6:32",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 18720,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3870:59:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"functionReturnParameters": 18704,
"id": 18721,
"nodeType": "Return",
"src": "3863:66:32"
}
]
},
"documentation": {
"id": 18696,
"nodeType": "StructuredDocumentation",
"src": "3539:212:32",
"text": " @dev concatenates a string and a digit (single only) and returns the result string\n @param _str string\n @param _digit digit\n @return concatenated string"
},
"id": 18723,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "concatStrDigit",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 18701,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 18698,
"mutability": "mutable",
"name": "_str",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18723,
"src": "3781:18:32",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 18697,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "3781:6:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 18700,
"mutability": "mutable",
"name": "_digit",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18723,
"src": "3801:12:32",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 18699,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3801:5:32",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3780:34:32"
},
"returnParameters": {
"id": 18704,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 18703,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18723,
"src": "3837:13:32",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 18702,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "3837:6:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3836:15:32"
},
"scope": 18724,
"src": "3757:180:32",
"stateMutability": "pure",
"virtual": false,
"visibility": "private"
}
],
"scope": 18725,
"src": "592:3348:32"
}
],
"src": "52:3890:32"
},
"legacyAST": {
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/types/liquidity-pool-v2/PoolTokensContainer.sol",
"exportedSymbols": {
"PoolTokensContainer": [
18724
]
},
"id": 18725,
"license": "SEE LICENSE IN LICENSE",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 18513,
"literals": [
"solidity",
"0.6",
".12"
],
"nodeType": "PragmaDirective",
"src": "52:23:32"
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/converter/types/liquidity-pool-v2/interfaces/IPoolTokensContainer.sol",
"file": "./interfaces/IPoolTokensContainer.sol",
"id": 18514,
"nodeType": "ImportDirective",
"scope": 18725,
"sourceUnit": 18802,
"src": "77:47:32",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol",
"file": "../../../utility/Owned.sol",
"id": 18515,
"nodeType": "ImportDirective",
"scope": 18725,
"sourceUnit": 22154,
"src": "126:36:32",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/TokenHolder.sol",
"file": "../../../utility/TokenHolder.sol",
"id": 18516,
"nodeType": "ImportDirective",
"scope": 18725,
"sourceUnit": 22911,
"src": "164:42:32",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/token/SmartToken.sol",
"file": "../../../token/SmartToken.sol",
"id": 18517,
"nodeType": "ImportDirective",
"scope": 18725,
"sourceUnit": 21395,
"src": "208:39:32",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 18519,
"name": "IPoolTokensContainer",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 18801,
"src": "624:20:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolTokensContainer_$18801",
"typeString": "contract IPoolTokensContainer"
}
},
"id": 18520,
"nodeType": "InheritanceSpecifier",
"src": "624:20:32"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 18521,
"name": "Owned",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22153,
"src": "646:5:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Owned_$22153",
"typeString": "contract Owned"
}
},
"id": 18522,
"nodeType": "InheritanceSpecifier",
"src": "646:5:32"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 18523,
"name": "TokenHolder",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22910,
"src": "653:11:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_TokenHolder_$22910",
"typeString": "contract TokenHolder"
}
},
"id": 18524,
"nodeType": "InheritanceSpecifier",
"src": "653:11:32"
}
],
"contractDependencies": [
13349,
18801,
21394,
22153,
22861,
22910,
22996,
23182,
23242
],
"contractKind": "contract",
"documentation": {
"id": 18518,
"nodeType": "StructuredDocumentation",
"src": "251:339:32",
"text": " @dev The PoolTokensContainer contract serves as a container for multiple pool tokens.\n It is used by specific liquidity pool types that require more than a single pool token,\n while still maintaining the single converter / anchor relationship.\n It maintains and provides a list of the underlying pool tokens."
},
"fullyImplemented": true,
"id": 18724,
"linearizedBaseContracts": [
18724,
22910,
22996,
22153,
22861,
18801,
13349,
23242,
23182
],
"name": "PoolTokensContainer",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"id": 18527,
"mutability": "constant",
"name": "MAX_POOL_TOKENS",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18724,
"src": "672:43:32",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 18525,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "672:5:32",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": {
"argumentTypes": null,
"hexValue": "35",
"id": 18526,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "714:1:32",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_5_by_1",
"typeString": "int_const 5"
},
"value": "5"
},
"visibility": "internal"
},
{
"constant": false,
"functionSelector": "06fdde03",
"id": 18529,
"mutability": "mutable",
"name": "name",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18724,
"src": "767:18:32",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string"
},
"typeName": {
"id": 18528,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "767:6:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "95d89b41",
"id": 18531,
"mutability": "mutable",
"name": "symbol",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18724,
"src": "821:20:32",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string"
},
"typeName": {
"id": 18530,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "821:6:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "313ce567",
"id": 18533,
"mutability": "mutable",
"name": "decimals",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18724,
"src": "877:21:32",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 18532,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "877:5:32",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 18536,
"mutability": "mutable",
"name": "_poolTokens",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18724,
"src": "953:33:32",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage",
"typeString": "contract ISmartToken[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 18534,
"name": "ISmartToken",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21517,
"src": "953:11:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21517",
"typeString": "contract ISmartToken"
}
},
"id": 18535,
"length": null,
"nodeType": "ArrayTypeName",
"src": "953:13:32",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage_ptr",
"typeString": "contract ISmartToken[]"
}
},
"value": null,
"visibility": "private"
},
{
"body": {
"id": 18580,
"nodeType": "Block",
"src": "1462:249:32",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 18553,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 18549,
"name": "_name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18539,
"src": "1515:5:32",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 18548,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1509:5:32",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
"typeString": "type(bytes storage pointer)"
},
"typeName": {
"id": 18547,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "1509:5:32",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 18550,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1509:12:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 18551,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1509:19:32",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 18552,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1531:1:32",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1509:23:32",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f494e56414c49445f4e414d45",
"id": 18554,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1534:18:32",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246",
"typeString": "literal_string \"ERR_INVALID_NAME\""
},
"value": "ERR_INVALID_NAME"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246",
"typeString": "literal_string \"ERR_INVALID_NAME\""
}
],
"id": 18546,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1501:7:32",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 18555,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1501:52:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 18556,
"nodeType": "ExpressionStatement",
"src": "1501:52:32"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 18564,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 18560,
"name": "_symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18541,
"src": "1578:7:32",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 18559,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1572:5:32",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
"typeString": "type(bytes storage pointer)"
},
"typeName": {
"id": 18558,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "1572:5:32",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 18561,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1572:14:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 18562,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1572:21:32",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 18563,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1596:1:32",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1572:25:32",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f494e56414c49445f53594d424f4c",
"id": 18565,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1599:20:32",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8cbe13dffb618f268f4d803a75787a665744c462e7a6ba0f32e015df7f7a2fda",
"typeString": "literal_string \"ERR_INVALID_SYMBOL\""
},
"value": "ERR_INVALID_SYMBOL"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8cbe13dffb618f268f4d803a75787a665744c462e7a6ba0f32e015df7f7a2fda",
"typeString": "literal_string \"ERR_INVALID_SYMBOL\""
}
],
"id": 18557,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1564:7:32",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 18566,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1564:56:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 18567,
"nodeType": "ExpressionStatement",
"src": "1564:56:32"
},
{
"expression": {
"argumentTypes": null,
"id": 18570,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 18568,
"name": "name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18529,
"src": "1633:4:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 18569,
"name": "_name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18539,
"src": "1640:5:32",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"src": "1633:12:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"id": 18571,
"nodeType": "ExpressionStatement",
"src": "1633:12:32"
},
{
"expression": {
"argumentTypes": null,
"id": 18574,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 18572,
"name": "symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18531,
"src": "1656:6:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 18573,
"name": "_symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18541,
"src": "1665:7:32",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"src": "1656:16:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"id": 18575,
"nodeType": "ExpressionStatement",
"src": "1656:16:32"
},
{
"expression": {
"argumentTypes": null,
"id": 18578,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 18576,
"name": "decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18533,
"src": "1683:8:32",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 18577,
"name": "_decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18543,
"src": "1694:9:32",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "1683:20:32",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 18579,
"nodeType": "ExpressionStatement",
"src": "1683:20:32"
}
]
},
"documentation": {
"id": 18537,
"nodeType": "StructuredDocumentation",
"src": "1022:354:32",
"text": " @dev initializes a new PoolTokensContainer instance\n @param _name pool name, also used as a prefix for the underlying pool token names\n @param _symbol pool symbol, also used as a prefix for the underlying pool token symbols\n @param _decimals used for the underlying pool token decimals"
},
"id": 18581,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 18544,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 18539,
"mutability": "mutable",
"name": "_name",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18581,
"src": "1394:19:32",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 18538,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1394:6:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 18541,
"mutability": "mutable",
"name": "_symbol",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18581,
"src": "1415:21:32",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 18540,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1415:6:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 18543,
"mutability": "mutable",
"name": "_decimals",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18581,
"src": "1438:15:32",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 18542,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1438:5:32",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1393:61:32"
},
"returnParameters": {
"id": 18545,
"nodeType": "ParameterList",
"parameters": [],
"src": "1462:0:32"
},
"scope": 18724,
"src": "1382:329:32",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
18777
],
"body": {
"id": 18591,
"nodeType": "Block",
"src": "1904:37:32",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 18589,
"name": "_poolTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18536,
"src": "1922:11:32",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage",
"typeString": "contract ISmartToken[] storage ref"
}
},
"functionReturnParameters": 18588,
"id": 18590,
"nodeType": "Return",
"src": "1915:18:32"
}
]
},
"documentation": {
"id": 18582,
"nodeType": "StructuredDocumentation",
"src": "1719:103:32",
"text": " @dev returns the list of pool tokens\n @return list of pool tokens"
},
"functionSelector": "6d3e313e",
"id": 18592,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "poolTokens",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 18584,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "1864:8:32"
},
"parameters": {
"id": 18583,
"nodeType": "ParameterList",
"parameters": [],
"src": "1847:2:32"
},
"returnParameters": {
"id": 18588,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 18587,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18592,
"src": "1882:20:32",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_memory_ptr",
"typeString": "contract ISmartToken[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 18585,
"name": "ISmartToken",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21517,
"src": "1882:11:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21517",
"typeString": "contract ISmartToken"
}
},
"id": 18586,
"length": null,
"nodeType": "ArrayTypeName",
"src": "1882:13:32",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage_ptr",
"typeString": "contract ISmartToken[]"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1881:22:32"
},
"scope": 18724,
"src": "1828:113:32",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
18782
],
"body": {
"id": 18652,
"nodeType": "Block",
"src": "2151:457:32",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 18605,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 18602,
"name": "_poolTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18536,
"src": "2223:11:32",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage",
"typeString": "contract ISmartToken[] storage ref"
}
},
"id": 18603,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2223:18:32",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 18604,
"name": "MAX_POOL_TOKENS",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18527,
"src": "2244:15:32",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "2223:36:32",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f4d41585f4c494d49545f52454143484544",
"id": 18606,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2261:23:32",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_65600c00f67ab34f2203e92774a46e26e7dd32d8502d3f07241456a23d1290f8",
"typeString": "literal_string \"ERR_MAX_LIMIT_REACHED\""
},
"value": "ERR_MAX_LIMIT_REACHED"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_65600c00f67ab34f2203e92774a46e26e7dd32d8502d3f07241456a23d1290f8",
"typeString": "literal_string \"ERR_MAX_LIMIT_REACHED\""
}
],
"id": 18601,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2215:7:32",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 18607,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2215:70:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 18608,
"nodeType": "ExpressionStatement",
"src": "2215:70:32"
},
{
"assignments": [
18610
],
"declarations": [
{
"constant": false,
"id": 18610,
"mutability": "mutable",
"name": "poolName",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18652,
"src": "2298:22:32",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 18609,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2298:6:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 18621,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 18612,
"name": "name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18529,
"src": "2338:4:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 18618,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 18615,
"name": "_poolTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18536,
"src": "2350:11:32",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage",
"typeString": "contract ISmartToken[] storage ref"
}
},
"id": 18616,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2350:18:32",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 18617,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2371:1:32",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "2350:22:32",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 18614,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2344:5:32",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint8_$",
"typeString": "type(uint8)"
},
"typeName": {
"id": 18613,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2344:5:32",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 18619,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2344:29:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 18611,
"name": "concatStrDigit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18723,
"src": "2323:14:32",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint8_$returns$_t_string_memory_ptr_$",
"typeString": "function (string memory,uint8) pure returns (string memory)"
}
},
"id": 18620,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2323:51:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2298:76:32"
},
{
"assignments": [
18623
],
"declarations": [
{
"constant": false,
"id": 18623,
"mutability": "mutable",
"name": "poolSymbol",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18652,
"src": "2385:24:32",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 18622,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "2385:6:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 18634,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 18625,
"name": "symbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18531,
"src": "2427:6:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 18631,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 18628,
"name": "_poolTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18536,
"src": "2441:11:32",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage",
"typeString": "contract ISmartToken[] storage ref"
}
},
"id": 18629,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2441:18:32",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 18630,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2462:1:32",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "2441:22:32",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 18627,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2435:5:32",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint8_$",
"typeString": "type(uint8)"
},
"typeName": {
"id": 18626,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2435:5:32",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 18632,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2435:29:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 18624,
"name": "concatStrDigit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18723,
"src": "2412:14:32",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint8_$returns$_t_string_memory_ptr_$",
"typeString": "function (string memory,uint8) pure returns (string memory)"
}
},
"id": 18633,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2412:53:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2385:80:32"
},
{
"assignments": [
18636
],
"declarations": [
{
"constant": false,
"id": 18636,
"mutability": "mutable",
"name": "token",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18652,
"src": "2478:16:32",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SmartToken_$21394",
"typeString": "contract SmartToken"
},
"typeName": {
"contractScope": null,
"id": 18635,
"name": "SmartToken",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21394,
"src": "2478:10:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SmartToken_$21394",
"typeString": "contract SmartToken"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 18643,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 18639,
"name": "poolName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18610,
"src": "2512:8:32",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"id": 18640,
"name": "poolSymbol",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18623,
"src": "2522:10:32",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"id": 18641,
"name": "decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18533,
"src": "2534:8:32",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 18638,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "2497:14:32",
"typeDescriptions": {
"typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_contract$_SmartToken_$21394_$",
"typeString": "function (string memory,string memory,uint8) returns (contract SmartToken)"
},
"typeName": {
"contractScope": null,
"id": 18637,
"name": "SmartToken",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21394,
"src": "2501:10:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SmartToken_$21394",
"typeString": "contract SmartToken"
}
}
},
"id": 18642,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2497:46:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_SmartToken_$21394",
"typeString": "contract SmartToken"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2478:65:32"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 18647,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18636,
"src": "2571:5:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SmartToken_$21394",
"typeString": "contract SmartToken"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_SmartToken_$21394",
"typeString": "contract SmartToken"
}
],
"expression": {
"argumentTypes": null,
"id": 18644,
"name": "_poolTokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18536,
"src": "2554:11:32",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_ISmartToken_$21517_$dyn_storage",
"typeString": "contract ISmartToken[] storage ref"
}
},
"id": 18646,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "push",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2554:16:32",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_ISmartToken_$21517_$returns$__$",
"typeString": "function (contract ISmartToken)"
}
},
"id": 18648,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2554:23:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 18649,
"nodeType": "ExpressionStatement",
"src": "2554:23:32"
},
{
"expression": {
"argumentTypes": null,
"id": 18650,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18636,
"src": "2595:5:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SmartToken_$21394",
"typeString": "contract SmartToken"
}
},
"functionReturnParameters": 18600,
"id": 18651,
"nodeType": "Return",
"src": "2588:12:32"
}
]
},
"documentation": {
"id": 18593,
"nodeType": "StructuredDocumentation",
"src": "1949:123:32",
"text": " @dev creates a new pool token and adds it to the list\n @return new pool token address"
},
"functionSelector": "9cbf9e36",
"id": 18653,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 18597,
"modifierName": {
"argumentTypes": null,
"id": 18596,
"name": "ownerOnly",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22089,
"src": "2119:9:32",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "2119:9:32"
}
],
"name": "createToken",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 18595,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2110:8:32"
},
"parameters": {
"id": 18594,
"nodeType": "ParameterList",
"parameters": [],
"src": "2098:2:32"
},
"returnParameters": {
"id": 18600,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 18599,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18653,
"src": "2138:11:32",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21517",
"typeString": "contract ISmartToken"
},
"typeName": {
"contractScope": null,
"id": 18598,
"name": "ISmartToken",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21517,
"src": "2138:11:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21517",
"typeString": "contract ISmartToken"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2137:13:32"
},
"scope": 18724,
"src": "2078:530:32",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
18791
],
"body": {
"id": 18673,
"nodeType": "Block",
"src": "3028:45:32",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 18669,
"name": "_to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18658,
"src": "3052:3:32",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 18670,
"name": "_amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18660,
"src": "3057:7:32",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 18666,
"name": "_token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18656,
"src": "3039:6:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21517",
"typeString": "contract ISmartToken"
}
},
"id": 18668,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "issue",
"nodeType": "MemberAccess",
"referencedDeclaration": 21509,
"src": "3039:12:32",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256) external"
}
},
"id": 18671,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3039:26:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 18672,
"nodeType": "ExpressionStatement",
"src": "3039:26:32"
}
]
},
"documentation": {
"id": 18654,
"nodeType": "StructuredDocumentation",
"src": "2616:314:32",
"text": " @dev increases the pool token supply and sends the new tokens to the given account\n can only be called by the contract owner\n @param _token pool token address\n @param _to account to receive the newly minted tokens\n @param _amount amount to mint"
},
"functionSelector": "c6c3bbe6",
"id": 18674,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 18664,
"modifierName": {
"argumentTypes": null,
"id": 18663,
"name": "ownerOnly",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22089,
"src": "3018:9:32",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3018:9:32"
}
],
"name": "mint",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 18662,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "3009:8:32"
},
"parameters": {
"id": 18661,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 18656,
"mutability": "mutable",
"name": "_token",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18674,
"src": "2950:18:32",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21517",
"typeString": "contract ISmartToken"
},
"typeName": {
"contractScope": null,
"id": 18655,
"name": "ISmartToken",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21517,
"src": "2950:11:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21517",
"typeString": "contract ISmartToken"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 18658,
"mutability": "mutable",
"name": "_to",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18674,
"src": "2970:11:32",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 18657,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2970:7:32",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 18660,
"mutability": "mutable",
"name": "_amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18674,
"src": "2983:15:32",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 18659,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2983:7:32",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2949:50:32"
},
"returnParameters": {
"id": 18665,
"nodeType": "ParameterList",
"parameters": [],
"src": "3028:0:32"
},
"scope": 18724,
"src": "2936:137:32",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"baseFunctions": [
18800
],
"body": {
"id": 18694,
"nodeType": "Block",
"src": "3482:49:32",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 18690,
"name": "_from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18679,
"src": "3508:5:32",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 18691,
"name": "_amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18681,
"src": "3515:7:32",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 18687,
"name": "_token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18677,
"src": "3493:6:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21517",
"typeString": "contract ISmartToken"
}
},
"id": 18689,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "destroy",
"nodeType": "MemberAccess",
"referencedDeclaration": 21516,
"src": "3493:14:32",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256) external"
}
},
"id": 18692,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3493:30:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 18693,
"nodeType": "ExpressionStatement",
"src": "3493:30:32"
}
]
},
"documentation": {
"id": 18675,
"nodeType": "StructuredDocumentation",
"src": "3081:301:32",
"text": " @dev removes tokens from the given account and decreases the pool token supply\n can only be called by the contract owner\n @param _token pool token address\n @param _from account to remove the tokens from\n @param _amount amount to burn"
},
"functionSelector": "f6b911bc",
"id": 18695,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 18685,
"modifierName": {
"argumentTypes": null,
"id": 18684,
"name": "ownerOnly",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22089,
"src": "3472:9:32",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3472:9:32"
}
],
"name": "burn",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 18683,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "3463:8:32"
},
"parameters": {
"id": 18682,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 18677,
"mutability": "mutable",
"name": "_token",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18695,
"src": "3402:18:32",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21517",
"typeString": "contract ISmartToken"
},
"typeName": {
"contractScope": null,
"id": 18676,
"name": "ISmartToken",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21517,
"src": "3402:11:32",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISmartToken_$21517",
"typeString": "contract ISmartToken"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 18679,
"mutability": "mutable",
"name": "_from",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18695,
"src": "3422:13:32",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 18678,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3422:7:32",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 18681,
"mutability": "mutable",
"name": "_amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18695,
"src": "3437:15:32",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 18680,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3437:7:32",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3401:52:32"
},
"returnParameters": {
"id": 18686,
"nodeType": "ParameterList",
"parameters": [],
"src": "3482:0:32"
},
"scope": 18724,
"src": "3388:143:32",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": {
"id": 18722,
"nodeType": "Block",
"src": "3852:85:32",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 18709,
"name": "_str",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18698,
"src": "3894:4:32",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 18718,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 18714,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3913:3:32",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
"typeString": "literal_string \"0\""
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
"typeString": "literal_string \"0\""
}
],
"id": 18713,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3906:6:32",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes1_$",
"typeString": "type(bytes1)"
},
"typeName": {
"id": 18712,
"name": "bytes1",
"nodeType": "ElementaryTypeName",
"src": "3906:6:32",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 18715,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3906:11:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
],
"id": 18711,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3900:5:32",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint8_$",
"typeString": "type(uint8)"
},
"typeName": {
"id": 18710,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3900:5:32",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 18716,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3900:18:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"id": 18717,
"name": "_digit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18700,
"src": "3921:6:32",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "3900:27:32",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"expression": {
"argumentTypes": null,
"id": 18707,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "3877:3:32",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 18708,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3877:16:32",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 18719,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3877:51:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 18706,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3870:6:32",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_string_storage_ptr_$",
"typeString": "type(string storage pointer)"
},
"typeName": {
"id": 18705,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "3870:6:32",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 18720,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3870:59:32",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"functionReturnParameters": 18704,
"id": 18721,
"nodeType": "Return",
"src": "3863:66:32"
}
]
},
"documentation": {
"id": 18696,
"nodeType": "StructuredDocumentation",
"src": "3539:212:32",
"text": " @dev concatenates a string and a digit (single only) and returns the result string\n @param _str string\n @param _digit digit\n @return concatenated string"
},
"id": 18723,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "concatStrDigit",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 18701,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 18698,
"mutability": "mutable",
"name": "_str",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18723,
"src": "3781:18:32",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 18697,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "3781:6:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 18700,
"mutability": "mutable",
"name": "_digit",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18723,
"src": "3801:12:32",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 18699,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3801:5:32",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3780:34:32"
},
"returnParameters": {
"id": 18704,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 18703,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 18723,
"src": "3837:13:32",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 18702,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "3837:6:32",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3836:15:32"
},
"scope": 18724,
"src": "3757:180:32",
"stateMutability": "pure",
"virtual": false,
"visibility": "private"
}
],
"scope": 18725,
"src": "592:3348:32"
}
],
"src": "52:3890:32"
},
"compiler": {
"name": "solc",
"version": "0.6.12+commit.27d51765.Emscripten.clang"
},
"networks": {},
"schemaVersion": "3.2.3",
"updatedAt": "2020-11-09T23:40:29.187Z",
"devdoc": {
"details": "The PoolTokensContainer contract serves as a container for multiple pool tokens. It is used by specific liquidity pool types that require more than a single pool token, while still maintaining the single converter / anchor relationship. It maintains and provides a list of the underlying pool tokens.",
"kind": "dev",
"methods": {
"acceptOwnership()": {
"details": "used by a new owner to accept an ownership transfer"
},
"burn(address,address,uint256)": {
"details": "removes tokens from the given account and decreases the pool token supply can only be called by the contract owner",
"params": {
"_amount": "amount to burn",
"_from": "account to remove the tokens from",
"_token": "pool token address"
}
},
"constructor": {
"details": "initializes a new PoolTokensContainer instance",
"params": {
"_decimals": "used for the underlying pool token decimals",
"_name": "pool name, also used as a prefix for the underlying pool token names",
"_symbol": "pool symbol, also used as a prefix for the underlying pool token symbols"
}
},
"createToken()": {
"details": "creates a new pool token and adds it to the list",
"returns": {
"_0": "new pool token address"
}
},
"mint(address,address,uint256)": {
"details": "increases the pool token supply and sends the new tokens to the given account can only be called by the contract owner",
"params": {
"_amount": "amount to mint",
"_to": "account to receive the newly minted tokens",
"_token": "pool token address"
}
},
"poolTokens()": {
"details": "returns the list of pool tokens",
"returns": {
"_0": "list of pool tokens"
}
},
"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
}
}