UNPKG

@gnosis.pm/conditional-tokens-market-makers

Version:
1 lines 106 kB
{"contractName":"FixedProductMarketMaker","abi":[{"constant":true,"inputs":[{"name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"amount","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"sender","type":"address"},{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"conditionalTokens","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"collateralToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"conditionIds","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"funder","type":"address"},{"indexed":false,"name":"amountsAdded","type":"uint256[]"},{"indexed":false,"name":"sharesMinted","type":"uint256"}],"name":"FPMMFundingAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"funder","type":"address"},{"indexed":false,"name":"amountsRemoved","type":"uint256[]"},{"indexed":false,"name":"collateralRemovedFromFeePool","type":"uint256"},{"indexed":false,"name":"sharesBurnt","type":"uint256"}],"name":"FPMMFundingRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":false,"name":"investmentAmount","type":"uint256"},{"indexed":false,"name":"feeAmount","type":"uint256"},{"indexed":true,"name":"outcomeIndex","type":"uint256"},{"indexed":false,"name":"outcomeTokensBought","type":"uint256"}],"name":"FPMMBuy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"seller","type":"address"},{"indexed":false,"name":"returnAmount","type":"uint256"},{"indexed":false,"name":"feeAmount","type":"uint256"},{"indexed":true,"name":"outcomeIndex","type":"uint256"},{"indexed":false,"name":"outcomeTokensSold","type":"uint256"}],"name":"FPMMSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"constant":true,"inputs":[],"name":"collectedFees","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"feesWithdrawableBy","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"withdrawFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addedFunds","type":"uint256"},{"name":"distributionHint","type":"uint256[]"}],"name":"addFunding","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"sharesToBurn","type":"uint256"}],"name":"removeFunding","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"operator","type":"address"},{"name":"from","type":"address"},{"name":"id","type":"uint256"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"name":"","type":"bytes4"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"operator","type":"address"},{"name":"from","type":"address"},{"name":"ids","type":"uint256[]"},{"name":"values","type":"uint256[]"},{"name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"name":"","type":"bytes4"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"investmentAmount","type":"uint256"},{"name":"outcomeIndex","type":"uint256"}],"name":"calcBuyAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"returnAmount","type":"uint256"},{"name":"outcomeIndex","type":"uint256"}],"name":"calcSellAmount","outputs":[{"name":"outcomeTokenSellAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"investmentAmount","type":"uint256"},{"name":"outcomeIndex","type":"uint256"},{"name":"minOutcomeTokensToBuy","type":"uint256"}],"name":"buy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"returnAmount","type":"uint256"},{"name":"outcomeIndex","type":"uint256"},{"name":"maxOutcomeTokensToSell","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}],"metadata":"{\"compiler\":{\"version\":\"0.5.10+commit.5a6ea5b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"withdrawFees\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"feesWithdrawableBy\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"investmentAmount\",\"type\":\"uint256\"},{\"name\":\"outcomeIndex\",\"type\":\"uint256\"},{\"name\":\"minOutcomeTokensToBuy\",\"type\":\"uint256\"}],\"name\":\"buy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"returnAmount\",\"type\":\"uint256\"},{\"name\":\"outcomeIndex\",\"type\":\"uint256\"}],\"name\":\"calcSellAmount\",\"outputs\":[{\"name\":\"outcomeTokenSellAmount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"conditionalTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"collectedFees\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"collateralToken\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"operator\",\"type\":\"address\"},{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"ids\",\"type\":\"uint256[]\"},{\"name\":\"values\",\"type\":\"uint256[]\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"returnAmount\",\"type\":\"uint256\"},{\"name\":\"outcomeIndex\",\"type\":\"uint256\"},{\"name\":\"maxOutcomeTokensToSell\",\"type\":\"uint256\"}],\"name\":\"sell\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"addedFunds\",\"type\":\"uint256\"},{\"name\":\"distributionHint\",\"type\":\"uint256[]\"}],\"name\":\"addFunding\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"conditionIds\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sharesToBurn\",\"type\":\"uint256\"}],\"name\":\"removeFunding\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"operator\",\"type\":\"address\"},{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"id\",\"type\":\"uint256\"},{\"name\":\"value\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"investmentAmount\",\"type\":\"uint256\"},{\"name\":\"outcomeIndex\",\"type\":\"uint256\"}],\"name\":\"calcBuyAmount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"funder\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"amountsAdded\",\"type\":\"uint256[]\"},{\"indexed\":false,\"name\":\"sharesMinted\",\"type\":\"uint256\"}],\"name\":\"FPMMFundingAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"funder\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"amountsRemoved\",\"type\":\"uint256[]\"},{\"indexed\":false,\"name\":\"collateralRemovedFromFeePool\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"sharesBurnt\",\"type\":\"uint256\"}],\"name\":\"FPMMFundingRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"investmentAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"indexed\":true,\"name\":\"outcomeIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"outcomeTokensBought\",\"type\":\"uint256\"}],\"name\":\"FPMMBuy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"returnAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"feeAmount\",\"type\":\"uint256\"},{\"indexed\":true,\"name\":\"outcomeIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"outcomeTokensSold\",\"type\":\"uint256\"}],\"name\":\"FPMMSell\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address.\"},\"supportsInterface(bytes4)\":{\"details\":\"See `IERC165.supportsInterface`. * Time complexity O(1), guaranteed to always use less than 30 000 gas.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/alan/src/github.com/gnosis/conditional-tokens-market-makers/contracts/FixedProductMarketMaker.sol\":\"FixedProductMarketMaker\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/alan/src/github.com/gnosis/conditional-tokens-market-makers/contracts/ERC20.sol\":{\"keccak256\":\"0x40a58d43f7c61c93c3e31fa2e398cbbd2768635703066fc37fc98ec19c1da70f\",\"urls\":[\"bzzr://535a311aa4c5d1d4c082822608b7d41eecdc45e4be9df6dc190f158546c809d9\",\"dweb:/ipfs/QmUacDZ7YZ7spzy2XsQuaZeMnKNTQuJUs7cXgQAjbGNScW\"]},\"/home/alan/src/github.com/gnosis/conditional-tokens-market-makers/contracts/FixedProductMarketMaker.sol\":{\"keccak256\":\"0x68003703f48a2b244f5f0fe19473bb1602791d1277882ab3a159af3b1a31daec\",\"urls\":[\"bzzr://4d0cb66cc5c935d8631414bd811452c0eb2901bf6ef794350ebc393085b075fe\",\"dweb:/ipfs/QmdZskHkHDANmxM4XVcXLLeUjRJTuUKpWYYRFbR1FseVwv\"]},\"@gnosis.pm/conditional-tokens-contracts/contracts/CTHelpers.sol\":{\"keccak256\":\"0x921eadb1d6cd0e742448334fb84c39b358a18cdeb7c6badbb89cae847d44a201\",\"urls\":[\"bzzr://54ea8cd3a2ef100710306ce15475573542ad5235ced471d59fa1744cfaea51c8\",\"dweb:/ipfs/Qme871evGa1PBSBnV9PisLhYnFnnahLmBuy5KakLSUKRPF\"]},\"@gnosis.pm/conditional-tokens-contracts/contracts/ConditionalTokens.sol\":{\"keccak256\":\"0x11a610a3fa07ac8a59a09a76fdb944f058fdb06d3414fe49995595e68cd17d41\",\"urls\":[\"bzzr://aec70f70bf6166a9ae46146c7d293156967b345273a250667732f6f8a4355342\",\"dweb:/ipfs/QmWUFR7eKVsMS61UCK1yY2bQQhcqEQHAAmJ2FJ3GozWV8k\"]},\"@gnosis.pm/conditional-tokens-contracts/contracts/ERC1155/ERC1155.sol\":{\"keccak256\":\"0xd8e6583f45a98380ff10a5656a7ae7ba6a275e0d051043e5842f0d541abd7caa\",\"urls\":[\"bzzr://978cc82d056d10d8cc14b02f35801b10c0c2f87b0adbf6c41bbd622e20ab8cee\",\"dweb:/ipfs/QmYWqCK6moph6oeBEUc1nDaGz4GRdGXmykwKD5rykVbhcU\"]},\"@gnosis.pm/conditional-tokens-contracts/contracts/ERC1155/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x5d1e709c759b9bd72865c8608582d66fc338fde3a77f41abb04ae943915a5695\",\"urls\":[\"bzzr://55e5a597486430ad437bb8c8f0c93cf573b833fa84ccf64a25afaa01c761b839\",\"dweb:/ipfs/QmQ727N1676jG9F5iwakSG2RNeV82TVBGJHgHPmHxib8ah\"]},\"@gnosis.pm/conditional-tokens-contracts/contracts/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x4971631d7de74464fed3e0abac04553e917be5e8cd10b3f825e2e7c39ccc2734\",\"urls\":[\"bzzr://e1e88dfe7440ceab59d4cd604d12e5dc93409a3c5058e497763703027ea7b9e6\",\"dweb:/ipfs/QmRzsL1o6iVEFmqBYCo3XpM4kpvbK7iSJWssXHQ3gHb5uq\"]},\"@gnosis.pm/conditional-tokens-contracts/contracts/ERC1155/IERC1155TokenReceiver.sol\":{\"keccak256\":\"0xca815b5ca57df8f1056b962c2728d6a1e56fc7d9a7869ccee8f5a1ac6075b75d\",\"urls\":[\"bzzr://61df3e61bf24c80714e326ffdc274aaefc342241de3e72374131f613cddbd042\",\"dweb:/ipfs/QmPnF3rGuY2H3Gifvha4dW7fJPptP7wJerHzjz4dpzfTJW\"]},\"openzeppelin-solidity/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0xac2eacd7e7762e275442f28f21d821544df5aae2ed7698af13be8c41b7005e2e\",\"urls\":[\"bzzr://43e901f6f210568ebc1d3591da3ce6a9d10796b854767a9c6e3da10305a8a332\",\"dweb:/ipfs/QmQhfx2Ufr8a2gFXm3KogL66xGgAuAWMwcamkWFKGG6Vya\"]},\"openzeppelin-solidity/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0x661553e43d7c4fbb2de504e5999fd5c104d367488350ed5bf023031bd1ba5ac5\",\"urls\":[\"bzzr://fc2ba15143ce3a00268ecd15fc98eb2469b18bfe27a64bbab0ac6446f161c739\",\"dweb:/ipfs/QmV7wjtRf11ibUHh4g8JjuhMpy68pPhV95L2y46UBoRfsZ\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690\",\"urls\":[\"bzzr://1604f5b6d6e916c154efd8c6720cda069e5ba32dfa0a9dedf2b42e5b02d07f89\",\"dweb:/ipfs/QmV3yVktya1s617QmuzQR2CfuJgUi3dR2xEZY9ecmqZ2G1\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x90e8c2521653bbb1768b05889c5760031e688d9cd361f167489b89215e201b95\",\"urls\":[\"bzzr://aa8b45b57edafc3d67bc5d916327ea16807fae33f753ca163ae0c4061b789766\",\"dweb:/ipfs/QmP5NaEwZthQeM2ESz4WTT3osrP7jhbvu7ocbttBi2JAw6\"]},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1\",\"urls\":[\"bzzr://f7f6da60a184233fd666ac44e6fb2bd51ca6ebdc4867a310d368049aa4e62786\",\"dweb:/ipfs/Qmb3kNCoBUZdah1AgBBD4zMk898j5Qw8ahT1w5cCMYp5Y3\"]}},\"version\":1}","bytecode":"0x6080604052620000387f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b036200007216565b6200006c7f4e2312e0000000000000000000000000000000000000000000000000000000006001600160e01b036200007216565b62000141565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156200010457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152600360205260409020805460ff19166001179055565b612b3c80620001516000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c8063a457c2d7116100c3578063d8c55af71161007c578063d8c55af71461056e578063dd62ed3e1461058b578063ddca3f43146105b9578063e03031a6146105c1578063f23a6e61146105de578063f55c79d01461067157610158565b8063a457c2d71461032c578063a9059cbb14610358578063b2016bd414610384578063bc197c811461038c578063d3c9727c146104d0578063d5f15a46146104f957610158565b80633950935111610115578063395093511461026257806340993b261461028e5780634343116a146102b75780635bd9e299146102da57806370a08231146102fe5780639003adfe1461032457610158565b806301ffc9a71461015d578063095ea7b314610198578063164e68de146101c457806316dbd776146101ec57806318160ddd1461022457806323b872dd1461022c575b600080fd5b6101846004803603602081101561017357600080fd5b50356001600160e01b031916610694565b604080519115158252519081900360200190f35b610184600480360360408110156101ae57600080fd5b506001600160a01b0381351690602001356106b3565b6101ea600480360360208110156101da57600080fd5b50356001600160a01b03166106ca565b005b6102126004803603602081101561020257600080fd5b50356001600160a01b0316610838565b60408051918252519081900360200190f35b61021261088c565b6101846004803603606081101561024257600080fd5b506001600160a01b03813581169160208101359091169060400135610892565b6101846004803603604081101561027857600080fd5b506001600160a01b0381351690602001356108e9565b6101ea600480360360608110156102a457600080fd5b5080359060208101359060400135610925565b610212600480360360408110156102cd57600080fd5b5080359060200135610c8b565b6102e2610e62565b604080516001600160a01b039092168252519081900360200190f35b6102126004803603602081101561031457600080fd5b50356001600160a01b0316610e71565b610212610e8c565b6101846004803603604081101561034257600080fd5b506001600160a01b038135169060200135610eaa565b6101846004803603604081101561036e57600080fd5b506001600160a01b038135169060200135610ee6565b6102e2610ef3565b6104b3600480360360a08110156103a257600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156103d557600080fd5b8201836020820111156103e757600080fd5b803590602001918460208302840111600160201b8311171561040857600080fd5b919390929091602081019035600160201b81111561042557600080fd5b82018360208201111561043757600080fd5b803590602001918460208302840111600160201b8311171561045857600080fd5b919390929091602081019035600160201b81111561047557600080fd5b82018360208201111561048757600080fd5b803590602001918460018302840111600160201b831117156104a857600080fd5b509092509050610f02565b604080516001600160e01b03199092168252519081900360200190f35b6101ea600480360360608110156104e657600080fd5b5080359060208101359060400135610f46565b6101ea6004803603604081101561050f57600080fd5b81359190810190604081016020820135600160201b81111561053057600080fd5b82018360208201111561054257600080fd5b803590602001918460208302840111600160201b8311171561056357600080fd5b5090925090506111e2565b6102126004803603602081101561058457600080fd5b5035611897565b610212600480360360408110156105a157600080fd5b506001600160a01b03813581169160200135166118b5565b6102126118e0565b6101ea600480360360208110156105d757600080fd5b50356118e6565b6104b3600480360360a08110156105f457600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561063357600080fd5b82018360208201111561064557600080fd5b803590602001918460018302840111600160201b8311171561066657600080fd5b509092509050611c3e565b6102126004803603604081101561068757600080fd5b5080359060200135611c6d565b6001600160e01b03191660009081526003602052604090205460ff1690565b60006106c0338484611e0a565b5060015b92915050565b60006106d461088c565b6106ef6106e084610e71565b6008549063ffffffff611ef616565b816106f657fe5b6001600160a01b0384166000908152600c60205260408120549290910492509061072790839063ffffffff611f4f16565b90508015610833576001600160a01b0383166000908152600c60205260409020829055600d5461075d908263ffffffff611fac16565b600d556005546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156107b657600080fd5b505af11580156107ca573d6000803e3d6000fd5b505050506040513d60208110156107e057600080fd5b5051610833576040805162461bcd60e51b815260206004820152601a60248201527f7769746864726177616c207472616e73666572206661696c6564000000000000604482015290519081900360640190fd5b505050565b60008061084361088c565b61084f6106e085610e71565b8161085657fe5b6001600160a01b0385166000908152600c6020526040902054919004915061088590829063ffffffff611f4f16565b9392505050565b60025490565b600061089f848484612006565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546108df9186916108da908663ffffffff611f4f16565b611e0a565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916106c09185906108da908663ffffffff611fac16565b60006109318484611c6d565b905081811015610988576040805162461bcd60e51b815260206004820152601e60248201527f6d696e696d756d2062757920616d6f756e74206e6f7420726561636865640000604482015290519081900360640190fd5b600554604080516323b872dd60e01b81523360048201523060248201526044810187905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b1580156109e257600080fd5b505af11580156109f6573d6000803e3d6000fd5b505050506040513d6020811015610a0c57600080fd5b5051610a56576040805162461bcd60e51b815260206004820152601460248201527318dbdcdd081d1c985b9cd9995c8819985a5b195960621b604482015290519081900360640190fd5b6000670de0b6b3a7640000610a7660075487611ef690919063ffffffff16565b81610a7d57fe5b049050610a9581600854611fac90919063ffffffff16565b6008556000610aaa868363ffffffff611f4f16565b600554600480546040805163095ea7b360e01b81526001600160a01b039283169381019390935260248301859052519394509091169163095ea7b3916044808201926020929091908290030181600087803b158015610b0857600080fd5b505af1158015610b1c573d6000803e3d6000fd5b505050506040513d6020811015610b3257600080fd5b5051610b85576040805162461bcd60e51b815260206004820152601a60248201527f617070726f76616c20666f722073706c697473206661696c6564000000000000604482015290519081900360640190fd5b610b8e81612153565b600454600b80546001600160a01b039092169163f242432a9130913391908a908110610bb657fe5b6000918252602082200154604080516001600160e01b031960e088901b1681526001600160a01b03958616600482015293909416602484015260448301526064820188905260a0608483015260a48201819052915160e4808301939282900301818387803b158015610c2757600080fd5b505af1158015610c3b573d6000803e3d6000fd5b5050604080518981526020810186905280820187905290518893503392507f4f62630f51608fc8a7603a9391a5101e58bd7c276139366fc107dc3b67c3dcf89181900360600190a3505050505050565b600b546000908210610cdc576040805162461bcd60e51b81526020600482015260156024820152740d2dcecc2d8d2c840deeae8c6dedaca40d2dcc8caf605b1b604482015290519081900360640190fd5b6060610ce66122e2565b90506000610d07600754670de0b6b3a7640000611f4f90919063ffffffff16565b610d1f86670de0b6b3a764000063ffffffff611ef616565b81610d2657fe5b0490506000828581518110610d3757fe5b602002602001015190506000610d5e670de0b6b3a764000083611ef690919063ffffffff16565b905060005b8451811015610dc957868114610dc1576000858281518110610d8157fe5b60200260200101519050610dbd610da18683611f4f90919063ffffffff16565b610db1858463ffffffff611ef616565b9063ffffffff6124b116565b9250505b600101610d63565b5060008111610e1f576040805162461bcd60e51b815260206004820152601b60248201527f6d7573742068617665206e6f6e2d7a65726f2062616c616e6365730000000000604482015290519081900360640190fd5b610e5782610e4b610e3e84670de0b6b3a764000063ffffffff6124b116565b869063ffffffff611fac16565b9063ffffffff611f4f16565b979650505050505050565b6004546001600160a01b031681565b6001600160a01b031660009081526020819052604090205490565b6000610ea5600d54600854611f4f90919063ffffffff16565b905090565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916106c09185906108da908663ffffffff611f4f16565b60006106c0338484612006565b6005546001600160a01b031681565b60006001600160a01b03891630148015610f2357506001600160a01b038816155b15610f36575063bc197c8160e01b610f3a565b5060005b98975050505050505050565b6000610f528484610c8b565b905081811115610fa9576040805162461bcd60e51b815260206004820152601c60248201527f6d6178696d756d2073656c6c20616d6f756e7420657863656564656400000000604482015290519081900360640190fd5b600454600b80546001600160a01b039092169163f242432a91339130919088908110610fd157fe5b6000918252602082200154604080516001600160e01b031960e088901b1681526001600160a01b03958616600482015293909416602484015260448301526064820186905260a0608483015260a48201819052915160e4808301939282900301818387803b15801561104257600080fd5b505af1158015611056573d6000803e3d6000fd5b505050506000611079600754670de0b6b3a7640000611f4f90919063ffffffff16565b60075461108d90879063ffffffff611ef616565b8161109457fe5b0490506110ac81600854611fac90919063ffffffff16565b60085560006110c1868363ffffffff611fac16565b90506110cc816124e1565b6005546040805163a9059cbb60e01b81523360048201526024810189905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561112057600080fd5b505af1158015611134573d6000803e3d6000fd5b505050506040513d602081101561114a57600080fd5b5051611196576040805162461bcd60e51b81526020600482015260166024820152751c995d1d5c9b881d1c985b9cd9995c8819985a5b195960521b604482015290519081900360640190fd5b60408051878152602081018490528082018590529051869133917fadcf2a240ed9300d681d9a3f5382b6c1beed1b7e46643e0c7b42cbe6e2d766b49181900360600190a3505050505050565b60008311611237576040805162461bcd60e51b815260206004820152601860248201527f66756e64696e67206d757374206265206e6f6e2d7a65726f0000000000000000604482015290519081900360640190fd5b600b546040805182815260208084028201019091526060918015611265578160200160208202803883390190505b509050600061127261088c565b9050600081156113925783156112b95760405162461bcd60e51b8152600401808060200182810382526032815260200180612a4b6032913960400191505060405180910390fd5b60606112c36122e2565b90506000805b82518110156112ff5760008382815181106112e057fe5b60200260200101519050808310156112f6578092505b506001016112c9565b5060005b825181101561136f5760008261133585848151811061131e57fe5b60200260200101518c611ef690919063ffffffff16565b8161133c57fe5b04905061134f8a8263ffffffff611f4f16565b87838151811061135b57fe5b602090810291909101015250600101611303565b5080611381898663ffffffff611ef616565b8161138857fe5b04925050506114e1565b83156114de57600b5484146113e0576040805162461bcd60e51b815260206004820152600f60248201526e3434b73a103632b733ba341037b33360891b604482015290519081900360640190fd5b6000805b858110156114185760008787838181106113fa57fe5b9050602002013590508083101561140f578092505b506001016113e4565b5060005b858110156114db5760008261144c89898581811061143657fe5b905060200201358b611ef690919063ffffffff16565b8161145357fe5b049050600081116114ab576040805162461bcd60e51b815260206004820152601e60248201527f6d7573742068696e7420612076616c696420646973747269627574696f6e0000604482015290519081900360640190fd5b6114bb898263ffffffff611f4f16565b8683815181106114c757fe5b60209081029190910101525060010161141c565b50505b50845b600554604080516323b872dd60e01b81523360048201523060248201526044810189905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561153b57600080fd5b505af115801561154f573d6000803e3d6000fd5b505050506040513d602081101561156557600080fd5b50516115b8576040805162461bcd60e51b815260206004820152601760248201527f66756e64696e67207472616e73666572206661696c6564000000000000000000604482015290519081900360640190fd5b600554600480546040805163095ea7b360e01b81526001600160a01b0392831693810193909352602483018a90525192169163095ea7b3916044808201926020929091908290030181600087803b15801561161257600080fd5b505af1158015611626573d6000803e3d6000fd5b505050506040513d602081101561163c57600080fd5b505161168f576040805162461bcd60e51b815260206004820152601a60248201527f617070726f76616c20666f722073706c697473206661696c6564000000000000604482015290519081900360640190fd5b61169886612153565b6116a23382612658565b60048054604051631759616b60e11b815230928101838152336024830181905260a060448401908152600b805460a486018190526001600160a01b0390961696632eb2c2d6969095939491938b93916064820191608481019160c4909101908790801561172e57602002820191906000526020600020905b81548152602001906001019080831161171a575b50508481038352855181528551602091820191808801910280838360005b8381101561176457818101518382015260200161174c565b50505050905001848103825260008152602001602001975050505050505050600060405180830381600087803b15801561179d57600080fd5b505af11580156117b1573d6000803e3d6000fd5b506000925050505b8351811015611807576117e88482815181106117d157fe5b602002602001015188611f4f90919063ffffffff16565b8482815181106117f457fe5b60209081029190910101526001016117b9565b50336001600160a01b03167fec2dc3e5a3bb9aa0a1deb905d2bd23640d07f107e6ceb484024501aad964a95184836040518080602001838152602001828103825284818151815260200191508051906020019060200280838360005b8381101561187b578181015183820152602001611863565b50505050905001935050505060405180910390a2505050505050565b600681815481106118a457fe5b600091825260209091200154905081565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60075481565b60606118f06122e2565b90506060815160405190808252806020026020018201604052801561191f578160200160208202803883390190505b509050600061192c61088c565b905060005b835181101561198857816119618686848151811061194b57fe5b6020026020010151611ef690919063ffffffff16565b8161196857fe5b0483828151811061197557fe5b6020908102919091010152600101611931565b50600554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156119d457600080fd5b505afa1580156119e8573d6000803e3d6000fd5b505050506040513d60208110156119fe57600080fd5b50519050611a0c3386612754565b600554604080516370a0823160e01b81523060048201529051611a91926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611a5857600080fd5b505afa158015611a6c573d6000803e3d6000fd5b505050506040513d6020811015611a8257600080fd5b5051829063ffffffff611f4f16565b60048054604051631759616b60e11b815230928101838152336024830181905260a060448401908152600b805460a486018190529798506001600160a01b0390951696632eb2c2d69695929492938b939092916064820191608481019160c49091019087908015611b2157602002820191906000526020600020905b815481526020019060010190808311611b0d575b50508481038352855181528551602091820191808801910280838360005b83811015611b57578181015183820152602001611b3f565b50505050905001848103825260008152602001602001975050505050505050600060405180830381600087803b158015611b9057600080fd5b505af1158015611ba4573d6000803e3d6000fd5b50505050336001600160a01b03167f8b4b2c8ebd04c47fc8bce136a85df9b93fcb1f47c8aa296457d4391519d190e78483886040518080602001848152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611c22578181015183820152602001611c0a565b5050505090500194505050505060405180910390a25050505050565b60006001600160a01b038716301415611c5f575063f23a6e6160e01b611c63565b5060005b9695505050505050565b600b546000908210611cbe576040805162461bcd60e51b81526020600482015260156024820152740d2dcecc2d8d2c840deeae8c6dedaca40d2dcc8caf605b1b604482015290519081900360640190fd5b6060611cc86122e2565b90506000611d03670de0b6b3a7640000611ced60075488611ef690919063ffffffff16565b81611cf457fe5b8791900463ffffffff611f4f16565b90506000828581518110611d1357fe5b602002602001015190506000611d3a670de0b6b3a764000083611ef690919063ffffffff16565b905060005b8451811015611d8957868114611d81576000858281518110611d5d57fe5b60200260200101519050611d7d610da18683611fac90919063ffffffff16565b9250505b600101611d3f565b5060008111611ddf576040805162461bcd60e51b815260206004820152601b60248201527f6d7573742068617665206e6f6e2d7a65726f2062616c616e6365730000000000604482015290519081900360640190fd5b610e57611dfa82670de0b6b3a764000063ffffffff6124b116565b610e4b848663ffffffff611fac16565b6001600160a01b038316611e4f5760405162461bcd60e51b8152600401808060200182810382526024815260200180612ae46024913960400191505060405180910390fd5b6001600160a01b038216611e945760405162461bcd60e51b8152600401808060200182810382526022815260200180612a296022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600082611f05575060006106c4565b82820282848281611f1257fe5b04146108855760405162461bcd60e51b8152600401808060200182810382526021815260200180612a7d6021913960400191505060405180910390fd5b600082821115611fa6576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610885576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b03831661204b5760405162461bcd60e51b8152600401808060200182810382526025815260200180612abf6025913960400191505060405180910390fd5b6001600160a01b0382166120905760405162461bcd60e51b8152600401808060200182810382526023815260200180612a066023913960400191505060405180910390fd5b61209b838383612842565b6001600160a01b0383166000908152602081905260409020546120c4908263ffffffff611f4f16565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546120f9908263ffffffff611fac16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600654600019015b600081126122de5760606121856009838154811061217557fe5b90600052602060002001546129a1565b905060005b600a838154811061219757fe5b6000918252602090912001548110156122d357600454600554600a80546001600160a01b03938416936372ce427593169190879081106121d357fe5b9060005260206000200184815481106121e857fe5b90600052602060002001546006878154811061220057fe5b906000526020600020015486896040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b0316815260200185815260200184815260200180602001838152602001828103825284818151815260200191508051906020019060200280838360005b8381101561228657818101518382015260200161226e565b505050509050019650505050505050600060405180830381600087803b1580156122af57600080fd5b505af11580156122c3573d6000803e3d6000fd5b50506001909201915061218a9050565b50506000190161215b565b5050565b606080600b80549050604051908082528060200260200182016040528015612314578160200160208202803883390190505b50905060005b600b54811015612351573082828151811061233157fe5b6001600160a01b039092166020928302919091019091015260010161231a565b5060048054604080516313849cfd60e21b81529283019081528351604484015283516001600160a01b0390921692634e1273f4928592600b929091829160248101916064909101906020808801910280838360005b838110156123be5781810151838201526020016123a6565b50505050905001838103825284818154815260200191508054801561240257602002820191906000526020600020905b8154815260200190600101908083116123ee575b505094505050505060006040518083038186803b15801561242257600080fd5b505afa158015612436573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561245f57600080fd5b810190808051600160201b81111561247657600080fd5b8201602081018481111561248957600080fd5b81518560208202830111600160201b821117156124a557600080fd5b50909550505050505090565b600082156124d0578160018403816124c557fe5b0460010190506106c4565b8183816124d957fe5b049392505050565b60005b6006548110156122de5760606125006009838154811061217557fe5b905060005b600a838154811061251257fe5b60009182526020909120015481101561264e57600454600554600a80546001600160a01b0393841693639e7212ad931691908790811061254e57fe5b90600052602060002001848154811061256357fe5b90600052602060002001546006878154811061257b57fe5b906000526020600020015486896040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b0316815260200185815260200184815260200180602001838152602001828103825284818151815260200191508051906020019060200280838360005b838110156126015781810151838201526020016125e9565b505050509050019650505050505050600060405180830381600087803b15801561262a57600080fd5b505af115801561263e573d6000803e3d6000fd5b5050600190920191506125059050565b50506001016124e4565b6001600160a01b0382166126b3576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6126bf60008383612842565b6002546126d2908263ffffffff611fac16565b6002556001600160a01b0382166000908152602081905260409020546126fe908263ffffffff611fac16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b0382166127995760405162461bcd60e51b8152600401808060200182810382526021815260200180612a9e6021913960400191505060405180910390fd5b6127a582600083612842565b6001600160a01b0382166000908152602081905260409020546127ce908263ffffffff611f4f16565b6001600160a01b0383166000908152602081905260409020556002546127fa908263ffffffff611f4f16565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6001600160a01b0383161561285a5761285a836106ca565b600061286461088c565b905060008115612890576008548290612883908563ffffffff611ef616565b8161288a57fe5b04612892565b825b90506001600160a01b03851615612900576001600160a01b0385166000908152600c60205260409020546128cc908263ffffffff611f4f16565b6001600160a01b0386166000908152600c6020526040902055600d546128f8908263ffffffff611f4f16565b600d55612917565b600854612913908263ffffffff611fac16565b6008555b6001600160a01b03841615612983576001600160a01b0384166000908152600c602052604090205461294f908263ffffffff611fac16565b6001600160a01b0385166000908152600c6020526040902055600d5461297b908263ffffffff611fac16565b600d5561299a565b600854612996908263ffffffff611f4f16565b6008555b5050505050565b6060816040519080825280602002602001820160405280156129cd578160200160208202803883390190505b50905060005b828110156129ff57806001901b8282815181106129ec57fe5b60209081029190910101526001016129d3565b5091905056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737363616e6e6f742075736520646973747269627574696f6e2068696e7420616674657220696e697469616c2066756e64696e67536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a265627a7a723058201aac63dc06a17d8f7ea486dfbf3ed5b1306b107d0d7a9060b6a110567ffb46f864736f6c634300050a0032","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106101585760003560e01c8063a457c2d7116100c3578063d8c55af71161007c578063d8c55af71461056e578063dd62ed3e1461058b578063ddca3f43146105b9578063e03031a6146105c1578063f23a6e61146105de578063f55c79d01461067157610158565b8063a457c2d71461032c578063a9059cbb14610358578063b2016bd414610384578063bc197c811461038c578063d3c9727c146104d0578063d5f15a46146104f957610158565b80633950935111610115578063395093511461026257806340993b261461028e5780634343116a146102b75780635bd9e299146102da57806370a08231146102fe5780639003adfe1461032457610158565b806301ffc9a71461015d578063095ea7b314610198578063164e68de146101c457806316dbd776146101ec57806318160ddd1461022457806323b872dd1461022c575b600080fd5b6101846004803603602081101561017357600080fd5b50356001600160e01b031916610694565b604080519115158252519081900360200190f35b610184600480360360408110156101ae57600080fd5b506001600160a01b0381351690602001356106b3565b6101ea600480360360208110156101da57600080fd5b50356001600160a01b03166106ca565b005b6102126004803603602081101561020257600080fd5b50356001600160a01b0316610838565b60408051918252519081900360200190f35b61021261088c565b6101846004803603606081101561024257600080fd5b506001600160a01b03813581169160208101359091169060400135610892565b6101846004803603604081101561027857600080fd5b506001600160a01b0381351690602001356108e9565b6101ea600480360360608110156102a457600080fd5b5080359060208101359060400135610925565b610212600480360360408110156102cd57600080fd5b5080359060200135610c8b565b6102e2610e62565b604080516001600160a01b039092168252519081900360200190f35b6102126004803603602081101561031457600080fd5b50356001600160a01b0316610e71565b610212610e8c565b6101846004803603604081101561034257600080fd5b506001600160a01b038135169060200135610eaa565b6101846004803603604081101561036e57600080fd5b506001600160a01b038135169060200135610ee6565b6102e2610ef3565b6104b3600480360360a08110156103a257600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156103d557600080fd5b8201836020820111156103e757600080fd5b803590602001918460208302840111600160201b8311171561040857600080fd5b919390929091602081019035600160201b81111561042557600080fd5b82018360208201111561043757600080fd5b803590602001918460208302840111600160201b8311171561045857600080fd5b919390929091602081019035600160201b81111561047557600080fd5b82018360208201111561048757600080fd5b803590602001918460018302840111600160201b831117156104a857600080fd5b509092509050610f02565b604080516001600160e01b03199092168252519081900360200190f35b6101ea600480360360608110156104e657600080fd5b5080359060208101359060400135610f46565b6101ea6004803603604081101561050f57600080fd5b81359190810190604081016020820135600160201b81111561053057600080fd5b82018360208201111561054257600080fd5b803590602001918460208302840111600160201b8311171561056357600080fd5b5090925090506111e2565b6102126004803603602081101561058457600080fd5b5035611897565b610212600480360360408110156105a157600080fd5b506001600160a01b03813581169160200135166118b5565b6102126118e0565b6101ea600480360360208110156105d757600080fd5b50356118e6565b6104b3600480360360a08110156105f457600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561063357600080fd5b82018360208201111561064557600080fd5b803590602001918460018302840111600160201b8311171561066657600080fd5b509092509050611c3e565b6102126004803603604081101561068757600080fd5b5080359060200135611c6d565b6001600160e01b03191660009081526003602052604090205460ff1690565b60006106c0338484611e0a565b5060015b92915050565b60006106d461088c565b6106ef6106e084610e71565b6008549063ffffffff611ef616565b816106f657fe5b6001600160a01b0384166000908152600c60205260408120549290910492509061072790839063ffffffff611f4f16565b90508015610833576001600160a01b0383166000908152600c60205260409020829055600d5461075d908263ffffffff611fac16565b600d556005546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156107b657600080fd5b505af11580156107ca573d6000803e3d6000fd5b505050506040513d60208110156107e057600080fd5b5051610833576040805162461bcd60e51b815260206004820152601a60248201527f7769746864726177616c207472616e73666572206661696c6564000000000000604482015290519081900360640190fd5b505050565b60008061084361088c565b61084f6106e085610e71565b8161085657fe5b6001600160a01b0385166000908152600c6020526040902054919004915061088590829063ffffffff611f4f16565b9392505050565b60025490565b600061089f848484612006565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546108df9186916108da908663ffffffff611f4f16565b611e0a565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916106c09185906108da908663ffffffff611fac16565b60006109318484611c6d565b905081811015610988576040805162461bcd60e51b815260206004820152601e60248201527f6d696e696d756d2062757920616d6f756e74206e6f7420726561636865640000604482015290519081900360640190fd5b600554604080516323b872dd60e01b81523360048201523060248201526044810187905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b1580156109e257600080fd5b505af11580156109f6573d6000803e3d6000fd5b505050506040513d6020811015610a0c57600080fd5b5051610a56576040805162461bcd60e51b815260206004820152601460248201527318dbdcdd081d1c985b9cd9995c8819985a5b195960621b604482015290519081900360640190fd5b6000670de0b6b3a7640000610a7660075487611ef690919063ffffffff16565b81610a7d57fe5b049050610a9581600854611fac90919063ffffffff16565b6008556000610aaa868363ffffffff611f4f16565b600554600480546040805163095ea7b360e01b81526001600160a01b039283169381019390935260248301859052519394509091169163095ea7b3916044808201926020929091908290030181600087803b158015610b0857600080fd5b505af1158015610b1c573d6000803e3d6000fd5b505050506040513d6020811015610b3257600080fd5b5051610b85576040805162461bcd60e51b81526020