[ { "inputs": [ { "internalType": "address", "name": "multiSignature", "type": "address" }, { "internalType": "address", "name": "origin0", "type": "address" }, { "internalType": "address", "name": "origin1", "type": "address" }, { "internalType": "address", "name": "_dsOracle", "type": "address" }, { "internalType": "address payable", "name": "_FeePool", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOrigin", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOrigin", "type": "address" } ], "name": "OriginTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "address", "name": "_feePool", "type": "address" } ], "name": "SetFeePoolAddress", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_feeRate", "type": "uint256" } ], "name": "SetFeeRate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_enterFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "leaveFee", "type": "uint256" } ], "name": "SetMeltFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "index", "type": "uint256" }, { "indexed": false, "internalType": "uint8", "name": "_reward", "type": "uint8" }, { "indexed": false, "internalType": "bool", "name": "_bClosed", "type": "bool" }, { "indexed": false, "internalType": "address", "name": "_rewardToken", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_sellLimit", "type": "uint256" } ], "name": "SetReward", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_slipRate", "type": "uint256" } ], "name": "SetSlipRate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "token0", "type": "address" }, { "indexed": true, "internalType": "address", "name": "token1", "type": "address" }, { "indexed": false, "internalType": "address[]", "name": "swapPath", "type": "address[]" } ], "name": "SetSwapRoutingPath", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "FeePool", "outputs": [ { "internalType": "address payable", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WAVAX", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "av3Crv", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "compound", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "curveGauge", "outputs": [ { "internalType": "contract ICurveGauge", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "curvePool", "outputs": [ { "internalType": "contract ICurvePool", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "enter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "enterFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "enterAmount", "type": "uint256" } ], "name": "getEnterMeltFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "leaveAmount", "type": "uint256" } ], "name": "getLeaveMeltFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMultiSignatureAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getOracleAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getStakeTokenPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "getSwapRouterPath", "outputs": [ { "internalType": "address[]", "name": "path", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token0", "type": "address" }, { "internalType": "address", "name": "token1", "type": "address" } ], "name": "getSwapRouterPathInfo", "outputs": [ { "internalType": "address[]", "name": "path", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "isOrigin", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isOwner", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "latestCompoundTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_share", "type": "uint256" } ], "name": "leave", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "leaveFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "melt", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "meltFeePool", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "rewardInfos", "outputs": [ { "internalType": "uint8", "name": "rewardType", "type": "uint8" }, { "internalType": "bool", "name": "bClosed", "type": "bool" }, { "internalType": "address", "name": "rewardToken", "type": "address" }, { "internalType": "uint256", "name": "sellLimit", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "feeAddress", "type": "address" } ], "name": "setFeePoolAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_feeRate", "type": "uint256" } ], "name": "setFeeRate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_enterFee", "type": "uint256" }, { "internalType": "uint256", "name": "_leaveFee", "type": "uint256" } ], "name": "setMeltFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "oracle", "type": "address" } ], "name": "setOracleAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" }, { "internalType": "uint8", "name": "_reward", "type": "uint8" }, { "internalType": "bool", "name": "_bClosed", "type": "bool" }, { "internalType": "address", "name": "_rewardToken", "type": "address" }, { "internalType": "uint256", "name": "_sellLimit", "type": "uint256" } ], "name": "setReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_slipRate", "type": "uint256" } ], "name": "setSlipRate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token0", "type": "address" }, { "internalType": "address", "name": "token1", "type": "address" }, { "internalType": "address[]", "name": "swapPath", "type": "address[]" } ], "name": "setSwapRoutingPathInfo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "slipRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "stakeBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "stakeToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "swapRoutingPath", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "traderJoe", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_oldOrigin", "type": "address" }, { "internalType": "address", "name": "_newOrigin", "type": "address" } ], "name": "transferOrigin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "txOrigin", "outputs": [ { "internalType": "address", "name": "_origin0", "type": "address" }, { "internalType": "address", "name": "_origin1", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "underlying", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040526005805460ff60a81b1916905561251c6008556107d06009556611c37937e08000600a556000600b55600e80546001600160a01b03199081167347eb6f7525c1aa999fbc9ee92715f5231eb1241d179091556010805490911673a7d7079b0fead91f3e65f86e8915cb59c1a4c6641790553480156200008257600080fd5b5060405162004c2538038062004c25833981810160405260a0811015620000a857600080fd5b50805160208201516040830151606084015160809094015192939192909190848484735b5cfe992adac0c9d48e05854b2d91c73a0038588585858585826001600160a01b0381166200012c5760405162461bcd60e51b815260040180806020018281038252604381526020018062004b306043913960600191505060405180910390fd5b620001617f860a69b4e688133bace199665ed9e08fba224f0ea3198771160e97c111c09e4c6001600160a01b038316620004e4565b506001600160a01b038316158015906200018357506001600160a01b03821615155b80156200019857506001600160a01b03811615155b620001ea576040805162461bcd60e51b815260206004820152601f60248201527f70726f78794f776e6572203a20696e707574207a65726f206164647265737300604482015290519081900360640190fd5b620001f533620004e8565b6200020260008362000544565b6200020f60008262000544565b5050600780546001600160a01b038085166001600160a01b0319928316179092556005805486841661010002610100600160a81b0319909116179055600680549287169290911691909117905550620002676200063b565b5050505050506200029f600080600073b31f66aa3c1e785363f0875a1b74e27b85fd66c766038d7ea4c6800062000a1660201b60201c565b620002cb60018060007347536f17f4ff30e64a96a7555826b8f9e66ec468662386f26fc1000062000a16565b60105462000306906001600160a01b0316737f90122bf0700f9e7e1f688fe926940e8839f35360001962000bef602090811b62001e7d17901c565b62000348731337bedc9d22ecbe766df105c9623922a27963ec735b5cfe992adac0c9d48e05854b2d91c73a00385860001962000bef60201b62001e7d1760201c565b604080516003808252608082019092527347536f17f4ff30e64a96a7555826b8f9e66ec46891602082016060803683375050506001600160a01b038281166000908152600d6020908152604080832060105490941683529281529190208251620003b993919291909101906200107b565b506001600160a01b038082166000908152600d6020908152604080832060105490941683529290529081208054839290620003f057fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790558383168252600d81526040808320601054909416835292905220805473b31f66aa3c1e785363f0875a1b74e27b85fd66c7919060019081106200045757fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790556010548484168352600d8252604080842091909416808452915291902080546002908110620004aa57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050505050506200117f565b9055565b6001600160a01b038116620004fc62000d0e565b6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008051602062004b7383398151915255565b806001600160a01b0316826001600160a01b03167f6b0ba40b63fe0a4e591f25c6d723a40b532ff7cf536f3ce5abc7f6fb9969418060405160405180910390a36000806200059162000d22565b91509150836001600160a01b0316826001600160a01b03161415620005c95760008051602062004b1083398151915283905562000635565b836001600160a01b0316816001600160a01b03161415620005fd5760008051602062004af083398151915283905562000635565b60405162461bcd60e51b815260040180806020018281038252603281526020018062004bf36032913960400191505060405180910390fd5b50505050565b600654604080516306fdde0360e01b815290516001600160a01b039092169160609183916306fdde0391600480820192600092909190829003018186803b1580156200068657600080fd5b505afa1580156200069b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015620006c557600080fd5b8101908080516040519392919084640100000000821115620006e657600080fd5b908301906020820185811115620006fc57600080fd5b82516401000000008111828201881017156200071757600080fd5b82525081516020918201929091019080838360005b83811015620007465781810151838201526020016200072c565b50505050905090810190601f168015620007745780820380516001836020036101000a031916815260200191505b50604052505050604051602001808065029bab832b9160d51b81525060060182805190602001908083835b60208310620007c05780518252601f1990920191602091820191016200079f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405290506060826001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156200083257600080fd5b505afa15801562000847573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156200087157600080fd5b81019080805160405193929190846401000000008211156200089257600080fd5b908301906020820185811115620008a857600080fd5b8251640100000000811182820188101715620008c357600080fd5b82525081516020918201929091019080838360005b83811015620008f2578181015183820152602001620008d8565b50505050905090810190601f168015620009205780820380516001836020036101000a031916815260200191505b506040525050506040516020018080605360f81b81525060010182805190602001908083835b60208310620009675780518252601f19909201916020918201910162000946565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052905062000a118282856001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015620009dd57600080fd5b505afa158015620009f2573d6000803e3d6000fd5b505050506040513d602081101562000a0957600080fd5b505162000d48565b505050565b600f5485101562000a84576000600f868154811062000a3157fe5b60009182526020909120600290910201805460ff191660ff87161761ff001916610100861515021762010000600160b01b031916620100006001600160a01b038616021781556001018290555062000b8c565b6040805160808101825260ff8087168252851515602083019081526001600160a01b0380871694840185815260608501878152600f8054600181018255600091909152955160029096027f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8028101805495519351909416620100000262010000600160b01b03199315156101000261ff00199890971660ff1990961695909517969096169490941716919091179055517f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac803909101551562000b8c5762000b8c827360ae616a2155ee3d9a68541ba4544862310933d460001962000bef60201b62001e7d1760201c565b6040805186815260ff86166020820152841515818301526001600160a01b038416606082015260808101839052905133917fc9ed0cc3bedda8d5f6d31c3b9351ce17b1478ca1d10281ce8e5e958cb38cc219919081900360a00190a25050505050565b80158062000c79575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801562000c4957600080fd5b505afa15801562000c5e573d6000803e3d6000fd5b505050506040513d602081101562000c7557600080fd5b5051155b62000cb65760405162461bcd60e51b815260040180806020018281038252603681526020018062004bbd6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b1790915262000a1191859162000d8c16565b60008051602062004b738339815191525490565b60008051602062004b108339815191525460008051602062004af0833981519152549091565b825162000d5d906003906020860190620010e5565b50815162000d73906004906020850190620010e5565b506005805460ff191660ff929092169190911790555050565b606062000de8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031662000e4860201b62001f90179092919060201c565b80519091501562000a115780806020019051602081101562000e0957600080fd5b505162000a115760405162461bcd60e51b815260040180806020018281038252602a81526020018062004b93602a913960400191505060405180910390fd5b606062000e59848460008562000e63565b90505b9392505050565b60608247101562000ea65760405162461bcd60e51b815260040180806020018281038252602681526020018062004aca6026913960400191505060405180910390fd5b62000eb18562000fcb565b62000f03576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b6020831062000f445780518252601f19909201916020918201910162000f23565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811462000fa8576040519150601f19603f3d011682016040523d82523d6000602084013e62000fad565b606091505b50909250905062000fc082828662000fd1565b979650505050505050565b3b151590565b6060831562000fe257508162000e5c565b82511562000ff35782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200103f57818101518382015260200162001025565b50505050905090810190601f1680156200106d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b828054828255906000526020600020908101928215620010d3579160200282015b82811115620010d357825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906200109c565b50620010e192915062001168565b5090565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200111d5760008555620010d3565b82601f106200113857805160ff1916838001178555620010d3565b82800160010185558215620010d3579182015b82811115620010d35782518255916020019190600101906200114b565b5b80821115620010e1576000815560010162001169565b61393b806200118f6000396000f3fe6080604052600436106103035760003560e01c806373b295c211610190578063afe5e5b6116100dc578063dd62ed3e11610095578063f595416f1161006f578063f595416f14610b86578063f69e204614610b9b578063f6c1da1a14610bb0578063f96757d114610beb5761030a565b8063dd62ed3e14610b03578063ea3460cc14610b3e578063f2fde38b14610b535761030a565b8063afe5e5b6146109d3578063b18b78dd14610a67578063b22a8ffb14610a7c578063b2df3dd514610aa6578063b40643a914610abb578063d94969ad14610ad05761030a565b806393bc9dfe1161014957806397c86edf1161012357806397c86edf146108e7578063a457c2d714610937578063a59f3e0c14610970578063a9059cbb1461099a5761030a565b806393bc9dfe146108a857806395d89b41146108bd578063978bbdb9146108d25761030a565b806373b295c2146107c85780637fc245f4146107dd578063888eb377146107f257806389d6517f146108225780638da5cb5b1461087e5780638f32d59b146108935761030a565b8063395093511161024f5780635220f5101161020857806367dfd4c9116101e257806367dfd4c91461072c578063693ca371146107565780636f307dc31461078057806370a08231146107955761030a565b80635220f510146106ed57806362f7ef6b14610702578063638c7e17146107175761030a565b806339509351146105ca5780633bb8571114610603578063447d10f11461063657806345596e2e146106795780634c69c00f146106a557806351ed6a30146106d85761030a565b806319cab6a5116102bc57806323b872dd1161029657806323b872dd14610532578063280718e2146105755780632de5f5881461058a578063313ce5671461059f5761030a565b806319cab6a51461047d5780631d4c3b0514610492578063218751b21461051d5761030a565b806306fdde031461030f578063085684a214610399578063095ea7b3146103ca5780630bb521531461041757806315ffeea91461043e57806318160ddd146104685761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c2f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561035e578181015183820152602001610346565b50505050905090810190601f16801561038b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103a557600080fd5b506103ae610cc5565b604080516001600160a01b039092168252519081900360200190f35b3480156103d657600080fd5b50610403600480360360408110156103ed57600080fd5b506001600160a01b038135169060200135610cdd565b604080519115158252519081900360200190f35b34801561042357600080fd5b5061042c610cf4565b60408051918252519081900360200190f35b34801561044a57600080fd5b5061042c6004803603602081101561046157600080fd5b5035610cfa565b34801561047457600080fd5b5061042c610d10565b34801561048957600080fd5b506103ae610d16565b34801561049e57600080fd5b506104cd600480360360408110156104b557600080fd5b506001600160a01b0381358116916020013516610d2e565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105095781810151838201526020016104f1565b505050509050019250505060405180910390f35b34801561052957600080fd5b506103ae610e7e565b34801561053e57600080fd5b506104036004803603606081101561055557600080fd5b506001600160a01b03813581169160208101359091169060400135610e96565b34801561058157600080fd5b506103ae610f20565b34801561059657600080fd5b5061042c610f38565b3480156105ab57600080fd5b506105b4610f44565b6040805160ff9092168252519081900360200190f35b3480156105d657600080fd5b50610403600480360360408110156105ed57600080fd5b506001600160a01b038135169060200135610f4d565b34801561060f57600080fd5b506104cd6004803603602081101561062657600080fd5b50356001600160a01b0316610f80565b34801561064257600080fd5b506103ae6004803603606081101561065957600080fd5b506001600160a01b03813581169160208101359091169060400135610f9a565b34801561068557600080fd5b506106a36004803603602081101561069c57600080fd5b5035610fdf565b005b3480156106b157600080fd5b506106a3600480360360208110156106c857600080fd5b50356001600160a01b03166110b6565b3480156106e457600080fd5b506103ae611141565b3480156106f957600080fd5b506103ae611150565b34801561070e57600080fd5b5061042c61115f565b34801561072357600080fd5b506103ae611165565b34801561073857600080fd5b506106a36004803603602081101561074f57600080fd5b5035611195565b34801561076257600080fd5b5061042c6004803603602081101561077957600080fd5b503561122b565b34801561078c57600080fd5b506103ae611287565b3480156107a157600080fd5b5061042c600480360360208110156107b857600080fd5b50356001600160a01b0316611296565b3480156107d457600080fd5b506103ae6112b1565b3480156107e957600080fd5b506103ae6112c9565b3480156107fe57600080fd5b506106a36004803603604081101561081557600080fd5b50803590602001356112ce565b34801561082e57600080fd5b5061084c6004803603602081101561084557600080fd5b5035611361565b6040805160ff909516855292151560208501526001600160a01b03909116838301526060830152519081900360800190f35b34801561088a57600080fd5b506103ae6113aa565b34801561089f57600080fd5b506104036113cf565b3480156108b457600080fd5b5061042c6113fd565b3480156108c957600080fd5b50610324611479565b3480156108de57600080fd5b5061042c6114da565b3480156108f357600080fd5b506106a3600480360360a081101561090a57600080fd5b5080359060ff6020820135169060408101351515906001600160a01b0360608201351690608001356114e0565b34801561094357600080fd5b506104036004803603604081101561095a57600080fd5b506001600160a01b03813516906020013561153f565b34801561097c57600080fd5b506106a36004803603602081101561099357600080fd5b50356115b9565b3480156109a657600080fd5b50610403600480360360408110156109bd57600080fd5b506001600160a01b038135169060200135611664565b3480156109df57600080fd5b506106a3600480360360608110156109f657600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b811115610a2957600080fd5b820183602082011115610a3b57600080fd5b803590602001918460208302840111600160201b83111715610a5c57600080fd5b509092509050611671565b348015610a7357600080fd5b506103ae611774565b348015610a8857600080fd5b506106a360048036036020811015610a9f57600080fd5b5035611788565b348015610ab257600080fd5b5061042c611860565b348015610ac757600080fd5b50610403611866565b348015610adc57600080fd5b506106a360048036036020811015610af357600080fd5b50356001600160a01b031661189e565b348015610b0f57600080fd5b5061042c60048036036040811015610b2657600080fd5b506001600160a01b038135811691602001351661199d565b348015610b4a57600080fd5b5061042c6119c8565b348015610b5f57600080fd5b506106a360048036036020811015610b7657600080fd5b50356001600160a01b03166119ce565b348015610b9257600080fd5b506103ae611a1d565b348015610ba757600080fd5b506106a3611a2c565b348015610bbc57600080fd5b506106a360048036036040811015610bd357600080fd5b506001600160a01b0381358116916020013516611ddc565b348015610bf757600080fd5b50610c00611e35565b60405180836001600160a01b03168152602001826001600160a01b031681526020019250505060405180910390f35b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610cbb5780601f10610c9057610100808354040283529160200191610cbb565b820191906000526020600020905b815481529060010190602001808311610c9e57829003601f168201915b5050505050905090565b7360ae616a2155ee3d9a68541ba4544862310933d481565b6000610cea338484611fa7565b5060015b92915050565b600a5481565b6000610d08600a5483612093565b90505b919050565b60025490565b731337bedc9d22ecbe766df105c9623922a27963ec81565b6001600160a01b038083166000908152600d60209081526040808320938516835292815290829020805483518184028101840190945280845260609392830182828015610da457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d86575b50505050509050600181511115610dba57610cee565b60408051600280825260608201835290916020830190803683370190505090506001600160a01b03831615610def5782610e05565b73b31f66aa3c1e785363f0875a1b74e27b85fd66c75b81600081518110610e1257fe5b6001600160a01b039283166020918202929092010152821615610e355781610e4b565b73b31f66aa3c1e785363f0875a1b74e27b85fd66c75b81600181518110610e5857fe5b60200260200101906001600160a01b031690816001600160a01b03168152505092915050565b737f90122bf0700f9e7e1f688fe926940e8839f35381565b6000610ea38484846120f3565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610f065760405162461bcd60e51b81526004018080602001828103825260288152602001806137956028913960400191505060405180910390fd5b610f138533858403611fa7565b60019150505b9392505050565b735b5cfe992adac0c9d48e05854b2d91c73a00385881565b670de0b6b3a764000090565b60055460ff1690565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610cea9185908501611fa7565b601054606090610d089083906001600160a01b0316610d2e565b600d6020528260005260406000206020528160005260406000208181548110610fc257600080fd5b6000918252602090912001546001600160a01b0316925083915050565b610fe7611866565b6110225760405162461bcd60e51b81526004018080602001828103825260288152602001806138de6028913960400191505060405180910390fd5b61102a61223e565b6113888110611078576040805162461bcd60e51b815260206004820152601560248201527466656552617465206f7574206f662072616e67652160581b604482015290519081900360640190fd5b600981905560408051828152905133917fcfb4ca721b9a64dcc3626a15f4a4e53a6b1edd2a79e24527ac117aa8d9f1e4dd919081900360200190a250565b6110be6113cf565b156110c857611119565b6110d0611866565b156110e2576110dd61223e565b611119565b60405162461bcd60e51b815260040180806020018281038252602981526020018061374b6029913960400191505060405180910390fd5b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6006546001600160a01b031681565b600e546001600160a01b031681565b60085481565b60006111907f860a69b4e688133bace199665ed9e08fba224f0ea3198771160e97c111c09e4c612385565b905090565b600554600160a81b900460ff16156111ac57600080fd5b6005805460ff60a81b1916600160a81b17905560006111c9610d10565b905060006111d56113fd565b905060006111ed836111e78685612389565b906123e2565b90506111f93385612424565b6112033382612522565b61121833611213600b5484612093565b612539565b50506005805460ff60a81b191690555050565b600080611236610d10565b905060006112426113fd565b9050811561127257600061125a836111e78785612389565b9050611268600b5482612093565b9350505050610d0b565b61127e600b5485612093565b92505050610d0b565b6010546001600160a01b031681565b6001600160a01b031660009081526020819052604090205490565b73b31f66aa3c1e785363f0875a1b74e27b85fd66c781565b600181565b6112d6611866565b6113115760405162461bcd60e51b81526004018080602001828103825260288152602001806138de6028913960400191505060405180910390fd5b61131961223e565b600a829055600b8190556040805183815260208101839052815133927f3500782ce2a3d459d1e698f482fd5249b727c7509b402592ce2b851699c71d48928290030190a25050565b600f818154811061137157600080fd5b60009182526020909120600290910201805460019091015460ff8083169350610100830416916201000090046001600160a01b03169084565b7f1221c3ca8a23c3a74a18c944c7b23b29e262f9cd12de4c345744293e8adf4ba75490565b60006113d96113aa565b6001600160a01b0316336001600160a01b0316148015611190575061119033612558565b600654604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561144857600080fd5b505afa15801561145c573d6000803e3d6000fd5b505050506040513d602081101561147257600080fd5b5051905090565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610cbb5780601f10610c9057610100808354040283529160200191610cbb565b60095481565b6114e8611866565b6115235760405162461bcd60e51b81526004018080602001828103825260288152602001806138de6028913960400191505060405180910390fd5b61152b61223e565b611538858585858561255e565b5050505050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156115a25760405162461bcd60e51b81526004018080602001828103825260258152602001806138876025913960400191505060405180910390fd5b6115af3385858403611fa7565b5060019392505050565b600554600160a81b900460ff16156115d057600080fd5b6005805460ff60a81b1916600160a81b17905560006115ed6113fd565b905060006115f9610d10565b9050801580611606575081155b1561161a576116153384612726565b611638565b600061162a836111e78685612389565b90506116363382612726565b505b61164233846127de565b61165233611213600a5486612093565b50506005805460ff60a81b1916905550565b6000610cea3384846120f3565b611679611866565b6116b45760405162461bcd60e51b81526004018080602001828103825260288152602001806138de6028913960400191505060405180910390fd5b6116bc61223e565b6001600160a01b038085166000908152600d602090815260408083209387168352929052206116ec908383613563565b50826001600160a01b0316846001600160a01b0316336001600160a01b03167fa851f77711bcf61336489e08bc8cd6e6881bbec2471fe5fc66d11c434eb4e7de858560405180806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f19169092018290039550909350505050a450505050565b60055461010090046001600160a01b031690565b611790611866565b6117cb5760405162461bcd60e51b81526004018080602001828103825260288152602001806138de6028913960400191505060405180910390fd5b6117d361223e565b6127108110611822576040805162461bcd60e51b8152602060048201526016602482015275736c697052617465206f7574206f662072616e67652160501b604482015290519081900360640190fd5b600881905560408051828152905133917f35ca6ad09ac0fa0744e2b856c92f3844ed78e24b972c93c417891d5bfa512a60919081900360200190a250565b600c5481565b6000806000611873611e35565b9092509050336001600160a01b03831614806118975750336001600160a01b038216145b9250505090565b6118a6611866565b6118e15760405162461bcd60e51b81526004018080602001828103825260288152602001806138de6028913960400191505060405180910390fd5b6118e961223e565b806001600160a01b038116611945576040805162461bcd60e51b815260206004820152601f60248201527f7375706572546f6b656e203a20696e707574207a65726f206164647265737300604482015290519081900360640190fd5b600780546001600160a01b0384166001600160a01b03199091168117909155604080519182525133917f120ec17136aa7b279af12e8fea5a8e3ef6d422f449550263bfe434adc1790472919081900360200190a25050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600b5481565b6119d66113cf565b611a115760405162461bcd60e51b81526004018080602001828103825260498152602001806136ae6049913960600191505060405180910390fd5b611a1a816127f6565b50565b6007546001600160a01b031681565b42600c81905550735b5cfe992adac0c9d48e05854b2d91c73a0038586001600160a01b031663e6f1daf26040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a8257600080fd5b505af1158015611a96573d6000803e3d6000fd5b5050600f549150600090505b81811015611b3d57611ab26135c6565b600f8281548110611abf57fe5b6000918252602091829020604080516080810182526002909302909101805460ff8082168552610100820416158015958501959095526001600160a01b036201000090910416918301919091526001015460608201529150611b215750611b35565b611b3381604001518260600151612861565b505b600101611aa2565b50601054604080516370a0823160e01b815230600482015290516001600160a01b039092169160009183916370a0823191602480820192602092909190829003018186803b158015611b8e57600080fd5b505afa158015611ba2573d6000803e3d6000fd5b505050506040513d6020811015611bb857600080fd5b505190508015611dd7576000612710611bdc6009548461238990919063ffffffff16565b81611be357fe5b6007549190049150611c02906001600160a01b03858116911683612912565b611c0a6135ed565b60408051606081019091526000815260208101611c278585612964565b8152600060209091018190526040516315b74c9d60e11b8152919250737f90122bf0700f9e7e1f688fe926940e8839f35391632b6e993a91849160019060040180846060808383885b83811015611c88578181015183820152602001611c70565b5050505090500183815260200182151581526020019350505050602060405180830381600087803b158015611cbc57600080fd5b505af1158015611cd0573d6000803e3d6000fd5b505050506040513d6020811015611ce657600080fd5b5050604080516370a0823160e01b81523060048201529051731337bedc9d22ecbe766df105c9623922a27963ec916370a08231916024808301926020929190829003018186803b158015611d3957600080fd5b505afa158015611d4d573d6000803e3d6000fd5b505050506040513d6020811015611d6357600080fd5b50516040805163b6b55f2560e01b8152600481018390529051919450735b5cfe992adac0c9d48e05854b2d91c73a0038589163b6b55f259160248082019260009290919082900301818387803b158015611dbc57600080fd5b505af1158015611dd0573d6000803e3d6000fd5b5050505050505b505050565b611de4611866565b611e1f5760405162461bcd60e51b81526004018080602001828103825260288152602001806138de6028913960400191505060405180910390fd5b611e2761223e565b611e3182826129a6565b5050565b7fee9b9820fda27ccc82feea30836537c02da450e0ad29802ab27eb365a487b2ec547f818a65c6406db960713d1d26b13346eae9aaa5d405f0581dbb44b0b4e3c82cac549091565b801580611f03575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015611ed557600080fd5b505afa158015611ee9573d6000803e3d6000fd5b505050506040513d6020811015611eff57600080fd5b5051155b611f3e5760405162461bcd60e51b81526004018080602001828103825260368152602001806138516036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052611dd7908490612ab8565b6060611f9f8484600085612b69565b949350505050565b6001600160a01b038316611fec5760405162461bcd60e51b81526004018080602001828103825260248152602001806138036024913960400191505060405180910390fd5b6001600160a01b0382166120315760405162461bcd60e51b81526004018080602001828103825260228152602001806136666022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600082156120ea5760006120a5610f38565b90506000670de0b6b3a76400006120bc8584612389565b816120c357fe5b049050670de0b6b3a76400006120d98287612389565b816120e057fe5b0492505050610cee565b50600092915050565b6001600160a01b0383166121385760405162461bcd60e51b81526004018080602001828103825260258152602001806137de6025913960400191505060405180910390fd5b6001600160a01b03821661217d5760405162461bcd60e51b81526004018080602001828103825260238152602001806136216023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054818110156121d55760405162461bcd60e51b81526004018080602001828103825260268152602001806136886026913960400191505060405180910390fd5b6001600160a01b038085166000818152602081815260408083208787039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a350505050565b6000349050600033308360003660405160200180866001600160a01b031660601b8152601401856001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120905060006122b2611165565b905060006122bf83612385565b90506000826001600160a01b0316631ebaa16685846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561230f57600080fd5b505afa158015612323573d6000803e3d6000fd5b505050506040513d602081101561233957600080fd5b5051905081811161237b5760405162461bcd60e51b815260040180806020018281038252602e8152602001806136f7602e913960400191505060405180910390fd5b6115388482612cc5565b5490565b60008261239857506000610cee565b828202828482816123a557fe5b0414610f195760405162461bcd60e51b81526004018080602001828103825260218152602001806137746021913960400191505060405180910390fd5b6000610f1983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612cc9565b6001600160a01b0382166124695760405162461bcd60e51b81526004018080602001828103825260218152602001806137bd6021913960400191505060405180910390fd5b6001600160a01b038216600090815260208190526040902054818110156124c15760405162461bcd60e51b81526004018080602001828103825260228152602001806136446022913960400191505060405180910390fd5b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a3505050565b600654611e31906001600160a01b03168383612912565b8015611e3157600e54611e31906001600160a01b031683600184612d6b565b3b151590565b600f548510156125c9576000600f868154811061257757fe5b60009182526020909120600290910201805460ff191660ff87161761ff001916610100861515021762010000600160b01b031916620100006001600160a01b03861602178155600101829055506126c3565b6040805160808101825260ff8087168252851515602083019081526001600160a01b0380871694840185815260608501878152600f8054600181018255600091909152955160029096027f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8028101805495519351909416620100000262010000600160b01b03199315156101000261ff00199890971660ff1990961695909517969096169490941716919091179055517f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80390910155156126c3576126c3827360ae616a2155ee3d9a68541ba4544862310933d4600019611e7d565b6040805186815260ff86166020820152841515818301526001600160a01b038416606082015260808101839052905133917fc9ed0cc3bedda8d5f6d31c3b9351ce17b1478ca1d10281ce8e5e958cb38cc219919081900360a00190a25050505050565b6001600160a01b038216612781576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60028054820190556001600160a01b038216600081815260208181526040808320805486019055805185815290517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35050565b600654611e31906001600160a01b0316833084612d6b565b806001600160a01b03166128086113aa565b6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a37f1221c3ca8a23c3a74a18c944c7b23b29e262f9cd12de4c345744293e8adf4ba755565b60006001600160a01b03831661287757476128ea565b604080516370a0823160e01b815230600482015290516001600160a01b038516916370a08231916024808301926020929190829003018186803b1580156128bd57600080fd5b505afa1580156128d1573d6000803e3d6000fd5b505050506040513d60208110156128e757600080fd5b50515b9050818110156128fa5750611e31565b601054611dd79084906001600160a01b031683612dc5565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611dd7908490612ab8565b6000610f1983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061322e565b806001600160a01b0316826001600160a01b03167f6b0ba40b63fe0a4e591f25c6d723a40b532ff7cf536f3ce5abc7f6fb9969418060405160405180910390a36000806129f1611e35565b91509150836001600160a01b0316826001600160a01b03161415612a38577fee9b9820fda27ccc82feea30836537c02da450e0ad29802ab27eb365a487b2ec839055612ab2565b836001600160a01b0316816001600160a01b03161415612a7b577f818a65c6406db960713d1d26b13346eae9aaa5d405f0581dbb44b0b4e3c82cac839055612ab2565b60405162461bcd60e51b81526004018080602001828103825260328152602001806138ac6032913960400191505060405180910390fd5b50505050565b6060612b0d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611f909092919063ffffffff16565b805190915015611dd757808060200190516020811015612b2c57600080fd5b5051611dd75760405162461bcd60e51b815260040180806020018281038252602a815260200180613827602a913960400191505060405180910390fd5b606082471015612baa5760405162461bcd60e51b81526004018080602001828103825260268152602001806137256026913960400191505060405180910390fd5b612bb385612558565b612c04576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310612c435780518252601f199092019160209182019101612c24565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612ca5576040519150601f19603f3d011682016040523d82523d6000602084013e612caa565b606091505b5091509150612cba828286613288565b979650505050505050565b9055565b60008183612d555760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612d1a578181015183820152602001612d02565b50505050905090810190601f168015612d475780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612d6157fe5b0495945050505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052612ab2908590612ab8565b816001600160a01b0316836001600160a01b03161415612de457611dd7565b6000612df18484846132ee565b90506060612dff8585610d2e565b90506001600160a01b038516612f8c5760405163a2a1623d60e01b8152600481018381523060448301819052601e4201606484018190526080602485019081528551608486015285517360ae616a2155ee3d9a68541ba4544862310933d49563a2a1623d958a958a958a959194909360a401906020808801910280838360005b83811015612e97578181015183820152602001612e7f565b50505050905001955050505050506000604051808303818588803b158015612ebe57600080fd5b505af1158015612ed2573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526020811015612efc57600080fd5b8101908080516040519392919084600160201b821115612f1b57600080fd5b908301906020820185811115612f3057600080fd5b82518660208202830111600160201b82111715612f4c57600080fd5b82525081516020918201928201910280838360005b83811015612f79578181015183820152602001612f61565b5050505090500160405250505050611538565b6001600160a01b03841661309b577360ae616a2155ee3d9a68541ba4544862310933d46001600160a01b031663676528d18484843042601e016040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561303557818101518382015260200161301d565b505050509050019650505050505050600060405180830381600087803b15801561305e57600080fd5b505af1158015613072573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612efc57600080fd5b7360ae616a2155ee3d9a68541ba4544862310933d46001600160a01b03166338ed17398484843042601e016040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561313657818101518382015260200161311e565b505050509050019650505050505050600060405180830381600087803b15801561315f57600080fd5b505af1158015613173573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561319c57600080fd5b8101908080516040519392919084600160201b8211156131bb57600080fd5b9083019060208201858111156131d057600080fd5b82518660208202830111600160201b821117156131ec57600080fd5b82525081516020918201928201910280838360005b83811015613219578181015183820152602001613201565b50505050905001604052505050505050505050565b600081848411156132805760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612d1a578181015183820152602001612d02565b505050900390565b60608315613297575081610f19565b8251156132a75782518084602001fd5b60405162461bcd60e51b8152602060048201818152845160248401528451859391928392604401919085019080838360008315612d1a578181015183820152602001612d02565b6040805160028082526060808301845260009390929190602083019080368337019050509050848160008151811061332257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050838160018151811061335057fe5b6001600160a01b039283166020918202929092018101919091526005546040516347dad24160e11b81526004810183815285516024830152855160609561010090940490931693638fb5a4829387938392604490910191858201910280838360005b838110156133ca5781810151838201526020016133b2565b505050509050019250505060006040518083038186803b1580156133ed57600080fd5b505afa158015613401573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561342a57600080fd5b8101908080516040519392919084600160201b82111561344957600080fd5b90830190602082018581111561345e57600080fd5b82518660208202830111600160201b8211171561347a57600080fd5b82525081516020918201928201910280838360005b838110156134a757818101518382015260200161348f565b5050505090500160405250505090506000816000815181106134c557fe5b60200260200101511180156134ee57506000816001815181106134e457fe5b6020026020010151115b15613557576127108160018151811061350357fe5b602002602001015161353e6008546135388560008151811061352157fe5b60200260200101518961238990919063ffffffff16565b90612389565b8161354557fe5b048161354d57fe5b0492505050610f19565b50600095945050505050565b8280548282559060005260206000209081019282156135b6579160200282015b828111156135b65781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190613583565b506135c292915061360b565b5090565b60408051608081018252600080825260208201819052918101829052606081019190915290565b60405180606001604052806003906020820280368337509192915050565b5b808211156135c2576000815560010161360c56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636570726f78794f776e65723a2063616c6c6572206d757374206265207468652070726f7879206f776e657220616e64206120636f6e747261637420616e64206e6f7420657870697265646d756c74695369676e6174757265436c69656e74203a2054686973207478206973206e6f7420617072726f766564416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c70726f78794f776e65723a2063616c6c6572206973206e6f74206f776e6572206f72206f726967696e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4f726967696e5472616e73666572726564203a206f6c64206f726967696e20697320696c6c6567616c20616464726573732170726f78794f776e65723a2063616c6c6572206973206e6f7420746865207478206f726967696e21a2646970667358221220226dd11f762718237f5b1369d715cea04ce0f06d766b136e87f823a40ca9626d64736f6c63430007050033416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c818a65c6406db960713d1d26b13346eae9aaa5d405f0581dbb44b0b4e3c82cacee9b9820fda27ccc82feea30836537c02da450e0ad29802ab27eb365a487b2ec6d756c74695369676e6174757265436c69656e74203a204d756c7469706c65207369676e617475726520636f6e74726163742061646472657373206973207a65726f211221c3ca8a23c3a74a18c944c7b23b29e262f9cd12de4c345744293e8adf4ba75361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e63654f726967696e5472616e73666572726564203a206f6c64206f726967696e20697320696c6c6567616c2061646472657373210000000000000000000000007f08ba62fadaf3b4b70a8ddc22b3c63669bddeb20000000000000000000000003cd5854fe3a13707b7882d8290d3cae793a7751a000000000000000000000000b18de9512ac891b926c6b5d6838433ac5e52818b0000000000000000000000004954f1e66d65df727a87c9f29f17bf0672ad8dbf0000000000000000000000001238681af57194779793fb21d51e1ee9be6f162b