60806040526006805460ff1990811690915560006007819055600880549092169091556009819055600a818155600b829055600c829055600d829055600e829055600f8290556010919091556200005990601290620008ab565b6200006790614e20620008bc565b601155620000786012600a620008ab565b6200008690614e20620008bc565b6012556012600a620000999190620008ab565b620000a6906000620008bc565b601355620000b76012600a620008ab565b620000c590612710620008bc565b6014556016805462ffffff60a81b19169055601780546001600160a01b0319908116737002421c457b83425293de5a7bfeb68b01a6f6931790915567011c37937e080000601855601980549091167339ef50bd29ae125fe10c6a909e42e1c6a94dde2917905560405162002685388190039081908339810160408190526200014d91620008d6565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350333214620001e35760405162461bcd60e51b815260206004820152601d60248201527f53656e646572206973206e6f7420657175616c20746f206f726967696e00000060448201526064015b60405180910390fd5b8060000b60001480620001f957508060000b6001145b806200020857508060000b6002145b620002565760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420706179546f6b656e547970650000000000000000000000006044820152606401620001da565b8060000b6000036200034757601854341015620002b65760405162461bcd60e51b815260206004820181905260248201527f496e73756666696369656e742062616c616e636520746f207472616e736665726044820152606401620001da565b6017546018546040516001600160a01b039092169181156108fc0291906000818181858888f19350505050158015620002f3573d6000803e3d6000fd5b5060185460009062000307903490620005ff565b905080156200034057604051339082156108fc029083906000818181858888f193505050501580156200033e573d6000803e3d6000fd5b505b50620004d9565b8060000b600103620004d9576000601960009054906101000a90046001600160a01b03169050620003ed611388620003e66001846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003df9190620008fb565b9062000652565b90620006dc565b6040516370a0823160e01b81523360048201526001600160a01b038316906370a0823190602401602060405180830381865afa15801562000432573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004589190620008fb565b11620004d75760405162461bcd60e51b815260206004820152604160248201527f526563697069656e74546f6b656e2062616c616e6365206973206e6f7420677260448201527f6561746572207468616e20302e30303032206f6620746f74616c20737570706c6064820152607960f81b608482015260a401620001da565b505b60068054610100600160a81b0319166101003302179055620004fe6012600a620008ab565b6200050e90633b9aca00620008bc565b336000908152600160208190526040822092909255600390620005396000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600390935281832080548516600190811790915560065461010090049091168352912080549092161790556200059d3390565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620005d76012600a620008ab565b620005e790633b9aca00620008bc565b60405190815260200160405180910390a3506200099f565b60006200064983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506200072660201b60201c565b90505b92915050565b60008260000362000666575060006200064c565b6000620006748385620008bc565b90508262000683858362000915565b14620006495760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401620001da565b60006200064983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200076560201b60201c565b600081848411156200074d5760405162461bcd60e51b8152600401620001da919062000938565b5060006200075c848662000989565b95945050505050565b60008183620007895760405162461bcd60e51b8152600401620001da919062000938565b5060006200075c848662000915565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620007ef578160001904821115620007d357620007d362000798565b80851615620007e157918102915b93841c9390800290620007b3565b509250929050565b60008262000808575060016200064c565b8162000817575060006200064c565b81600181146200083057600281146200083b576200085b565b60019150506200064c565b60ff8411156200084f576200084f62000798565b50506001821b6200064c565b5060208310610133831016604e8410600b841016171562000880575081810a6200064c565b6200088c8383620007ae565b8060001904821115620008a357620008a362000798565b029392505050565b60006200064960ff841683620007f7565b80820281158282048414176200064c576200064c62000798565b600060208284031215620008e957600080fd5b81518060000b81146200064957600080fd5b6000602082840312156200090e57600080fd5b5051919050565b6000826200093357634e487b7160e01b600052601260045260246000fd5b500490565b60006020808352835180602085015260005b8181101562000968578581018301518582016040015282016200094a565b506000604082860101526040601f19601f8301168501019250505092915050565b818103818111156200064c576200064c62000798565b611cd680620009af6000396000f3fe6080604052600436106101395760003560e01c80637d1db4a5116100ab578063a9059cbb1161006f578063a9059cbb14610362578063bf474bed14610382578063c876d0b914610398578063d1633649146103b2578063dd62ed3e146103c5578063ffb54a991461040b57600080fd5b80637d1db4a5146102ba5780638da5cb5b146102d05780638f9a55c01461030257806395d89b4114610318578063a8aa1b311461034457600080fd5b806323b872dd116100fd57806323b872dd14610207578063313ce5671461022757806351bc3c851461024357806370a082311461025a578063715018a614610290578063751039fc146102a557600080fd5b806306fdde031461014557806307e3eaf814610183578063095ea7b3146101ae5780630faee56f146101ce57806318160ddd146101f257600080fd5b3661014057005b600080fd5b34801561015157600080fd5b5060408051808201909152600381526243434360e81b60208201525b60405161017a9190611889565b60405180910390f35b34801561018f57600080fd5b50601654600160b81b900460ff165b604051901515815260200161017a565b3480156101ba57600080fd5b5061019e6101c93660046118f0565b61042a565b3480156101da57600080fd5b506101e460145481565b60405190815260200161017a565b3480156101fe57600080fd5b506101e4610441565b34801561021357600080fd5b5061019e61022236600461191c565b610462565b34801561023357600080fd5b506040516012815260200161017a565b34801561024f57600080fd5b506102586104cb565b005b34801561026657600080fd5b506101e461027536600461195d565b6001600160a01b031660009081526001602052604090205490565b34801561029c57600080fd5b50610258610523565b3480156102b157600080fd5b506102586105a0565b3480156102c657600080fd5b506101e460115481565b3480156102dc57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161017a565b34801561030e57600080fd5b506101e460125481565b34801561032457600080fd5b5060408051808201909152600381526241414160e81b602082015261016d565b34801561035057600080fd5b506016546001600160a01b03166102ea565b34801561036e57600080fd5b5061019e61037d3660046118f0565b610671565b34801561038e57600080fd5b506101e460135481565b3480156103a457600080fd5b5060065461019e9060ff1681565b6102586103c036600461197a565b61067e565b3480156103d157600080fd5b506101e46103e0366004611993565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561041757600080fd5b50601654600160a01b900460ff1661019e565b6000610437338484610cc6565b5060015b92915050565b600061044f6012600a611ac6565b61045d90633b9aca00611ad5565b905090565b600061046f848484610dea565b6104c184336104bc85604051806060016040528060288152602001611c79602891396001600160a01b038a16600090815260026020908152604080832033845290915290205491906114cf565b610cc6565b5060019392505050565b60065461010090046001600160a01b0316336001600160a01b0316146104f057600080fd5b30600090815260016020526040902054801561050f5761050f81611509565b47801561051f5761051f8161169c565b5050565b6000546001600160a01b031633146105565760405162461bcd60e51b815260040161054d90611aec565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146105ca5760405162461bcd60e51b815260040161054d90611aec565b6105d66012600a611ac6565b6105e490633b9aca00611ad5565b6011556105f36012600a611ac6565b61060190633b9aca00611ad5565b60129081556006805460ff191690556016805460ff60b81b1916600160b81b1790557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9061065090600a611ac6565b61065e90633b9aca00611ad5565b60405190815260200160405180910390a1565b6000610437338484610dea565b6000546001600160a01b031633146106a85760405162461bcd60e51b815260040161054d90611aec565b601654600160a01b900460ff16156107025760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161054d565b61070e6012600a611ac6565b61071c90633b9aca00611ad5565b8111156107755760405162461bcd60e51b815260206004820152602160248201527f546f6b656e20616d6f756e74206578636565647320746f74616c20737570706c6044820152607960f81b606482015260840161054d565b6040516323b872dd60e01b8152336004820152306024820181905260448201839052906323b872dd906064016020604051808303816000875af11580156107c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e49190611b21565b6108285760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015260640161054d565b600034116108825760405162461bcd60e51b815260206004820152602160248201527f45544820616d6f756e74206d7573742062652067726561746572207468616e206044820152600360fc1b606482015260840161054d565b601580546001600160a01b03191673b22ce52905d25987321d6bf73d1705886f1cc4f49081179091556108b790309083610cc6565b6015546040805163c45a015560e01b815290516000926001600160a01b03169163c45a01559160048083019260209291908290030181865afa158015610901573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109259190611b43565b9050806001600160a01b031663e6a4390530601560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561098a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ae9190611b43565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d9190611b43565b601680546001600160a01b0319166001600160a01b03929092169182179055610b5957806001600160a01b031663c9c6539630601560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac79190611b43565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610b14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b389190611b43565b601680546001600160a01b0319166001600160a01b03929092169190911790555b6015546001600160a01b031663f305d7194730610b8b816001600160a01b031660009081526001602052604090205490565b600080610ba06000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610c08573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c2d9190611b60565b505060165460155460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610c86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610caa9190611b21565b50506016805462ff00ff60a01b19166201000160a01b17905550565b6001600160a01b038316610d285760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161054d565b6001600160a01b038216610d895760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161054d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e4e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161054d565b6001600160a01b038216610eb05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161054d565b60008111610f125760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161054d565b60006001610f286000546001600160a01b031690565b6001600160a01b0316856001600160a01b031614158015610f5757506000546001600160a01b03858116911614155b1561138b57610f906064610f8a601660149054906101000a900460ff16610f8057600954610f83565b60005b86906116da565b90611763565b60065490925060ff161561104c576015546001600160a01b03858116911614801590610fca57506016546001600160a01b03858116911614155b1561104c573260009081526005602052604090205443116110395760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f6044820152633bb2b21760e11b606482015260840161054d565b3260009081526005602052604090204390555b6016546001600160a01b03868116911614801561107757506015546001600160a01b03858116911614155b801561109c57506001600160a01b03841660009081526003602052604090205460ff16155b156111dd576011548311156110ef5760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b604482015260640161054d565b60125483611112866001600160a01b031660009081526001602052604090205490565b61111c9190611b8e565b111561116a5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161054d565b600f54601054101561118257833b1561118257600080fd5b6010805490600061119283611ba1565b90915550506001600160a01b0384166000908152600460205260409020429055600d546010546111da91606491610f8a91106111d057600954610f83565b600b5486906116da565b91505b6016546001600160a01b03858116911614801561120357506001600160a01b0385163014155b156112df576011548311156112565760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b604482015260640161054d565b61127b6064610f8a600e546010541161127157600a54610f83565b600c5486906116da565b6001600160a01b0386166000908152600460205260409020549092504214806112ba57506001600160a01b038516600090815260046020526040902054155b156112c3575060005b60085460ff1680156112d6575043600754145b156112df575060005b30600090815260016020526040902054601654600160a81b900460ff1615801561131657506016546001600160a01b038681169116145b801561132b5750601654600160b01b900460ff165b8015611338575060135481115b80156113475750600f54601054115b80156113505750815b156113895761137261136d85611368846014546117a5565b6117a5565b611509565b478015611387576113824761169c565b436007555b505b505b811561140557306000908152600160205260409020546113ab90836117ba565b30600081815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113fc9086815260200190565b60405180910390a35b6001600160a01b0385166000908152600160205260409020546114289084611819565b6001600160a01b03861660009081526001602052604090205561146d61144e8484611819565b6001600160a01b038616600090815260016020526040902054906117ba565b6001600160a01b0380861660008181526001602052604090209290925586167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6114b78686611819565b60405190815260200160405180910390a35050505050565b600081848411156114f35760405162461bcd60e51b815260040161054d9190611889565b5060006115008486611bba565b95945050505050565b6016805460ff60a81b1916600160a81b179055801561168c57601654600160a01b900460ff161561168c57604080516002808252606082018352600092602083019080368337019050509050308160008151811061156957611569611bcd565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e69190611b43565b816001815181106115f9576115f9611bcd565b6001600160a01b03928316602091820292909201015260155461161f9130911684610cc6565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac94790611658908590600090869030904290600401611be3565b600060405180830381600087803b15801561167257600080fd5b505af1158015611686573d6000803e3d6000fd5b50505050505b506016805460ff60a81b19169055565b6006546040516101009091046001600160a01b0316906108fc8315029083906000818181858888f1935050505015801561051f573d6000803e3d6000fd5b6000826000036116ec5750600061043b565b60006116f88385611ad5565b9050826117058583611c56565b1461175c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161054d565b9392505050565b600061175c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061185b565b60008183116117b4578261175c565b50919050565b6000806117c78385611b8e565b90508381101561175c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161054d565b600061175c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114cf565b6000818361187c5760405162461bcd60e51b815260040161054d9190611889565b5060006115008486611c56565b60006020808352835180602085015260005b818110156118b75785810183015185820160400152820161189b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146118ed57600080fd5b50565b6000806040838503121561190357600080fd5b823561190e816118d8565b946020939093013593505050565b60008060006060848603121561193157600080fd5b833561193c816118d8565b9250602084013561194c816118d8565b929592945050506040919091013590565b60006020828403121561196f57600080fd5b813561175c816118d8565b60006020828403121561198c57600080fd5b5035919050565b600080604083850312156119a657600080fd5b82356119b1816118d8565b915060208301356119c1816118d8565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611a1d578160001904821115611a0357611a036119cc565b80851615611a1057918102915b93841c93908002906119e7565b509250929050565b600082611a345750600161043b565b81611a415750600061043b565b8160018114611a575760028114611a6157611a7d565b600191505061043b565b60ff841115611a7257611a726119cc565b50506001821b61043b565b5060208310610133831016604e8410600b8410161715611aa0575081810a61043b565b611aaa83836119e2565b8060001904821115611abe57611abe6119cc565b029392505050565b600061175c60ff841683611a25565b808202811582820484141761043b5761043b6119cc565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611b3357600080fd5b8151801515811461175c57600080fd5b600060208284031215611b5557600080fd5b815161175c816118d8565b600080600060608486031215611b7557600080fd5b8351925060208401519150604084015190509250925092565b8082018082111561043b5761043b6119cc565b600060018201611bb357611bb36119cc565b5060010190565b8181038181111561043b5761043b6119cc565b634e487b7160e01b600052603260045260246000fd5b600060a08201878352602087602085015260a0604085015281875180845260c08601915060208901935060005b81811015611c355784516001600160a01b031683529383019391830191600101611c10565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611c7357634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c46c9f067cd7afc6f936dd8115b83e6d0aa3b16e80d001a8e5ff0856e107a61f64736f6c634300081600330000000000000000000000000000000000000000000000000000000000000000