1 tx
2 calls
constructor
constructor(address _systemRegistry, address _proxyAdminOwner, address _implementation, uint256 _defaultRewardRatio, uint256 _defaultRewardBlockDuration)
functions
accessController
viewfunction accessController() view returns (address)
addStrategyTemplate
purefunction addStrategyTemplate(address) pure
baseAsset
viewfunction baseAsset() view returns (address)
defaultRewardBlockDuration
viewfunction defaultRewardBlockDuration() view returns (uint256)
defaultRewardRatio
viewfunction defaultRewardRatio() view returns (uint256)
getSystemRegistry
viewfunction getSystemRegistry() view returns (address)
implementation
viewfunction implementation() view returns (address)
proxyAdmin
viewfunction proxyAdmin() view returns (address)
removeStrategyTemplate
purefunction removeStrategyTemplate(address) pure
template
viewfunction template() view returns (address)
createVault
payablefunction createVault(address, string symbolSuffix, string descPrefix, bytes32, bytes extraData) payable returns (address newVault)
setDefaultRewardBlockDuration
nonpayablefunction setDefaultRewardBlockDuration(uint256 _newBlockDuration)
setDefaultRewardRatio
nonpayablefunction setDefaultRewardRatio(uint256 _newRewardRatio)
setImplementation
nonpayablefunction setImplementation(address _newImplementation)
setProxyAdmin
nonpayablefunction setProxyAdmin(address _newProxyAdmin)
events
DefaultBlockDurationSet
event DefaultBlockDurationSet(uint256 oldBlockDuration, uint256 newBlockDuration)
DefaultRewardRatioSet
event DefaultRewardRatioSet(uint256 oldRewardRatio, uint256 newRewardRatio)
ImplementationSet
event ImplementationSet(address oldImplementation, address newImplementation)
ProxyAdminSet
event ProxyAdminSet(address oldAdmin, address newAdmin)
errors
AccessDenied
error AccessDenied()
InvalidBaseAmount
error InvalidBaseAmount(uint256 amount)
InvalidConfiguration
error InvalidConfiguration()
ItemExists
error ItemExists()
MustBeZero
error MustBeZero()
NotImplemented
error NotImplemented()
SystemMismatch
error SystemMismatch(address source1, address source2)
UndefinedAddress
error UndefinedAddress()
ZeroAddress
error ZeroAddress(string paramName)
creation bytecode
0x60e060405234801562000010575f80fd5b506040516200636838038062006368833981016040819052620000339162000566565b846001600160a01b031663bc43cbaf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000070573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000969190620005c7565b85620000d0816040518060400160405280600f81526020016e5f73797374656d526567697374727960881b815250620002ad60201b60201c565b6001600160a01b039081166080528116620000fe57604051630cbe126f60e11b815260040160405180910390fd5b6001600160a01b031660a05260408051808201909152600f81526e2fb4b6b83632b6b2b73a30ba34b7b760891b60208201526200013d908490620002ad565b6200014883620002e6565b5f836001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000186573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ac9190620005c7565b9050620001e6816040518060400160405280600e81526020016d1b1bd8d85b10985cd9505cdcd95d60921b815250620002ad60201b60201c565b6001600160a01b03811660c052620001fe8362000428565b620002098262000469565b5f604051620002189062000540565b604051809103905ff08015801562000232573d5f803e3d5ffd5b5060405163f2fde38b60e01b81526001600160a01b0388811660048301529192509082169063f2fde38b906024015f604051808303815f87803b15801562000278575f80fd5b505af11580156200028b573d5f803e3d5ffd5b50505050620002a081620004aa60201b60201c565b505050505050506200063a565b6001600160a01b038216620002e2578060405163eac0d38960e01b8152600401620002d99190620005ec565b60405180910390fd5b5050565b6001546001600160a01b03908116908216036200031657604051633e04f87160e01b815260040160405180910390fd5b806001600160a01b031663f12baf5c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000353573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003799190620005c7565b6001600160a01b03166080516001600160a01b031614620003bf57604051632f6b3b6360e01b81523060048201526001600160a01b0382166024820152604401620002d9565b600154604080516001600160a01b03928316815291831660208301527f1acacd74b878778c66cc2abd6987699d6602bfb4b7f244c64c6ed0d61054bb5e910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b60025460408051918252602082018390527fd527863f4f3ab7a5b484cd73e646ba29392452df01668b796a5a143bcd032aef910160405180910390a1600255565b60035460408051918252602082018390527f945131392c364f55e7dd69d3aefc9f5b625be9913dc0558dbb7feb538eb35ac9910160405180910390a1600355565b5f546001600160a01b0390811690821603620004d957604051633e04f87160e01b815260040160405180910390fd5b5f54604080516001600160a01b03928316815291831660208301527f8b229dfa15ad44db21d7fe7e9dca521b2dcc866b16f1c9ffa6fde044782b2368910160405180910390a15f80546001600160a01b0319166001600160a01b0392909216919091179055565b6106dc8062005c8c83390190565b6001600160a01b038116811462000563575f80fd5b50565b5f805f805f60a086880312156200057b575f80fd5b855162000588816200054e565b60208701519095506200059b816200054e565b6040870151909450620005ae816200054e565b6060870151608090970151959894975095949392505050565b5f60208284031215620005d8575f80fd5b8151620005e5816200054e565b9392505050565b5f602080835283518060208501525f5b818110156200061a57858101830151858201604001528201620005fc565b505f604082860101526040601f19601f8301168501019250505092915050565b60805160a05160c0516155da620006b25f395f8181610278015281816106c00152610a6001525f81816102430152818161034c015281816104640152818161052d015281816105f601526107c501525f81816102e4015281816108d7015281816108f801528181610b600152610e3401526155da5ff3fe608060405260043610620000f7575f3560e01c806390a455191162000092578063d784d426116200005e578063d784d426146200029a578063db475d3914620002be578063f12baf5c14620002d5578063f5b7fe871462000309575f80fd5b806390a45519146200015e578063b6d72520146200020a578063bc43cbaf1462000230578063cdf456e11462000265575f80fd5b80635c60da1b11620000d25780635c60da1b14620001825780635e3119b614620001a35780636a306d6114620001c75780636f2ddd9314620001eb575f80fd5b80633e47158c14620000fb57806347c0266114620001385780635c24feaf146200015e575b5f80fd5b34801562000107575f80fd5b505f546200011b906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801562000144575f80fd5b506200015c620001563660046200148d565b62000320565b005b3480156200016a575f80fd5b506200015c6200017c3660046200148d565b6200041f565b3480156200018e575f80fd5b506001546200011b906001600160a01b031681565b348015620001af575f80fd5b506200015c620001c1366004620014b2565b62000438565b348015620001d3575f80fd5b506200015c620001e5366004620014b2565b62000501565b348015620001f7575f80fd5b506001546001600160a01b03166200011b565b34801562000216575f80fd5b506200022160025481565b6040519081526020016200012f565b3480156200023c575f80fd5b506200011b7f000000000000000000000000000000000000000000000000000000000000000081565b34801562000271575f80fd5b506200011b7f000000000000000000000000000000000000000000000000000000000000000081565b348015620002a6575f80fd5b506200015c620002b83660046200148d565b620005ca565b6200011b620002cf3660046200156f565b6200077e565b348015620002e1575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006200011b565b34801562000315575f80fd5b506200022160035481565b604051632474521560e21b81525f805160206200558583398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d1485490604401602060405180830381865afa1580156200039a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003c0919062001649565b620003de57604051634ca8886760e01b815260040160405180910390fd5b62000410826040518060400160405280600e81526020016d2fb732bba83937bc3ca0b236b4b760911b81525062000c49565b6200041b8262000c7e565b5050565b60405163d623472560e01b815260040160405180910390fd5b604051632474521560e21b81525f805160206200558583398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d1485490604401602060405180830381865afa158015620004b2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004d8919062001649565b620004f657604051634ca8886760e01b815260040160405180910390fd5b6200041b8262000d14565b604051632474521560e21b81525f805160206200558583398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d1485490604401602060405180830381865afa1580156200057b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005a1919062001649565b620005bf57604051634ca8886760e01b815260040160405180910390fd5b6200041b8262000d55565b604051632474521560e21b81525f805160206200558583398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d1485490604401602060405180830381865afa15801562000644573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200066a919062001649565b6200068857604051634ca8886760e01b815260040160405180910390fd5b620006be82604051806040016040528060128152602001712fb732bba4b6b83632b6b2b73a30ba34b7b760711b81525062000c49565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000725573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200074b91906200166a565b6001600160a01b031614620007735760405163c52a9bd360e01b815260040160405180910390fd5b6200041b8262000d96565b604051632474521560e21b81527f643a332a1a6de98a36f48a7596dfafd4ea1b69babd8e98b38d6b2a652b59d09b600482018190523360248301525f916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906391d1485490604401602060405180830381865afa1580156200080b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000831919062001649565b6200084f57604051634ca8886760e01b815260040160405180910390fd5b34156200086f57604051630b47f1cd60e31b815260040160405180910390fd5b6001545f546040516001600160a01b039283169290911690620008929062001459565b6001600160a01b039283168152911660208201526060604082018190525f90820152608001604051809103905ff080158015620008d1573d5f803e3d5ffd5b5091505f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f543bb0e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000953573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200097991906200166a565b600254600354600187604051620009909062001467565b6001600160a01b0396871681529486166020860152604085019390935260608401919091521515608083015290911660a082015260c001604051809103905ff080158015620009e1573d5f803e3d5ffd5b5090505f60015f9054906101000a90046001600160a01b03166001600160a01b0316639dbbabf46040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a36573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000a5c919062001688565b90507f000000000000000000000000000000000000000000000000000000000000000062000a966001600160a01b03821633308562000ef6565b62000aa381868462000f69565b60405163e649e2fb60e01b81526001600160a01b0386169063e649e2fb9062000ad7908d908d908c908c90600401620016f1565b5f604051808303815f87803b15801562000aef575f80fd5b505af115801562000b02573d5f803e3d5ffd5b5050604051630e9918b960e21b81526001600160a01b03868116600483015288169250633a6462e491506024015f604051808303815f87803b15801562000b47575f80fd5b505af115801562000b5a573d5f803e3d5ffd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663047e51386040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000bbb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000be191906200166a565b6040516312b5ad0160e11b81526001600160a01b038781166004830152919091169063256b5a02906024015f604051808303815f87803b15801562000c24575f80fd5b505af115801562000c37573d5f803e3d5ffd5b50505050505050509695505050505050565b6001600160a01b0382166200041b578060405163eac0d38960e01b815260040162000c7591906200174e565b60405180910390fd5b5f546001600160a01b039081169082160362000cad57604051633e04f87160e01b815260040160405180910390fd5b5f54604080516001600160a01b03928316815291831660208301527f8b229dfa15ad44db21d7fe7e9dca521b2dcc866b16f1c9ffa6fde044782b2368910160405180910390a15f80546001600160a01b0319166001600160a01b0392909216919091179055565b60035460408051918252602082018390527f945131392c364f55e7dd69d3aefc9f5b625be9913dc0558dbb7feb538eb35ac9910160405180910390a1600355565b60025460408051918252602082018390527fd527863f4f3ab7a5b484cd73e646ba29392452df01668b796a5a143bcd032aef910160405180910390a1600255565b6001546001600160a01b039081169082160362000dc657604051633e04f87160e01b815260040160405180910390fd5b806001600160a01b031663f12baf5c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000e03573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000e2991906200166a565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161462000e8d57604051632f6b3b6360e01b81523060048201526001600160a01b038216602482015260440162000c75565b600154604080516001600160a01b03928316815291831660208301527f1acacd74b878778c66cc2abd6987699d6602bfb4b7f244c64c6ed0d61054bb5e910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b6040516001600160a01b038085166024830152831660448201526064810182905262000f639085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262001012565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa15801562000fb7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000fdd919062001688565b9050801562000ffc5762000ffc6001600160a01b0385168483620010ef565b62000f636001600160a01b038516848462001206565b5f62001068826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620012bc9092919063ffffffff16565b805190915015620010ea578080602001905181019062001089919062001649565b620010ea5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000c75565b505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa1580156200113d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001163919062001688565b905081811015620011c95760405162461bcd60e51b815260206004820152602960248201527f5361666545524332303a2064656372656173656420616c6c6f77616e63652062604482015268656c6f77207a65726f60b81b606482015260840162000c75565b6040516001600160a01b03841660248201528282036044820181905290620011ff90869063095ea7b360e01b9060640162000f2b565b5050505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f91839186169063dd62ed3e90604401602060405180830381865afa15801562001255573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200127b919062001688565b62001287919062001762565b6040516001600160a01b03851660248201526044810182905290915062000f6390859063095ea7b360e01b9060640162000f2b565b6060620012cc84845f85620012d4565b949350505050565b606082471015620013375760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000c75565b5f80866001600160a01b0316858760405162001354919062001788565b5f6040518083038185875af1925050503d805f811462001390576040519150601f19603f3d011682016040523d82523d5f602084013e62001395565b606091505b5091509150620013a887838387620013b3565b979650505050505050565b60608315620014265782515f036200141e576001600160a01b0385163b6200141e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000c75565b5081620012cc565b620012cc83838151156200143d5781518083602001fd5b8060405162461bcd60e51b815260040162000c7591906200174e565b610d8e80620017a683390190565b613051806200253483390190565b6001600160a01b03811681146200148a575f80fd5b50565b5f602082840312156200149e575f80fd5b8135620014ab8162001475565b9392505050565b5f60208284031215620014c3575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112620014ee575f80fd5b813567ffffffffffffffff808211156200150c576200150c620014ca565b604051601f8301601f19908116603f01168101908282118183101715620015375762001537620014ca565b8160405283815286602085880101111562001550575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f805f8060a0878903121562001585575f80fd5b8635620015928162001475565b9550602087013567ffffffffffffffff80821115620015af575f80fd5b620015bd8a838b01620014de565b96506040890135915080821115620015d3575f80fd5b620015e18a838b01620014de565b9550606089013594506080890135915080821115620015fe575f80fd5b818901915089601f83011262001612575f80fd5b81358181111562001621575f80fd5b8a602082850101111562001633575f80fd5b6020830194508093505050509295509295509295565b5f602082840312156200165a575f80fd5b81518015158114620014ab575f80fd5b5f602082840312156200167b575f80fd5b8151620014ab8162001475565b5f6020828403121562001699575f80fd5b5051919050565b5f5b83811015620016bc578181015183820152602001620016a2565b50505f910152565b5f8151808452620016dd816020860160208601620016a0565b601f01601f19169290920160200192915050565b606081525f620017056060830187620016c4565b8281036020840152620017198187620016c4565b90508281036040840152838152838560208301375f602085830101526020601f19601f86011682010191505095945050505050565b602081525f620014ab6020830184620016c4565b808201808211156200178257634e487b7160e01b5f52601160045260245ffd5b92915050565b5f82516200179b818460208701620016a0565b919091019291505056fe608060405260405162000d8e38038062000d8e833981016040819052620000269162000415565b82816200003582825f6200004c565b50620000439050826200007d565b50505062000540565b6200005783620000ee565b5f82511180620000645750805b1562000078576200007683836200012f565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000be5f8051602062000d47833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000eb816200015e565b50565b620000f981620001fb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606062000157838360405180606001604052806027815260200162000d676027913962000292565b9392505050565b6001600160a01b038116620001c95760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f8051602062000d478339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6200026a5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001c0565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc620001da565b60605f80856001600160a01b031685604051620002b09190620004ef565b5f60405180830381855af49150503d805f8114620002ea576040519150601f19603f3d011682016040523d82523d5f602084013e620002ef565b606091505b50909250905062000303868383876200030d565b9695505050505050565b60608315620003805782515f0362000378576001600160a01b0385163b620003785760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001c0565b50816200038c565b6200038c838362000394565b949350505050565b815115620003a55781518083602001fd5b8060405162461bcd60e51b8152600401620001c091906200050c565b80516001600160a01b0381168114620003d8575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156200040d578181015183820152602001620003f3565b50505f910152565b5f805f6060848603121562000428575f80fd5b6200043384620003c1565b92506200044360208501620003c1565b60408501519092506001600160401b038082111562000460575f80fd5b818601915086601f83011262000474575f80fd5b815181811115620004895762000489620003dd565b604051601f8201601f19908116603f01168101908382118183101715620004b457620004b4620003dd565b81604052828152896020848701011115620004cd575f80fd5b620004e0836020830160208801620003f1565b80955050505050509250925092565b5f825162000502818460208701620003f1565b9190910192915050565b602081525f82518060208401526200052c816040850160208701620003f1565b601f01601f19169190910160400192915050565b6107f9806200054e5f395ff3fe60806040526004361061004d575f3560e01c80633659cfe6146100645780634f1ef286146100835780635c60da1b146100965780638f283970146100c6578063f851a440146100e55761005c565b3661005c5761005a6100f9565b005b61005a6100f9565b34801561006f575f80fd5b5061005a61007e366004610698565b610113565b61005a6100913660046106b1565b61014e565b3480156100a1575f80fd5b506100aa6101b4565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d1575f80fd5b5061005a6100e0366004610698565b6101e4565b3480156100f0575f80fd5b506100aa610204565b610101610224565b61011161010c6102b9565b6102c2565b565b61011b6102e0565b6001600160a01b03163303610146576101438160405180602001604052805f8152505f610312565b50565b6101436100f9565b6101566102e0565b6001600160a01b031633036101ac576101a78383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525060019250610312915050565b505050565b6101a76100f9565b5f6101bd6102e0565b6001600160a01b031633036101d9576101d46102b9565b905090565b6101e16100f9565b90565b6101ec6102e0565b6001600160a01b03163303610146576101438161033c565b5f61020d6102e0565b6001600160a01b031633036101d9576101d46102e0565b61022c6102e0565b6001600160a01b031633036101115760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b5f6101d4610390565b365f80375f80365f845af43d5f803e8080156102dc573d5ff35b3d5ffd5b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61031b836103b7565b5f825111806103275750805b156101a75761033683836103f6565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103656102e0565b604080516001600160a01b03928316815291841660208301520160405180910390a161014381610422565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610303565b6103c0816104cb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061041b838360405180606001604052806027815260200161079d6027913961055f565b9392505050565b6001600160a01b0381166104875760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102b0565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6105385760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102b0565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104aa565b60605f80856001600160a01b03168560405161057b919061074f565b5f60405180830381855af49150503d805f81146105b3576040519150601f19603f3d011682016040523d82523d5f602084013e6105b8565b606091505b50915091506105c9868383876105d3565b9695505050505050565b606083156106415782515f0361063a576001600160a01b0385163b61063a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102b0565b508161064b565b61064b8383610653565b949350505050565b8151156106635781518083602001fd5b8060405162461bcd60e51b81526004016102b0919061076a565b80356001600160a01b0381168114610693575f80fd5b919050565b5f602082840312156106a8575f80fd5b61041b8261067d565b5f805f604084860312156106c3575f80fd5b6106cc8461067d565b9250602084013567ffffffffffffffff808211156106e8575f80fd5b818601915086601f8301126106fb575f80fd5b813581811115610709575f80fd5b87602082850101111561071a575f80fd5b6020830194508093505050509250925092565b5f5b8381101561074757818101518382015260200161072f565b50505f910152565b5f825161076081846020870161072d565b9190910192915050565b602081525f825180602084015261078881604085016020870161072d565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220093a777db0e0f61bbad2b8615056647b88a45c9e7d1f4b04ae2cedb27572b36864736f6c63430008180033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656461018060405234801562000011575f80fd5b506040516200305138038062003051833981016040819052620000349162000397565b858585857ffde2f69a846a71295e563d91ade82dc70e9eda278403d1aece24d0ded949403a868585858585846001600160a01b031663bc43cbaf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000c291906200040c565b6001600160a01b038116620000ea57604051630cbe126f60e11b815260040160405180910390fd5b6001600160a01b031660805260408051808201909152600c81526b2fb932bbb0b9322a37b5b2b760a11b602082015262000126908590620002f2565b6200015982604051806040016040528060098152602001682fb23ab930ba34b7b760b91b8152506200032260201b60201c565b62000192836040518060400160405280600f81526020016e5f6e6577526577617264526174696f60881b8152506200032260201b60201c565b620001c7816040518060400160405280600b81526020016a5f726577617264526f6c6560a81b8152506200034760201b60201c565b6001600160a01b0385811660e08190526040516316bfae7f60e31b815291861660048301529063b5fd73f890602401602060405180830381865afa15801562000212573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000238919062000431565b6200027a57604051634389d5ab60e01b815260206004820152600c60248201526b2fb932bbb0b9322a37b5b2b760a11b60448201526064015b60405180910390fd5b6001600160a01b039093166101005260c09190915260a05261012052506001600b55151561014052505060408051808201909152600d81526c2fb9ba30b5b4b733aa37b5b2b760991b6020820152620002d993508492509050620002f2565b6001600160a01b031661016052506200049b9350505050565b6001600160a01b0382166200031e578060405163eac0d38960e01b81526004016200027191906200044d565b5050565b815f036200031e5780604051634389d5ab60e01b81526004016200027191906200044d565b816200031e5780604051634389d5ab60e01b81526004016200027191906200044d565b6001600160a01b03811681146200037f575f80fd5b50565b8051801515811462000392575f80fd5b919050565b5f805f805f8060c08789031215620003ad575f80fd5b8651620003ba816200036a565b6020880151909650620003cd816200036a565b6040880151606089015191965094509250620003ec6080880162000382565b915060a0870151620003fe816200036a565b809150509295509295509295565b5f602082840312156200041d575f80fd5b81516200042a816200036a565b9392505050565b5f6020828403121562000442575f80fd5b6200042a8262000382565b5f602080835283518060208501525f5b818110156200047b578581018301518582016040015282016200045d565b505f604082860101526040601f19601f8301168501019250505092915050565b60805160a05160c05160e05161010051610120516101405161016051612aa4620005ad5f395f81816103e00152818161111d0152818161117a015261156301525f81816104910152610b7b01525f818161062901528181610abc01528181610fdc015261130d01525f818161057d01528181610a8001528181610e0f01528181611eeb0152611f8b01525f81816106f101528181610796015281816111bc0152818161149901528181611dcf0152611e4f01525f818161038801526109ee01525f81816102be0152818161098a015281816118a101526118f901525f81816104b80152818161065801528181610aeb01528181610ca80152818161100b0152818161133c01526117900152612aa45ff3fe608060405234801561000f575f80fd5b506004361061023e575f3560e01c80638ab1d68111610135578063ce60089d116100b4578063e665b41411610079578063e665b4141461053f578063ead5d35914610552578063ebe2b12b14610565578063ee495fb61461056d578063f7c618c114610578575f80fd5b8063ce60089d146104fe578063d55a23f414610506578063df136d651461050e578063e21c81d314610517578063e43252d71461052c575f80fd5b8063b263487f116100fa578063b263487f1461048c578063bc43cbaf146104b3578063c5285794146104da578063c8f33c91146104ed578063cd3daf9d146104f6575f80fd5b80638ab1d6811461042b5780638b8763471461043e578063901a7d531461045d5780639a8c1c7014610466578063adc9772e14610479575f80fd5b8063590a41f5116101c15780636f73a38f116101865780636f73a38f146103aa57806370a08231146103b357806372f702f3146103db5780637b0a47ee1461041a57806380faa57d14610423575f80fd5b8063590a41f5146103415780635e43c47b1461035457806363d38c3b14610367578063648bf774146103705780636c8bcee814610383575f80fd5b806318160ddd1161020757806318160ddd146102f5578063262d3d6d146102fd57806338b90333146103065780633af32abf1461030e5780633d18b91214610339575f80fd5b80628cc2621461024257806306c933d8146102685780630700037d1461029a5780630fb5a6b4146102b957806314d09249146102e0575b5f80fd5b6102556102503660046127c6565b61059f565b6040519081526020015b60405180910390f35b61028a6102763660046127c6565b600a6020525f908152604090205460ff1681565b604051901515815260200161025f565b6102556102a83660046127c6565b60086020525f908152604090205481565b6102557f000000000000000000000000000000000000000000000000000000000000000081565b6102f36102ee3660046127e1565b61061a565b005b600e54610255565b61025560065481565b610255600181565b61028a61031c3660046127c6565b6001600160a01b03165f908152600a602052604090205460ff1690565b6102f36108d0565b6102f361034f3660046127e1565b6108f9565b6102f36103623660046127c6565b610aad565b61025560045481565b6102f361037e3660046127f8565b610c6a565b6102557f000000000000000000000000000000000000000000000000000000000000000081565b61025560095481565b6102556103c13660046127c6565b6001600160a01b03165f908152600f602052604090205490565b6104027f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161025f565b61025560015481565b610255610fb7565b6102f36104393660046127c6565b610fcd565b61025561044c3660046127c6565b60076020525f908152604090205481565b61025560055481565b61028a6104743660046127c6565b61111a565b6102f361048736600461282f565b611163565b61028a7f000000000000000000000000000000000000000000000000000000000000000081565b6104027f000000000000000000000000000000000000000000000000000000000000000081565b6102f36104e8366004612866565b6111a6565b61025560025481565b610255611279565b610255600f81565b6102556112e7565b61025560035481565b61051f6112f2565b60405161025f91906128ae565b6102f361053a3660046127c6565b6112fe565b61040261054d3660046127e1565b611477565b6102f36105603660046128fa565b611483565b6102555f5481565b6102556301e1338081565b6104027f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b0381165f908152600860209081526040808320546007909252822054670de0b6b3a7640000906105d4611279565b6105de9190612942565b6001600160a01b0385165f908152600f60205260409020546106009190612955565b61060a919061296c565b610614919061298b565b92915050565b604051632474521560e21b81527f000000000000000000000000000000000000000000000000000000000000000060048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d1485490604401602060405180830381865afa1580156106a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c9919061299e565b6106e657604051634ca8886760e01b815260040160405180910390fd5b8115610893576107947f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663024d381b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561074b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076f91906129b9565b60405180604001604052806007815260200166616363546f6b6560c81b81525061158a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663024d381b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107f0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081491906129b9565b6001600160a01b0316635fec5c646040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087391906129d4565b8210156108935760405163bcec4c5360e01b815260040160405180910390fd5b60098290556040518281527f62ff17080925adbeb90d914efe5f615d059f19c2e728740b500d1e84ba65989a906020015b60405180910390a15050565b6108d86115b3565b6108e13361160c565b6108ed333360016116c4565b6108f76001600b55565b565b335f908152600a602052604090205460ff1615801561093f575061093d7f5e17fc5225d4a099df75359ce1f405503ca79498a8dc46a7d583235a0ee45c1633611768565b155b1561095d57604051634ca8886760e01b815260040160405180910390fd5b6004548161096b828261298b565b92505f5442106109875761097e83611802565b5f600455610a30565b5f7f00000000000000000000000000000000000000000000000000000000000000005f546109b59190612942565b6109bf9042612942565b90505f816001546109d09190612955565b90505f856109e0836103e8612955565b6109ea919061296c565b90507f0000000000000000000000000000000000000000000000000000000000000000811015610a2657610a1d86611802565b5f600455610a2c565b60048690555b5050505b600454604080518481526020810184905280820192909252517fe4a19739e7048ef5e90c7a157e8fb37a6e90cb8de298625227540d2443b9769c9181900360600190a1610aa86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611980565b505050565b604051632474521560e21b81527f000000000000000000000000000000000000000000000000000000000000000060048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d1485490604401602060405180830381865afa158015610b38573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5c919061299e565b610b7957604051634ca8886760e01b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000610bb757604051639fe610b960e01b815260040160405180910390fd5b600f610bc3600c6119eb565b10610be157604051635024a38f60e01b815260040160405180910390fd5b610c0982604051806040016040528060068152602001651c995dd85c9960d21b81525061158a565b610c14600c836119f4565b610c3157604051633e04f87160e01b815260040160405180910390fd5b6040516001600160a01b03831681527fd432e6f46dbf91c120fdfa95a1f4bf5c43f04d957fbc3a32e693be0d29bf17b0906020016108c4565b604051632474521560e21b81527f712b73613835f525c3c675d2245c737ba70afbd0b97264479c97d623f214159460048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d1485490604401602060405180830381865afa158015610cf5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d19919061299e565b610d3657604051634ca8886760e01b815260040160405180910390fd5b610d5d83604051806040016040528060058152602001643a37b5b2b760d91b81525061158a565b610d8882604051806040016040528060098152602001681c9958da5c1a595b9d60ba1b81525061158a565b306001600160a01b03831603610dc157604051634726455360e11b81526001600160a01b03831660048201526024015b60405180910390fd5b610dca8361111a565b610df257604051630188053b60e41b81526001600160a01b0384166004820152602401610db8565b6301e13380600254610e04919061298b565b42108015610e4357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b15610e6157604051633d38b78360e01b815260040160405180910390fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03841601610ee857478015610ee257604080516001600160a01b038087168252851660208201529081018290527ffff3b3844276f57024e0b42afec1a37f75db36511e43819a4f2a63ab7862b6489060600160405180910390a1610ee28382611a08565b50505050565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610f2c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5091906129d4565b90508015610ee257604080516001600160a01b038087168252851660208201529081018290527ffff3b3844276f57024e0b42afec1a37f75db36511e43819a4f2a63ab7862b6489060600160405180910390a1610ee26001600160a01b0385168483611b1d565b5f80544210610fc657505f5490565b425b905090565b604051632474521560e21b81527f000000000000000000000000000000000000000000000000000000000000000060048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d1485490604401602060405180830381865afa158015611058573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107c919061299e565b61109957604051634ca8886760e01b815260040160405180910390fd5b6001600160a01b0382165f908152600a602052604090205460ff166110d15760405163d3ed043d60e01b815260040160405180910390fd5b6001600160a01b0382165f818152600a6020526040808220805460ff19169055517fcdd2e9b91a56913d370075169cefa1602ba36be5301664f752192bb1709df7579190a25050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03160361115b57505f919050565b506001919050565b61116d8282611b4d565b6111a26001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611980565b5050565b336001600160a01b0384161480159061125057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166330d960af6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611216573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123a91906129b9565b6001600160a01b0316336001600160a01b031614155b1561126e57604051634ca8886760e01b815260040160405180910390fd5b610aa8838383611c34565b5f80611284600e5490565b9050805f0361129557505060035490565b806001546002546112a4610fb7565b6112ae9190612942565b6112b89190612955565b6112ca90670de0b6b3a7640000612955565b6112d4919061296c565b6003546112e1919061298b565b91505090565b5f610fc8600c6119eb565b6060610fc8600c611c5a565b604051632474521560e21b81527f000000000000000000000000000000000000000000000000000000000000000060048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d1485490604401602060405180830381865afa158015611389573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ad919061299e565b6113ca57604051634ca8886760e01b815260040160405180910390fd5b6113f282604051806040016040528060068152602001651dd85b1b195d60d21b81525061158a565b6001600160a01b0382165f908152600a602052604090205460ff161561142b57604051633e04f87160e01b815260040160405180910390fd5b6001600160a01b0382165f818152600a6020526040808220805460ff19166001179055517fa850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab039190a25050565b5f610614600c83611c66565b336001600160a01b0384161480159061152d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166330d960af6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114f3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061151791906129b9565b6001600160a01b0316336001600160a01b031614155b1561154b57604051634ca8886760e01b815260040160405180910390fd5b611556838383611c71565b610aa86001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168484611b1d565b6001600160a01b0382166111a2578060405163eac0d38960e01b8152600401610db89190612a0d565b6002600b54036116055760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610db8565b6002600b55565b5f611615611279565b600355611620610fb7565b6002556003541561166f576001600160a01b0382161561166f576116438261059f565b6001600160a01b0383165f90815260086020908152604080832084905560035460079092529091205590505b6003546002546040805184815260208101939093528201526001600160a01b038316907f469d38647ec007a9c93421468c92550d50fccc01ae12e149b1216aa9b0136fc7906060015b60405180910390a25050565b6116ce8383611d6b565b5f6116d9600c6119eb565b90508115610ee2575f5b81811015611761576116f6600c82611c66565b604051636b09169560e01b81526001600160a01b03878116600483015286811660248301529190911690636b091695906044015f604051808303815f87803b158015611740575f80fd5b505af1158015611752573d5f803e3d5ffd5b505050508060010190506116e3565b5050505050565b604051632474521560e21b8152600481018390526001600160a01b0382811660248301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906391d1485490604401602060405180830381865afa1580156117d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117fb919061299e565b9392505050565b8060065f828254611813919061298b565b9091555050600e545f0361185a575f546002541015611855576001546002545f5461183e9190612942565b6118489190612955565b611852908261298b565b90505b611893565b5f54421015611893575f425f546118719190612942565b90505f600154826118829190612955565b905061188e818461298b565b925050505b61189c5f61160c565b6118c67f00000000000000000000000000000000000000000000000000000000000000008261296c565b60018190556118e857604051631f2a200560e01b815260040160405180910390fd5b600581905542600281905561191e907f00000000000000000000000000000000000000000000000000000000000000009061298b565b5f819055600154600254600654604080518681526020810194909452830191909152606082019290925260808101919091527f8ce8cbe5f803930b0c6afe4640018bbfb02cbb5b0bfbe051b25a155201e80dac9060a00160405180910390a150565b6040516001600160a01b0380851660248301528316604482015260648101829052610ee29085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526120f6565b5f610614825490565b5f6117fb836001600160a01b0384166121c7565b80471015611a585760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610db8565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611aa1576040519150601f19603f3d011682016040523d82523d5f602084013e611aa6565b606091505b5050905080610aa85760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610db8565b6040516001600160a01b038316602482015260448101829052610aa890849063a9059cbb60e01b906064016119b4565b611b568261160c565b611b608282612213565b5f611b6b600c6119eb565b90505f5b81811015611bec57611b82600c82611c66565b6040516356e4bb9760e11b81526001600160a01b03868116600483015260248201869052919091169063adc9772e906044015f604051808303815f87803b158015611bcb575f80fd5b505af1158015611bdd573d5f803e3d5ffd5b50505050806001019050611b6f565b5081600e5f828254611bfe919061298b565b90915550506001600160a01b0383165f908152600f602052604081208054849290611c2a90849061298b565b9091555050505050565b611c3c6115b3565b611c458361160c565b611c508383836116c4565b610aa86001600b55565b60605f6117fb8361229f565b5f6117fb83836122f8565b611c7a8361160c565b611c84838361231e565b5f611c8f600c6119eb565b90505f5b81811015611d1057611ca6600c82611c66565b60405163f3fef3a360e01b81526001600160a01b03878116600483015260248201879052919091169063f3fef3a3906044015f604051808303815f87803b158015611cef575f80fd5b505af1158015611d01573d5f803e3d5ffd5b50505050806001019050611c93565b508115611d2357611d23848560016116c4565b82600e5f828254611d349190612942565b90915550506001600160a01b0384165f908152600f602052604081208054859290611d60908490612942565b909155505050505050565b611d9482604051806040016040528060078152602001661858d8dbdd5b9d60ca1b81525061158a565b611dbf81604051806040016040528060098152602001681c9958da5c1a595b9d60ba1b81525061158a565b5f611dc98361059f565b90505f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663024d381b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e29573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e4d91906129b9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f543bb0e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ea9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ecd91906129b9565b91509150825f03611edf575050505050565b806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141580611f205750600954155b15611fb7576001600160a01b038086165f818152600860205260408082209190915551918616917f540798df468d7b23d11f156fdb954cb19ad414d150722a7b6d55ba369dea792e90611f769087815260200190565b60405180910390a3611fb26001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585611b1d565b611761565b604051633f6e925b60e01b8152600481018490526001600160a01b03831690633f6e925b90602401602060405180830381865afa158015611ffa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061201e919061299e565b15611761576001600160a01b038086165f818152600860205260408082209190915551918616917f540798df468d7b23d11f156fdb954cb19ad414d150722a7b6d55ba369dea792e906120749087815260200190565b60405180910390a36120878183856123aa565b600954604051637628a37d60e01b81526004810185905260248101919091526001600160a01b038581166044830152831690637628a37d906064015f604051808303815f87803b1580156120d9575f80fd5b505af11580156120eb573d5f803e3d5ffd5b505050505050505050565b5f61214a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661244b9092919063ffffffff16565b805190915015610aa85780806020019051810190612168919061299e565b610aa85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610db8565b5f81815260018301602052604081205461220c57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610614565b505f610614565b61223c82604051806040016040528060078152602001661858d8dbdd5b9d60ca1b81525061158a565b6122648160405180604001604052806006815260200165185b5bdd5b9d60d21b815250612461565b816001600160a01b03167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d826040516116b891815260200190565b6060815f018054806020026020016040519081016040528092919081815260200182805480156122ec57602002820191905f5260205f20905b8154815260200190600101908083116122d8575b50505050509050919050565b5f825f01828154811061230d5761230d612a3f565b905f5260205f200154905092915050565b61234782604051806040016040528060078152602001661858d8dbdd5b9d60ca1b81525061158a565b61236f8160405180604001604052806006815260200165185b5bdd5b9d60d21b815250612461565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516116b891815260200190565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa1580156123f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061241b91906129d4565b90508015612437576124376001600160a01b0385168483612483565b610ee26001600160a01b038516848461258c565b606061245984845f8561263b565b949350505050565b815f036111a25780604051634389d5ab60e01b8152600401610db89190612a0d565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa1580156124d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124f491906129d4565b9050818110156125585760405162461bcd60e51b815260206004820152602960248201527f5361666545524332303a2064656372656173656420616c6c6f77616e63652062604482015268656c6f77207a65726f60b81b6064820152608401610db8565b6040516001600160a01b0384166024820152828203604482018190529061176190869063095ea7b360e01b906064016119b4565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f91839186169063dd62ed3e90604401602060405180830381865afa1580156125da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125fe91906129d4565b612608919061298b565b6040516001600160a01b038516602482015260448101829052909150610ee290859063095ea7b360e01b906064016119b4565b60608247101561269c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610db8565b5f80866001600160a01b031685876040516126b79190612a53565b5f6040518083038185875af1925050503d805f81146126f1576040519150601f19603f3d011682016040523d82523d5f602084013e6126f6565b606091505b509150915061270787838387612712565b979650505050505050565b606083156127805782515f03612779576001600160a01b0385163b6127795760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610db8565b5081612459565b61245983838151156127955781518083602001fd5b8060405162461bcd60e51b8152600401610db89190612a0d565b6001600160a01b03811681146127c3575f80fd5b50565b5f602082840312156127d6575f80fd5b81356117fb816127af565b5f602082840312156127f1575f80fd5b5035919050565b5f8060408385031215612809575f80fd5b8235612814816127af565b91506020830135612824816127af565b809150509250929050565b5f8060408385031215612840575f80fd5b823561284b816127af565b946020939093013593505050565b80151581146127c3575f80fd5b5f805f60608486031215612878575f80fd5b8335612883816127af565b92506020840135612893816127af565b915060408401356128a381612859565b809150509250925092565b602080825282518282018190525f9190848201906040850190845b818110156128ee5783516001600160a01b0316835292840192918401916001016128c9565b50909695505050505050565b5f805f6060848603121561290c575f80fd5b8335612917816127af565b92506020840135915060408401356128a381612859565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106145761061461292e565b80820281158282048414176106145761061461292e565b5f8261298657634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156106145761061461292e565b5f602082840312156129ae575f80fd5b81516117fb81612859565b5f602082840312156129c9575f80fd5b81516117fb816127af565b5f602082840312156129e4575f80fd5b5051919050565b5f5b83811015612a055781810151838201526020016129ed565b50505f910152565b602081525f8251806020840152612a2b8160408501602087016129eb565b601f01601f19169190910160400192915050565b634e487b7160e01b5f52603260045260245ffd5b5f8251612a648184602087016129eb565b919091019291505056fea2646970667358221220ad0374f6feb80a89a412d87f1d71578dc1bc3e8cd663c247295d57d6a04eef1064736f6c63430008180033bb7154c024c448c6ea6d002f0df26c89f4a55783a3b480be7dfb28e216145f78a264697066735822122074cc09519bbcf34d540644a262097f506f34d52e17e2c110d578831d92db7c1464736f6c63430008180033608060405234801561000f575f80fd5b506100193361001e565b61006d565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6106628061007a5f395ff3fe608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f80fd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f80fd5b348015610088575f80fd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f80fd5b506100cc610204565b005b3480156100d9575f80fd5b506100cc6100e836600461049b565b610217565b3480156100f8575f80fd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f80fd5b506100cc61013636600461049b565b6102e5565b348015610146575f80fd5b506100cc610155366004610479565b61031b565b348015610165575f80fd5b5061009c610174366004610479565b610399565b5f805f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f80fd5b808060200190518101906101fc91906105b5565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f80fd5b505af1158015610272573d5f803e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d0565b5f604051808303818588803b1580156102c9575f80fd5b505af11580156102db573d5f803e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f805f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f80fd5b5f60208284031215610489575f80fd5b813561049481610465565b9392505050565b5f80604083850312156104ac575f80fd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f805f606084860312156104f8575f80fd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff8082111561052f575f80fd5b818601915086601f830112610542575f80fd5b813581811115610554576105546104d2565b604051601f8201601f19908116603f0116810190838211818310171561057c5761057c6104d2565b81604052828152896020848701011115610594575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f602082840312156105c5575f80fd5b815161049481610465565b60018060a01b03831681525f60206040602084015283518060408501525f5b8181101561060b578581018301518582016060015282016105ef565b505f606082860101526060601f19601f83011685010192505050939250505056fea26469706673582212200b40106bef4c232daae06380a67e9c90e4473e9b921563b4effe11f49b80ae3a64736f6c634300081800330000000000000000000000002218f90a98b0c070676f249ef44834686daa4285000000000000000000000000a9900b2d550c406d1cf58da27228feeef21d447b0000000000000000000000001da0b38df1a446d4ef315c7e06d79f801c691e61000000000000000000000000000000000000000000000000000000000000033e0000000000000000000000000000000000000000000000000000000000127500