diff --git a/CHANGELOG.md b/CHANGELOG.md index 39fdc966..6024c98d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -50,6 +50,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [\#409](https://github.com/irisnet/irismod/pull/409) Add a switch for enabling erc20 swap function. * [\#410](https://github.com/irisnet/irismod/pull/410) Implement upgradeable contract. * [\#411](https://github.com/irisnet/irismod/pull/411) Implement erc20 upgrade. +* [\#412](https://github.com/irisnet/irismod/pull/412) Optimize contract code ### Bug Fixes diff --git a/Makefile b/Makefile index 63d8efc6..e3e4e325 100644 --- a/Makefile +++ b/Makefile @@ -143,8 +143,8 @@ contracts-clean: # Compile, filter out and format contracts into the following format. create-contracts-abi: - solc --combined-json abi,bin --evm-version paris --include-path node_modules --base-path $(CONTRACTS_DIR)/ $(CONTRACTS_DIR)/Token.sol | jq '.contracts["Token.sol:Token"]' > $(COMPILED_DIR)/Token.json \ - && solc --combined-json abi,bin --evm-version paris --include-path node_modules --base-path $(CONTRACTS_DIR)/ $(CONTRACTS_DIR)/TokenProxy.sol | jq '.contracts["TokenProxy.sol:TokenProxy"]' > $(COMPILED_DIR)/TokenProxy.json \ - && solc --combined-json abi,bin --evm-version paris --include-path node_modules --base-path $(CONTRACTS_DIR)/ $(CONTRACTS_DIR)/UpgradeableBeacon.sol | jq '.contracts["UpgradeableBeacon.sol:UpgradeableBeacon"]' > $(COMPILED_DIR)/UpgradeableBeacon.json \ + solc --combined-json abi,bin --optimize --optimize-runs 200 --evm-version paris --include-path node_modules --base-path $(CONTRACTS_DIR)/ $(CONTRACTS_DIR)/Token.sol | jq '.contracts["Token.sol:Token"]' > $(COMPILED_DIR)/Token.json \ + && solc --combined-json abi,bin --optimize --optimize-runs 200 --evm-version paris --include-path node_modules --base-path $(CONTRACTS_DIR)/ $(CONTRACTS_DIR)/TokenProxy.sol | jq '.contracts["TokenProxy.sol:TokenProxy"]' > $(COMPILED_DIR)/TokenProxy.json \ + && solc --combined-json abi,bin --optimize --optimize-runs 200 --evm-version paris --include-path node_modules --base-path $(CONTRACTS_DIR)/ $(CONTRACTS_DIR)/UpgradeableBeacon.sol | jq '.contracts["UpgradeableBeacon.sol:UpgradeableBeacon"]' > $(COMPILED_DIR)/UpgradeableBeacon.json \ diff --git a/contracts/compiled_contracts/Token.json b/contracts/compiled_contracts/Token.json index 3e4a66ba..124ac2ca 100644 --- a/contracts/compiled_contracts/Token.json +++ b/contracts/compiled_contracts/Token.json @@ -594,5 +594,5 @@ "type": "function" } ], - "bin": "60806040523480156200001157600080fd5b506040516200294e3803806200294e833981810160405281019062000037919062000565565b33838381600390816200004b91906200084a565b5080600490816200005d91906200084a565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000d55760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000cc919062000976565b60405180910390fd5b620000e681620002a660201b60201c565b5060016006819055506000620001016200036c60201b60201c565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015620001505750825b9050600060018367ffffffffffffffff1614801562000186575060003073ffffffffffffffffffffffffffffffffffffffff163b145b90508115801562000195575080155b15620001cd576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083156200021e5760018560000160086101000a81548160ff0219169083151502179055505b85600760006101000a81548160ff021916908360ff1602179055508315620002985760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260016040516200028f9190620009ea565b60405180910390a15b505050505050505062000a07565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620003fd82620003b2565b810181811067ffffffffffffffff821117156200041f576200041e620003c3565b5b80604052505050565b60006200043462000394565b9050620004428282620003f2565b919050565b600067ffffffffffffffff821115620004655762000464620003c3565b5b6200047082620003b2565b9050602081019050919050565b60005b838110156200049d57808201518184015260208101905062000480565b60008484015250505050565b6000620004c0620004ba8462000447565b62000428565b905082815260208101848484011115620004df57620004de620003ad565b5b620004ec8482856200047d565b509392505050565b600082601f8301126200050c576200050b620003a8565b5b81516200051e848260208601620004a9565b91505092915050565b600060ff82169050919050565b6200053f8162000527565b81146200054b57600080fd5b50565b6000815190506200055f8162000534565b92915050565b6000806000606084860312156200058157620005806200039e565b5b600084015167ffffffffffffffff811115620005a257620005a1620003a3565b5b620005b086828701620004f4565b935050602084015167ffffffffffffffff811115620005d457620005d3620003a3565b5b620005e286828701620004f4565b9250506040620005f5868287016200054e565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200065257607f821691505b6020821081036200066857620006676200060a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006d27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000693565b620006de868362000693565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200072b620007256200071f84620006f6565b62000700565b620006f6565b9050919050565b6000819050919050565b62000747836200070a565b6200075f620007568262000732565b848454620006a0565b825550505050565b600090565b6200077662000767565b620007838184846200073c565b505050565b5b81811015620007ab576200079f6000826200076c565b60018101905062000789565b5050565b601f821115620007fa57620007c4816200066e565b620007cf8462000683565b81016020851015620007df578190505b620007f7620007ee8562000683565b83018262000788565b50505b505050565b600082821c905092915050565b60006200081f60001984600802620007ff565b1980831691505092915050565b60006200083a83836200080c565b9150826002028217905092915050565b6200085582620005ff565b67ffffffffffffffff811115620008715762000870620003c3565b5b6200087d825462000639565b6200088a828285620007af565b600060209050601f831160018114620008c25760008415620008ad578287015190505b620008b985826200082c565b86555062000929565b601f198416620008d2866200066e565b60005b82811015620008fc57848901518255600182019150602085019450602081019050620008d5565b868310156200091c578489015162000918601f8916826200080c565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200095e8262000931565b9050919050565b620009708162000951565b82525050565b60006020820190506200098d600083018462000965565b92915050565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000620009d2620009cc620009c68462000993565b62000700565b6200099d565b9050919050565b620009e481620009b1565b82525050565b600060208201905062000a016000830184620009d9565b92915050565b611f378062000a176000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063715018a6116100ad578063dd62ed3e11610071578063dd62ed3e1461030a578063de7ea79d1461033a578063e9e4e86614610356578063f2fde38b14610372578063ffa1ad741461038e57610121565b8063715018a6146102785780638da5cb5b1461028257806395d89b41146102a05780639dc29fac146102be578063a9059cbb146102da57610121565b806323b872dd116100f457806323b872dd146101c2578063313ce567146101f257806340c10f191461021057806354162c9c1461022c57806370a082311461024857610121565b806301ffc9a71461012657806306fdde0314610156578063095ea7b31461017457806318160ddd146101a4575b600080fd5b610140600480360381019061013b9190611476565b6103ac565b60405161014d91906114be565b60405180910390f35b61015e61048e565b60405161016b9190611569565b60405180910390f35b61018e6004803603810190610189919061161f565b610520565b60405161019b91906114be565b60405180910390f35b6101ac610543565b6040516101b9919061166e565b60405180910390f35b6101dc60048036038101906101d79190611689565b61054d565b6040516101e991906114be565b60405180910390f35b6101fa61057c565b60405161020791906116f8565b60405180910390f35b61022a6004803603810190610225919061161f565b610593565b005b61024660048036038101906102419190611848565b6105a9565b005b610262600480360381019061025d91906118a4565b610653565b60405161026f919061166e565b60405180910390f35b61028061069b565b005b61028a6106af565b60405161029791906118e0565b60405180910390f35b6102a86106d9565b6040516102b59190611569565b60405180910390f35b6102d860048036038101906102d3919061161f565b61076b565b005b6102f460048036038101906102ef919061161f565b610781565b60405161030191906114be565b60405180910390f35b610324600480360381019061031f91906118fb565b6107a4565b604051610331919061166e565b60405180910390f35b610354600480360381019061034f9190611967565b61082b565b005b610370600480360381019061036b9190611a06565b6109f8565b005b61038c600480360381019061038791906118a4565b610aae565b005b610396610b34565b6040516103a391906116f8565b60405180910390f35b60007f36372b07000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061047757507fa219a025000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610487575061048682610b39565b5b9050919050565b60606003805461049d90611aa4565b80601f01602080910402602001604051908101604052809291908181526020018280546104c990611aa4565b80156105165780601f106104eb57610100808354040283529160200191610516565b820191906000526020600020905b8154815290600101906020018083116104f957829003601f168201915b5050505050905090565b60008061052b610ba3565b9050610538818585610bab565b600191505092915050565b6000600254905090565b600080610558610ba3565b9050610565858285610bbd565b610570858585610c51565b60019150509392505050565b6000600760009054906101000a900460ff16905090565b61059b610d45565b6105a58282610dcc565b5050565b6105b1610e4e565b60008251116105f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ec90611b21565b60405180910390fd5b60006105ff610ba3565b905061060b8183610e94565b7faccd23c8bfefb9bb75038060da86669b045e6212cc3d5a08f4d571af8cd4fce581848460405161063e93929190611b41565b60405180910390a15061064f610f16565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106a3610d45565b6106ad6000610f20565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546106e890611aa4565b80601f016020809104026020016040519081016040528092919081815260200182805461071490611aa4565b80156107615780601f1061073657610100808354040283529160200191610761565b820191906000526020600020905b81548152906001019060200180831161074457829003601f168201915b5050505050905090565b610773610d45565b61077d8282610e94565b5050565b60008061078c610ba3565b9050610799818585610c51565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000610835610fe6565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff161480156108835750825b9050600060018367ffffffffffffffff161480156108b8575060003073ffffffffffffffffffffffffffffffffffffffff163b145b9050811580156108c6575080155b156108fd576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550831561094d5760018560000160086101000a81548160ff0219169083151502179055505b886003908161095c9190611d2b565b50876004908161096c9190611d2b565b5086600760006101000a81548160ff021916908360ff16021790555061099186610f20565b83156109ed5760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260016040516109e49190611e4c565b60405180910390a15b505050505050505050565b610a00610e4e565b6000825111610a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3b90611b21565b60405180910390fd5b6000610a4e610ba3565b9050610a5b848284610bbd565b610a658483610e94565b7faccd23c8bfefb9bb75038060da86669b045e6212cc3d5a08f4d571af8cd4fce5848484604051610a9893929190611b41565b60405180910390a150610aa9610f16565b505050565b610ab6610d45565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b285760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610b1f91906118e0565b60405180910390fd5b610b3181610f20565b50565b600181565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b610bb8838383600161100e565b505050565b6000610bc984846107a4565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c4b5781811015610c3b578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610c3293929190611e67565b60405180910390fd5b610c4a8484848403600061100e565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610cc35760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610cba91906118e0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d355760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610d2c91906118e0565b60405180910390fd5b610d408383836111e5565b505050565b610d4d610ba3565b73ffffffffffffffffffffffffffffffffffffffff16610d6b6106af565b73ffffffffffffffffffffffffffffffffffffffff1614610dca57610d8e610ba3565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610dc191906118e0565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e3e5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610e3591906118e0565b60405180910390fd5b610e4a600083836111e5565b5050565b600260065403610e8a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600681905550565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f065760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610efd91906118e0565b60405180910390fd5b610f12826000836111e5565b5050565b6001600681905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036110805760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161107791906118e0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110f25760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016110e991906118e0565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080156111df578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516111d6919061166e565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361123757806002600082825461122b9190611ecd565b9250508190555061130a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156112c3578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016112ba93929190611e67565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361135357806002600082825403925050819055506113a0565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113fd919061166e565b60405180910390a3505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6114538161141e565b811461145e57600080fd5b50565b6000813590506114708161144a565b92915050565b60006020828403121561148c5761148b611414565b5b600061149a84828501611461565b91505092915050565b60008115159050919050565b6114b8816114a3565b82525050565b60006020820190506114d360008301846114af565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156115135780820151818401526020810190506114f8565b60008484015250505050565b6000601f19601f8301169050919050565b600061153b826114d9565b61154581856114e4565b93506115558185602086016114f5565b61155e8161151f565b840191505092915050565b600060208201905081810360008301526115838184611530565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115b68261158b565b9050919050565b6115c6816115ab565b81146115d157600080fd5b50565b6000813590506115e3816115bd565b92915050565b6000819050919050565b6115fc816115e9565b811461160757600080fd5b50565b600081359050611619816115f3565b92915050565b6000806040838503121561163657611635611414565b5b6000611644858286016115d4565b92505060206116558582860161160a565b9150509250929050565b611668816115e9565b82525050565b6000602082019050611683600083018461165f565b92915050565b6000806000606084860312156116a2576116a1611414565b5b60006116b0868287016115d4565b93505060206116c1868287016115d4565b92505060406116d28682870161160a565b9150509250925092565b600060ff82169050919050565b6116f2816116dc565b82525050565b600060208201905061170d60008301846116e9565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6117558261151f565b810181811067ffffffffffffffff821117156117745761177361171d565b5b80604052505050565b600061178761140a565b9050611793828261174c565b919050565b600067ffffffffffffffff8211156117b3576117b261171d565b5b6117bc8261151f565b9050602081019050919050565b82818337600083830152505050565b60006117eb6117e684611798565b61177d565b90508281526020810184848401111561180757611806611718565b5b6118128482856117c9565b509392505050565b600082601f83011261182f5761182e611713565b5b813561183f8482602086016117d8565b91505092915050565b6000806040838503121561185f5761185e611414565b5b600083013567ffffffffffffffff81111561187d5761187c611419565b5b6118898582860161181a565b925050602061189a8582860161160a565b9150509250929050565b6000602082840312156118ba576118b9611414565b5b60006118c8848285016115d4565b91505092915050565b6118da816115ab565b82525050565b60006020820190506118f560008301846118d1565b92915050565b6000806040838503121561191257611911611414565b5b6000611920858286016115d4565b9250506020611931858286016115d4565b9150509250929050565b611944816116dc565b811461194f57600080fd5b50565b6000813590506119618161193b565b92915050565b6000806000806080858703121561198157611980611414565b5b600085013567ffffffffffffffff81111561199f5761199e611419565b5b6119ab8782880161181a565b945050602085013567ffffffffffffffff8111156119cc576119cb611419565b5b6119d88782880161181a565b93505060406119e987828801611952565b92505060606119fa878288016115d4565b91505092959194509250565b600080600060608486031215611a1f57611a1e611414565b5b6000611a2d868287016115d4565b935050602084013567ffffffffffffffff811115611a4e57611a4d611419565b5b611a5a8682870161181a565b9250506040611a6b8682870161160a565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611abc57607f821691505b602082108103611acf57611ace611a75565b5b50919050565b7f746f206d757374206265207661696c6420696161206164647265737300000000600082015250565b6000611b0b601c836114e4565b9150611b1682611ad5565b602082019050919050565b60006020820190508181036000830152611b3a81611afe565b9050919050565b6000606082019050611b5660008301866118d1565b8181036020830152611b688185611530565b9050611b77604083018461165f565b949350505050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611be17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611ba4565b611beb8683611ba4565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611c28611c23611c1e846115e9565b611c03565b6115e9565b9050919050565b6000819050919050565b611c4283611c0d565b611c56611c4e82611c2f565b848454611bb1565b825550505050565b600090565b611c6b611c5e565b611c76818484611c39565b505050565b5b81811015611c9a57611c8f600082611c63565b600181019050611c7c565b5050565b601f821115611cdf57611cb081611b7f565b611cb984611b94565b81016020851015611cc8578190505b611cdc611cd485611b94565b830182611c7b565b50505b505050565b600082821c905092915050565b6000611d0260001984600802611ce4565b1980831691505092915050565b6000611d1b8383611cf1565b9150826002028217905092915050565b611d34826114d9565b67ffffffffffffffff811115611d4d57611d4c61171d565b5b611d578254611aa4565b611d62828285611c9e565b600060209050601f831160018114611d955760008415611d83578287015190505b611d8d8582611d0f565b865550611df5565b601f198416611da386611b7f565b60005b82811015611dcb57848901518255600182019150602085019450602081019050611da6565b86831015611de85784890151611de4601f891682611cf1565b8355505b6001600288020188555050505b505050505050565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000611e36611e31611e2c84611dfd565b611c03565b611e07565b9050919050565b611e4681611e1b565b82525050565b6000602082019050611e616000830184611e3d565b92915050565b6000606082019050611e7c60008301866118d1565b611e89602083018561165f565b611e96604083018461165f565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611ed8826115e9565b9150611ee3836115e9565b9250828201905080821115611efb57611efa611e9e565b5b9291505056fea26469706673582212209d7b0a9553b595207a647ab62f6f3b7e03cdf341d5d2bdf873c37dfb32c38ab264736f6c63430008170033" + "bin": "60806040523480156200001157600080fd5b50604051620014f1380380620014f18339810160408190526200003491620002da565b3383836003620000458382620003f0565b506004620000548282620003f0565b5050506001600160a01b0381166200008657604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200009181620001c0565b5060016006557ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b0316600081158015620000e25750825b90506000826001600160401b03166001148015620000ff5750303b155b9050811580156200010e575080155b156200012d5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156200015c57845460ff60401b1916680100000000000000001785555b6007805460ff191660ff88161790558315620001b257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050620004bc565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023a57600080fd5b81516001600160401b038082111562000257576200025762000212565b604051601f8301601f19908116603f0116810190828211818310171562000282576200028262000212565b8160405283815260209250866020858801011115620002a057600080fd5b600091505b83821015620002c45785820183015181830184015290820190620002a5565b6000602085830101528094505050505092915050565b600080600060608486031215620002f057600080fd5b83516001600160401b03808211156200030857600080fd5b620003168783880162000228565b945060208601519150808211156200032d57600080fd5b506200033c8682870162000228565b925050604084015160ff811681146200035457600080fd5b809150509250925092565b600181811c908216806200037457607f821691505b6020821081036200039557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003eb576000816000526020600020601f850160051c81016020861015620003c65750805b601f850160051c820191505b81811015620003e757828155600101620003d2565b5050505b505050565b81516001600160401b038111156200040c576200040c62000212565b62000424816200041d84546200035f565b846200039b565b602080601f8311600181146200045c5760008415620004435750858301515b600019600386901b1c1916600185901b178555620003e7565b600085815260208120601f198616915b828110156200048d578886015182559484019460019091019084016200046c565b5085821015620004ac5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61102580620004cc6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063715018a6116100ad578063dd62ed3e11610071578063dd62ed3e14610256578063de7ea79d1461028f578063e9e4e866146102a2578063f2fde38b146102b5578063ffa1ad74146102c857600080fd5b8063715018a6146102055780638da5cb5b1461020d57806395d89b41146102285780639dc29fac14610230578063a9059cbb1461024357600080fd5b806323b872dd116100f457806323b872dd14610188578063313ce5671461019b57806340c10f19146101b457806354162c9c146101c957806370a08231146101dc57600080fd5b806301ffc9a71461012657806306fdde031461014e578063095ea7b31461016357806318160ddd14610176575b600080fd5b610139610134366004610b2a565b6102d0565b60405190151581526020015b60405180910390f35b610156610322565b6040516101459190610ba1565b610139610171366004610bd0565b6103b4565b6002545b604051908152602001610145565b610139610196366004610bfa565b6103cc565b60075460ff165b60405160ff9091168152602001610145565b6101c76101c2366004610bd0565b6103f0565b005b6101c76101d7366004610cd9565b610406565b61017a6101ea366004610d1e565b6001600160a01b031660009081526020819052604090205490565b6101c76104b5565b6005546040516001600160a01b039091168152602001610145565b6101566104c9565b6101c761023e366004610bd0565b6104d8565b610139610251366004610bd0565b6104ea565b61017a610264366004610d39565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101c761029d366004610d6c565b6104f8565b6101c76102b0366004610df9565b610634565b6101c76102c3366004610d1e565b6106ee565b6101a2600181565b60006001600160e01b031982166336372b0760e01b148061030157506001600160e01b0319821663a219a02560e01b145b8061031c57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606003805461033190610e50565b80601f016020809104026020016040519081016040528092919081815260200182805461035d90610e50565b80156103aa5780601f1061037f576101008083540402835291602001916103aa565b820191906000526020600020905b81548152906001019060200180831161038d57829003601f168201915b5050505050905090565b6000336103c281858561072c565b5060019392505050565b6000336103da858285610739565b6103e58585856107b7565b506001949350505050565b6103f8610816565b6104028282610843565b5050565b61040e610879565b60008251116104645760405162461bcd60e51b815260206004820152601c60248201527f746f206d757374206265207661696c642069616120616464726573730000000060448201526064015b60405180910390fd5b3361046f81836108a3565b7faccd23c8bfefb9bb75038060da86669b045e6212cc3d5a08f4d571af8cd4fce58184846040516104a293929190610e8a565b60405180910390a1506104026001600655565b6104bd610816565b6104c760006108d9565b565b60606004805461033190610e50565b6104e0610816565b61040282826108a3565b6000336103c28185856107b7565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff1660008115801561053e5750825b905060008267ffffffffffffffff16600114801561055b5750303b155b905081158015610569575080155b156105875760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156105b157845460ff60401b1916600160401b1785555b60036105bd8a82610f0e565b5060046105ca8982610f0e565b506007805460ff191660ff89161790556105e3866108d9565b831561062957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b61063c610879565b600082511161068d5760405162461bcd60e51b815260206004820152601c60248201527f746f206d757374206265207661696c6420696161206164647265737300000000604482015260640161045b565b33610699848284610739565b6106a384836108a3565b7faccd23c8bfefb9bb75038060da86669b045e6212cc3d5a08f4d571af8cd4fce58484846040516106d693929190610e8a565b60405180910390a1506106e96001600655565b505050565b6106f6610816565b6001600160a01b03811661072057604051631e4fbdf760e01b81526000600482015260240161045b565b610729816108d9565b50565b6106e9838383600161092b565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146107b157818110156107a257604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161045b565b6107b18484848403600061092b565b50505050565b6001600160a01b0383166107e157604051634b637e8f60e11b81526000600482015260240161045b565b6001600160a01b03821661080b5760405163ec442f0560e01b81526000600482015260240161045b565b6106e9838383610a00565b6005546001600160a01b031633146104c75760405163118cdaa760e01b815233600482015260240161045b565b6001600160a01b03821661086d5760405163ec442f0560e01b81526000600482015260240161045b565b61040260008383610a00565b60026006540361089c57604051633ee5aeb560e01b815260040160405180910390fd5b6002600655565b6001600160a01b0382166108cd57604051634b637e8f60e11b81526000600482015260240161045b565b61040282600083610a00565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166109555760405163e602df0560e01b81526000600482015260240161045b565b6001600160a01b03831661097f57604051634a1406b160e11b81526000600482015260240161045b565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156107b157826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109f291815260200190565b60405180910390a350505050565b6001600160a01b038316610a2b578060026000828254610a209190610fce565b90915550610a9d9050565b6001600160a01b03831660009081526020819052604090205481811015610a7e5760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161045b565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610ab957600280548290039055610ad8565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b1d91815260200190565b60405180910390a3505050565b600060208284031215610b3c57600080fd5b81356001600160e01b031981168114610b5457600080fd5b9392505050565b6000815180845260005b81811015610b8157602081850181015186830182015201610b65565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610b546020830184610b5b565b80356001600160a01b0381168114610bcb57600080fd5b919050565b60008060408385031215610be357600080fd5b610bec83610bb4565b946020939093013593505050565b600080600060608486031215610c0f57600080fd5b610c1884610bb4565b9250610c2660208501610bb4565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610c5d57600080fd5b813567ffffffffffffffff80821115610c7857610c78610c36565b604051601f8301601f19908116603f01168101908282118183101715610ca057610ca0610c36565b81604052838152866020858801011115610cb957600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060408385031215610cec57600080fd5b823567ffffffffffffffff811115610d0357600080fd5b610d0f85828601610c4c565b95602094909401359450505050565b600060208284031215610d3057600080fd5b610b5482610bb4565b60008060408385031215610d4c57600080fd5b610d5583610bb4565b9150610d6360208401610bb4565b90509250929050565b60008060008060808587031215610d8257600080fd5b843567ffffffffffffffff80821115610d9a57600080fd5b610da688838901610c4c565b95506020870135915080821115610dbc57600080fd5b50610dc987828801610c4c565b935050604085013560ff81168114610de057600080fd5b9150610dee60608601610bb4565b905092959194509250565b600080600060608486031215610e0e57600080fd5b610e1784610bb4565b9250602084013567ffffffffffffffff811115610e3357600080fd5b610e3f86828701610c4c565b925050604084013590509250925092565b600181811c90821680610e6457607f821691505b602082108103610e8457634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b0384168152606060208201819052600090610eae90830185610b5b565b9050826040830152949350505050565b601f8211156106e9576000816000526020600020601f850160051c81016020861015610ee75750805b601f850160051c820191505b81811015610f0657828155600101610ef3565b505050505050565b815167ffffffffffffffff811115610f2857610f28610c36565b610f3c81610f368454610e50565b84610ebe565b602080601f831160018114610f715760008415610f595750858301515b600019600386901b1c1916600185901b178555610f06565b600085815260208120601f198616915b82811015610fa057888601518255948401946001909101908401610f81565b5085821015610fbe5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111561031c57634e487b7160e01b600052601160045260246000fdfea264697066735822122038d45b9e40b0dd5c8c9a95fa33c5eca2ac1cd6617489d073377e3a53d438197164736f6c63430008170033" } diff --git a/contracts/compiled_contracts/TokenProxy.json b/contracts/compiled_contracts/TokenProxy.json index fbed0b15..63104d66 100644 --- a/contracts/compiled_contracts/TokenProxy.json +++ b/contracts/compiled_contracts/TokenProxy.json @@ -107,5 +107,5 @@ "type": "receive" } ], - "bin": "60a060405234801561001057600080fd5b5060405162000a4338038062000a4383398181016040528101906100349190610697565b8181610046828261008360201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050505050506107a8565b6100928261017660201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff167f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e60405160405180910390a26000815111156101635761015d8273ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561012d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015191906106f3565b8261031960201b60201c565b50610172565b6101716103a360201b60201c565b5b5050565b60008173ffffffffffffffffffffffffffffffffffffffff163b036101d257806040517f64ced0ec0000000000000000000000000000000000000000000000000000000081526004016101c9919061072f565b60405180910390fd5b806102057fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6103e060201b60201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008173ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b791906106f3565b905060008173ffffffffffffffffffffffffffffffffffffffff163b0361031557806040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815260040161030c919061072f565b60405180910390fd5b5050565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516103439190610791565b600060405180830381855af49150503d806000811461037e576040519150601f19603f3d011682016040523d82523d6000602084013e610383565b606091505b50915091506103998583836103ea60201b60201c565b9250505092915050565b60003411156103de576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000819050919050565b606082610405576104008261047f60201b60201c565b610477565b6000825114801561042d575060008473ffffffffffffffffffffffffffffffffffffffff163b145b1561046f57836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401610466919061072f565b60405180910390fd5b819050610478565b5b9392505050565b6000815111156104925780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610503826104d8565b9050919050565b610513816104f8565b811461051e57600080fd5b50565b6000815190506105308161050a565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61058982610540565b810181811067ffffffffffffffff821117156105a8576105a7610551565b5b80604052505050565b60006105bb6104c4565b90506105c78282610580565b919050565b600067ffffffffffffffff8211156105e7576105e6610551565b5b6105f082610540565b9050602081019050919050565b60005b8381101561061b578082015181840152602081019050610600565b60008484015250505050565b600061063a610635846105cc565b6105b1565b9050828152602081018484840111156106565761065561053b565b5b6106618482856105fd565b509392505050565b600082601f83011261067e5761067d610536565b5b815161068e848260208601610627565b91505092915050565b600080604083850312156106ae576106ad6104ce565b5b60006106bc85828601610521565b925050602083015167ffffffffffffffff8111156106dd576106dc6104d3565b5b6106e985828601610669565b9150509250929050565b600060208284031215610709576107086104ce565b5b600061071784828501610521565b91505092915050565b610729816104f8565b82525050565b60006020820190506107446000830184610720565b92915050565b600081519050919050565b600081905092915050565b600061076b8261074a565b6107758185610755565b93506107858185602086016105fd565b80840191505092915050565b600061079d8284610760565b915081905092915050565b60805161027f620007c4600039600061016b015261027f6000f3fe60806040526004361061002d5760003560e01c80632d6b3a6b1461003e5780635c60da1b1461006957610034565b3661003457005b61003c610094565b005b34801561004a57600080fd5b506100536100a6565b60405161006091906101d0565b60405180910390f35b34801561007557600080fd5b5061007e6100b5565b60405161008b91906101d0565b60405180910390f35b6100a461009f6100c4565b610141565b565b60006100b0610167565b905090565b60006100bf6100c4565b905090565b60006100ce610167565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610118573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013c919061021c565b905090565b3660008037600080366000845af43d6000803e8060008114610162573d6000f35b3d6000fd5b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006101ba8261018f565b9050919050565b6101ca816101af565b82525050565b60006020820190506101e560008301846101c1565b92915050565b600080fd5b6101f9816101af565b811461020457600080fd5b50565b600081519050610216816101f0565b92915050565b600060208284031215610232576102316101eb565b5b600061024084828501610207565b9150509291505056fea26469706673582212201a3643ba9d97d2b014ba9c42b0039e8b63086047f1663bd8982913a53dfeecde64736f6c63430008170033" + "bin": "60a060405234801561001057600080fd5b5060405161067938038061067983398101604081905261002f91610399565b818161003b8282610050565b506001600160a01b0316608052506104909050565b61005982610110565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a2805115610104576100ff826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f99190610459565b82610223565b505050565b61010c61029a565b5050565b806001600160a01b03163b60000361014b57604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b81529051600092841691635c60da1b9160048083019260209291908290030181865afa1580156101c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101eb9190610459565b9050806001600160a01b03163b60000361010c57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610142565b6060600080846001600160a01b0316846040516102409190610474565b600060405180830381855af49150503d806000811461027b576040519150601f19603f3d011682016040523d82523d6000602084013e610280565b606091505b5090925090506102918583836102bb565b95945050505050565b34156102b95760405163b398979f60e01b815260040160405180910390fd5b565b6060826102d0576102cb8261031a565b610313565b81511580156102e757506001600160a01b0384163b155b1561031057604051639996b31560e01b81526001600160a01b0385166004820152602401610142565b50805b9392505050565b80511561032a5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80516001600160a01b038116811461035a57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015610390578181015183820152602001610378565b50506000910152565b600080604083850312156103ac57600080fd5b6103b583610343565b60208401519092506001600160401b03808211156103d257600080fd5b818501915085601f8301126103e657600080fd5b8151818111156103f8576103f861035f565b604051601f8201601f19908116603f011681019083821181831017156104205761042061035f565b8160405282815288602084870101111561043957600080fd5b61044a836020830160208801610375565b80955050505050509250929050565b60006020828403121561046b57600080fd5b61031382610343565b60008251610486818460208701610375565b9190910192915050565b6080516101c96104b060003960008181604d015260bf01526101c96000f3fe60806040526004361061002d5760003560e01c80632d6b3a6b1461003e5780635c60da1b1461008957610034565b3661003457005b61003c61009e565b005b34801561004a57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b03909116815260200160405180910390f35b34801561009557600080fd5b5061006d6100b5565b6100ae6100a96100bb565b61013f565b565b905090565b60006100b05b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561011b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b09190610163565b3660008037600080366000845af43d6000803e80801561015e573d6000f35b3d6000fd5b60006020828403121561017557600080fd5b81516001600160a01b038116811461018c57600080fd5b939250505056fea26469706673582212208b5650c1db5b7f1b1fac3bf7542a04f54fef1013df6e6bfe0f654e01e4a7c21b64736f6c63430008170033" } diff --git a/contracts/compiled_contracts/UpgradeableBeacon.json b/contracts/compiled_contracts/UpgradeableBeacon.json index 1edf3b01..ac4d4820 100644 --- a/contracts/compiled_contracts/UpgradeableBeacon.json +++ b/contracts/compiled_contracts/UpgradeableBeacon.json @@ -141,5 +141,5 @@ "type": "function" } ], - "bin": "608060405234801561001057600080fd5b5060405161084f38038061084f833981810160405281019061003291906102d5565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a55760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161009c9190610324565b60405180910390fd5b6100b4816100cb60201b60201c565b506100c48261018f60201b60201c565b505061033f565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008173ffffffffffffffffffffffffffffffffffffffff163b036101eb57806040517f847ac5640000000000000000000000000000000000000000000000000000000081526004016101e29190610324565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006102a282610277565b9050919050565b6102b281610297565b81146102bd57600080fd5b50565b6000815190506102cf816102a9565b92915050565b600080604083850312156102ec576102eb610272565b5b60006102fa858286016102c0565b925050602061030b858286016102c0565b9150509250929050565b61031e81610297565b82525050565b60006020820190506103396000830184610315565b92915050565b6105018061034e6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610078578063715018a6146100965780638da5cb5b146100a0578063f2fde38b146100be575b600080fd5b61007660048036038101906100719190610474565b6100da565b005b6100806100ee565b60405161008d91906104b0565b60405180910390f35b61009e610118565b005b6100a861012c565b6040516100b591906104b0565b60405180910390f35b6100d860048036038101906100d39190610474565b610155565b005b6100e26101db565b6100eb81610262565b50565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6101206101db565b61012a6000610345565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61015d6101db565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101cf5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101c691906104b0565b60405180910390fd5b6101d881610345565b50565b6101e3610409565b73ffffffffffffffffffffffffffffffffffffffff1661020161012c565b73ffffffffffffffffffffffffffffffffffffffff161461026057610224610409565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161025791906104b0565b60405180910390fd5b565b60008173ffffffffffffffffffffffffffffffffffffffff163b036102be57806040517f847ac5640000000000000000000000000000000000000000000000000000000081526004016102b591906104b0565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061044182610416565b9050919050565b61045181610436565b811461045c57600080fd5b50565b60008135905061046e81610448565b92915050565b60006020828403121561048a57610489610411565b5b60006104988482850161045f565b91505092915050565b6104aa81610436565b82525050565b60006020820190506104c560008301846104a1565b9291505056fea264697066735822122022522b074e70ca37bd6bd300c1eba3d7f88a2c4dbd01054e923572600c6d3f4e64736f6c63430008170033" + "bin": "608060405234801561001057600080fd5b5060405161043838038061043883398101604081905261002f91610165565b806001600160a01b03811661005f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61006881610079565b50610072826100c9565b5050610198565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b6000036100ff5760405163211eb15960e21b81526001600160a01b0382166004820152602401610056565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b80516001600160a01b038116811461016057600080fd5b919050565b6000806040838503121561017857600080fd5b61018183610149565b915061018f60208401610149565b90509250929050565b610291806101a76000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a36600461022b565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f6100da565b6000546001600160a01b031661007e565b61006f6100c136600461022b565b6100ee565b6100ce61012e565b6100d78161015b565b50565b6100e261012e565b6100ec60006101db565b565b6100f661012e565b6001600160a01b03811661012557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6100d7816101db565b6000546001600160a01b031633146100ec5760405163118cdaa760e01b815233600482015260240161011c565b806001600160a01b03163b6000036101915760405163211eb15960e21b81526001600160a01b038216600482015260240161011c565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561023d57600080fd5b81356001600160a01b038116811461025457600080fd5b939250505056fea26469706673582212205b1b27183336955cbfa7c1ea14bb33fa343bb0e7f2b847bfa12815a13dfeca8264736f6c63430008170033" }