60806040526064620000146009600a6200035d565b62000024906305f5e10062000375565b6200003190600262000375565b6200003d91906200038f565b600155612710620000516009600a6200035d565b62000061906305f5e10062000375565b6200006e90600562000375565b6200007a91906200038f565b6002556003805460ff19908116909155610e10600455603c600f5560118054821690556064601255601380549091169055348015620000b857600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36003600b819055600c556002600d55600980546001600160a01b03199081167374c4766551fc34989cb57b10d95304709d6377d5178255600a8054909116331781556200014691906200035d565b62000156906305f5e10062000375565b33600081815260146020908152604080832094909455601681528382208054600160ff199182168117909255600980546001600160a01b03908116865287862080548416851790553080875288872080548516861790559686526017909452868520805483168417905554909216835284832080548316821790559282529290208054909216179055620001e73390565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002216009600a6200035d565b62000231906305f5e10062000375565b60405190815260200160405180910390a3620003b2565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200029f57816000190482111562000283576200028362000248565b808516156200029157918102915b93841c939080029062000263565b509250929050565b600082620002b85750600162000357565b81620002c75750600062000357565b8160018114620002e05760028114620002eb576200030b565b600191505062000357565b60ff841115620002ff57620002ff62000248565b50506001821b62000357565b5060208310610133831016604e8410600b841016171562000330575081810a62000357565b6200033c83836200025e565b806000190482111562000353576200035362000248565b0290505b92915050565b60006200036e60ff841683620002a7565b9392505050565b808202811582820484141762000357576200035762000248565b600082620003ad57634e487b7160e01b600052601260045260246000fd5b500490565b611d6980620003c26000396000f3fe60806040526004361061023f5760003560e01c806375f0a8741161012e578063a9059cbb116100ab578063dd62ed3e1161006f578063dd62ed3e146106b6578063df31dd39146106fc578063ed99530714610716578063f2fde38b1461071e578063fed3c8261461073e57600080fd5b8063a9059cbb14610626578063ad5c464814610646578063b115e4df14610666578063b1848c2614610686578063bbc0c7421461069c57600080fd5b80638da5cb5b116100f25780638da5cb5b1461058257806395d89b41146105a057806398d7e721146105d05780639d8f7706146105f05780639ec22c0e1461061057600080fd5b806375f0a87414610507578063799663451461052757806383fd03671461054157806389e40cf9146105575780638a8c523c1461056d57600080fd5b8063313ce567116101bc5780636225658911610180578063622565891461044657806363a573101461045b57806370a082311461049c578063715018a6146104d257806374233c06146104e757600080fd5b8063313ce567146103b857806343c98828146103da57806349bd5a5e146103fa5780634cd5dc6a1461041a57806359cd90311461043057600080fd5b80631694505e116102035780631694505e1461031f578063180b0d7e1461035757806318160ddd1461036d578063184c16c51461038257806323b872dd1461039857600080fd5b806305d2743f1461024b57806306fdde031461026d578063095ea7b3146102b55780630a910d1f146102e55780630dca45671461030957600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5061026b610266366004611944565b61075e565b005b34801561027957600080fd5b5060408051808201909152600d81526c21b93cb83a3790213637b5b2b960991b60208201525b6040516102ac9190611961565b60405180910390f35b3480156102c157600080fd5b506102d56102d03660046119af565b610797565b60405190151581526020016102ac565b3480156102f157600080fd5b506102fb600b5481565b6040519081526020016102ac565b34801561031557600080fd5b506102fb600d5481565b34801561032b57600080fd5b5060065461033f906001600160a01b031681565b6040516001600160a01b0390911681526020016102ac565b34801561036357600080fd5b506102fb60125481565b34801561037957600080fd5b506102fb6107ae565b34801561038e57600080fd5b506102fb60045481565b3480156103a457600080fd5b506102d56103b33660046119db565b6107cf565b3480156103c457600080fd5b5060095b60405160ff90911681526020016102ac565b3480156103e657600080fd5b5061026b6103f5366004611a1c565b610821565b34801561040657600080fd5b5060075461033f906001600160a01b031681565b34801561042657600080fd5b506102fb600f5481565b34801561043c57600080fd5b506102fb60025481565b34801561045257600080fd5b5061026b610863565b34801561046757600080fd5b5061dead60005260146020527f8b9e18c5e04efe171d1e4f682ad90d753958a5ffe56db5290b0236c8e0b6db005415156102d5565b3480156104a857600080fd5b506102fb6104b7366004611944565b6001600160a01b031660009081526014602052604090205490565b3480156104de57600080fd5b5061026b610899565b3480156104f357600080fd5b5061026b610502366004611a5a565b6108fa565b34801561051357600080fd5b5060095461033f906001600160a01b031681565b34801561053357600080fd5b506013546102d59060ff1681565b34801561054d57600080fd5b506102fb600c5481565b34801561056357600080fd5b506102fb60015481565b34801561057957600080fd5b5061026b610929565b34801561058e57600080fd5b506000546001600160a01b031661033f565b3480156105ac57600080fd5b50604080518082019091526007815266424c4f4b45525360c81b602082015261029f565b3480156105dc57600080fd5b506102d56105eb366004611a5a565b610958565b3480156105fc57600080fd5b5061026b61060b366004611a1c565b610b7c565b34801561061c57600080fd5b506102fb60055481565b34801561063257600080fd5b506102d56106413660046119af565b610bbe565b34801561065257600080fd5b5060085461033f906001600160a01b031681565b34801561067257600080fd5b50600a5461033f906001600160a01b031681565b34801561069257600080fd5b506102fb60105481565b3480156106a857600080fd5b506003546102d59060ff1681565b3480156106c257600080fd5b506102fb6106d1366004611a73565b6001600160a01b03918216600090815260156020908152604080832093909416825291909152205490565b34801561070857600080fd5b506011546103c89060ff1681565b61026b610bcb565b34801561072a57600080fd5b5061026b610739366004611944565b610e90565b34801561074a57600080fd5b5061026b610759366004611944565b610eb3565b6000546001600160a01b0316331461077557600080fd5b600980546001600160a01b0319166001600160a01b0392909216919091179055565b60006107a4338484610eec565b5060015b92915050565b60006107bc6009600a611b9b565b6107ca906305f5e100611baa565b905090565b60006107dc848484611010565b6001600160a01b038416600090815260156020908152604080832033808552925290912054610817918691610812908690611bc1565b610eec565b5060019392505050565b6000546001600160a01b0316331461083857600080fd5b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461087a57600080fd5b6108866009600a611b9b565b610894906305f5e100611baa565b600155565b6000546001600160a01b031633146108b057600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461091157600080fd5b61092381670de0b6b3a7640000611baa565b60025550565b6000546001600160a01b0316331461094057600080fd5b6013805460ff19166001179055426010819055600555565b600060045460055461096a9190611bd4565b42116109bd5760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e69736860448201526064015b60405180910390fd5b60028210610a1f5760405162461bcd60e51b815260206004820152602960248201527f4d6179206e6f74206e756b65206d6f7265207468616e203125206f6620746f6b6044820152680656e7320696e204c560bc1b60648201526084016109b4565b426005556007546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a0823190602401602060405180830381865afa158015610a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a929190611be7565b90506000633b9aca00610ab1612710610aab858861172a565b906117b3565b610abb9084611bc1565b610ac59190611bc1565b90508015610ae657600754610ae6906001600160a01b031661dead83611010565b6007546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b158015610b3057600080fd5b505af1158015610b44573d6000803e3d6000fd5b50506040517f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb925060009150a1506001949350505050565b6000546001600160a01b03163314610b9357600080fd5b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b60006107a4338484611010565b6000546001600160a01b03163314610be257600080fd5b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa158015610c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6a9190611c00565b600880546001600160a01b0319166001600160a01b039283161790556006546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cec9190611c00565b6008546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af1158015610d3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d619190611c00565b600780546001600160a01b0319166001600160a01b039283161781556006805483166000908152601660209081526040808320805460ff1990811660019081179092558554881685526017845282852080548216831790559554871684528184208054909616179094553080835260158252848320845487168452825284832060001990559254838352601490915292902054919092169163f305d719913491906040516001600160e01b031960e086901b1681526001600160a01b039092166004830152602482015260006044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015610e66573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e8b9190611c1d565b505050565b6000546001600160a01b03163314610ea757600080fd5b610eb0816117f5565b50565b6000546001600160a01b03163314610eca57600080fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610f4e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109b4565b6001600160a01b038216610faf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109b4565b6001600160a01b0383811660008181526015602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110745760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109b4565b633b9aca0081116110ba5760405162461bcd60e51b815260206004820152601060248201526f135a5b881d1c985b9cd9995c88185b5d60821b60448201526064016109b4565b60135460ff16806110e357506001600160a01b03831660009081526016602052604090205460ff165b8061110657506001600160a01b03821660009081526016602052604090205460ff165b6111405760405162461bcd60e51b815260206004820152600b60248201526a139bdd08115b98589b195960aa1b60448201526064016109b4565b6000601054426111509190611bc1565b9050600f54811015801561116b5750601154600260ff909116105b156111d6576011805460ff1690600061118383611c4b565b82546101009290920a60ff8181021990931691831602179091556011541660010390506111b9576002600b819055600c556111d1565b60115460ff166002036111d1576001600b819055600c555b426010555b6001600160a01b03841660009081526016602052604081205460ff168061121557506001600160a01b03841660009081526016602052604090205460ff165b15611222575060006114f8565b600e5460ff166001036112cd576001600160a01b03851660009081526014602052604081208054859290611257908490611bc1565b90915550506001600160a01b03841660009081526014602052604081208054859290611284908490611bd4565b92505081905550836001600160a01b0316856001600160a01b0316600080516020611d14833981519152856040516112be91815260200190565b60405180910390a35050505050565b6007546001600160a01b03908116908616036113695750600b546001600160a01b03851660009081526017602052604090205460ff16158061132857506001600160a01b03841660009081526017602052604090205460ff16155b156113645760015461135984611353876001600160a01b031660009081526014602052604090205490565b90611863565b111561136457600080fd5b6114f8565b6007546001600160a01b03908116908516036114f45730600090815260146020526040902054600254811180156113a35750600e5460ff16155b1561149f57600e805460ff1916600117905560408051600280825260608201835260009260208301908036833701905050905030816000815181106113ea576113ea611c6a565b6001600160a01b03928316602091820292909201015260085482519116908290600190811061141b5761141b611c6a565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b815291169063791ac94790611461908590600090869030904290600401611c80565b600060405180830381600087803b15801561147b57600080fd5b505af115801561148f573d6000803e3d6000fd5b5050600e805460ff191690555050505b61dead60005260146020527f8b9e18c5e04efe171d1e4f682ad90d753958a5ffe56db5290b0236c8e0b6db0054156114e857600d54600c546114e19190611bc1565b91506114ee565b600c5491505b506114f8565b5060005b80156116195760125460009061150e8386611baa565b6115189190611cf1565b905060006115268286611bc1565b6001600160a01b038816600090815260146020526040812080549293508792909190611553908490611bc1565b90915550506001600160a01b03861660009081526014602052604081208054839290611580908490611bd4565b909155505030600090815260146020526040812080548492906115a4908490611bd4565b909155505060405182815230906001600160a01b03891690600080516020611d148339815191529060200160405180910390a3856001600160a01b0316876001600160a01b0316600080516020611d148339815191528360405161160a91815260200190565b60405180910390a350506116b1565b6001600160a01b03851660009081526014602052604081208054859290611641908490611bc1565b90915550506001600160a01b0384166000908152601460205260408120805485929061166e908490611bd4565b92505081905550836001600160a01b0316856001600160a01b0316600080516020611d14833981519152856040516116a891815260200190565b60405180910390a35b60125447906000906116c890610aab84605061172a565b905060006116e6601254610aab60148661172a90919063ffffffff16565b9050811561170457600954611704906001600160a01b0316836118c2565b801561172057600a54611720906001600160a01b0316826118c2565b5050505050505050565b60008260000361173c575060006107a8565b60006117488385611baa565b9050826117558583611cf1565b146117ac5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109b4565b9392505050565b60006117ac83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118f8565b6001600160a01b03811661180857600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806118708385611bd4565b9050838110156117ac5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109b4565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610e8b573d6000803e3d6000fd5b600081836119195760405162461bcd60e51b81526004016109b49190611961565b5060006119268486611cf1565b95945050505050565b6001600160a01b0381168114610eb057600080fd5b60006020828403121561195657600080fd5b81356117ac8161192f565b600060208083528351808285015260005b8181101561198e57858101830151858201604001528201611972565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156119c257600080fd5b82356119cd8161192f565b946020939093013593505050565b6000806000606084860312156119f057600080fd5b83356119fb8161192f565b92506020840135611a0b8161192f565b929592945050506040919091013590565b60008060408385031215611a2f57600080fd5b8235611a3a8161192f565b915060208301358015158114611a4f57600080fd5b809150509250929050565b600060208284031215611a6c57600080fd5b5035919050565b60008060408385031215611a8657600080fd5b8235611a918161192f565b91506020830135611a4f8161192f565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611af2578160001904821115611ad857611ad8611aa1565b80851615611ae557918102915b93841c9390800290611abc565b509250929050565b600082611b09575060016107a8565b81611b16575060006107a8565b8160018114611b2c5760028114611b3657611b52565b60019150506107a8565b60ff841115611b4757611b47611aa1565b50506001821b6107a8565b5060208310610133831016604e8410600b8410161715611b75575081810a6107a8565b611b7f8383611ab7565b8060001904821115611b9357611b93611aa1565b029392505050565b60006117ac60ff841683611afa565b80820281158282048414176107a8576107a8611aa1565b818103818111156107a8576107a8611aa1565b808201808211156107a8576107a8611aa1565b600060208284031215611bf957600080fd5b5051919050565b600060208284031215611c1257600080fd5b81516117ac8161192f565b600080600060608486031215611c3257600080fd5b8351925060208401519150604084015190509250925092565b600060ff821660ff8103611c6157611c61611aa1565b60010192915050565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611cd05784516001600160a01b031683529383019391830191600101611cab565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611d0e57634e487b7160e01b600052601260045260246000fd5b50049056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205e2bfca78ad4fbe65c5e6f155c71ef8197149aa0f46dc6784694cb4e5822788764736f6c63430008130033