6080604052600180546001600160a01b03191661dead179055620000266009600a6200055b565b6200003690633b9aca0062000573565b600281905562000049906103e862000573565b6003556006805460ff19169055600060078190556008819055600c8190556002600d819055600e8290556010829055601181905560128290556200008e90826200058d565b6200009a91906200058d565b60135560006014819055600260158190556016829055620000bc90826200058d565b620000c891906200058d565b601755612710600254612710620000e0919062000573565b620000ec9190620005a3565b60185561271060025461271062000104919062000573565b620001109190620005a3565b601955601a80546001600160a01b031990811673fb5fe85466d4b225eefa74918e2359e1fb34db17908117909255601b8054821683179055601c80549091169091179055601e805460ff60a01b1916600160a01b179055600254612710906200017b90600a62000573565b620001879190620005a3565b601f5561271060025460016200019e919062000573565b620001aa9190620005a3565b602055348015620001ba57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601d80546001600160a01b03191673327df1e6de05895d2ab08513aadd9313fe505d869081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000261573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002879190620005c6565b6001600160a01b031663c9c65396601d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030f9190620005c6565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200035c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003829190620005c6565b601e80546001600160a01b0319166001600160a01b03928316179055306000818152600560209081526040808320601d549095168352938152838220600019905533808352600a8252848320805460ff199081166001908117909255600b84528685208054909116909117905560035493835260048252848320939093556002548383528483208190559351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620005f1565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200049d57816000190482111562000481576200048162000446565b808516156200048f57918102915b93841c939080029062000461565b509250929050565b600082620004b65750600162000555565b81620004c55750600062000555565b8160018114620004de5760028114620004e95762000509565b600191505062000555565b60ff841115620004fd57620004fd62000446565b50506001821b62000555565b5060208310610133831016604e8410600b84101617156200052e575081810a62000555565b6200053a83836200045c565b806000190482111562000551576200055162000446565b0290505b92915050565b60006200056c60ff841683620004a5565b9392505050565b808202811582820484141762000555576200055562000446565b8082018082111562000555576200055562000446565b600082620005c157634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620005d957600080fd5b81516001600160a01b03811681146200056c57600080fd5b611d5a80620006016000396000f3fe6080604052600436106102605760003560e01c80636827e76411610144578063a9059cbb116100b6578063dd62ed3e1161007a578063dd62ed3e1461073f578063e96fada214610785578063ec28438a146107a5578063f2fde38b146107c5578063f84ba65d146107e5578063fe575a871461080557600080fd5b8063a9059cbb1461069f578063bfa21d6a146106bf578063d0889358146106df578063d7c01032146106ff578063dab84ee71461071f57600080fd5b80637d1db4a5116101085780637d1db4a5146105df578063893d20e8146105f55780638b42507f146106135780638f9a55c01461064357806395d89b411461065957806398118cb41461068957600080fd5b80636827e764146105475780636b67c4df1461055d5780636ddd17131461057357806370a0823114610594578063715018a6146105ca57600080fd5b80633f4218e0116101dd57806352551a75116101a157806352551a7514610487578063534030b1146104a7578063596fa9e3146104c75780635d0044ca146104e75780635e83ae7614610507578063658d4b7f1461052757600080fd5b80633f4218e0146103da57806342cc2f451461040a5780634ada218b146104425780634f28cac21461045c57806351bc3c851461047257600080fd5b806318160ddd1161022457806318160ddd146103445780631df4ccfc1461035957806323b872dd1461036f5780632f54bf6e1461038f578063313ce567146103be57600080fd5b80630445b6671461026c57806306fdde0314610295578063095ea7b3146102d25780630d075d9c146103025780630f683e901461032457600080fd5b3661026757005b600080fd5b34801561027857600080fd5b50610282601f5481565b6040519081526020015b60405180910390f35b3480156102a157600080fd5b5060408051808201909152600b81526a506f74696f6e204261736560a81b60208201525b60405161028c919061193d565b3480156102de57600080fd5b506102f26102ed3660046119a0565b610835565b604051901515815260200161028c565b34801561030e57600080fd5b5061032261031d3660046119cc565b6108a2565b005b34801561033057600080fd5b5061032261033f3660046119cc565b61094a565b34801561035057600080fd5b50600254610282565b34801561036557600080fd5b50610282600f5481565b34801561037b57600080fd5b506102f261038a3660046119f8565b6109e5565b34801561039b57600080fd5b506102f26103aa366004611a39565b6000546001600160a01b0391821691161490565b3480156103ca57600080fd5b506040516009815260200161028c565b3480156103e657600080fd5b506102f26103f5366004611a39565b600a6020526000908152604090205460ff1681565b34801561041657600080fd5b50601e5461042a906001600160a01b031681565b6040516001600160a01b03909116815260200161028c565b34801561044e57600080fd5b506006546102f29060ff1681565b34801561046857600080fd5b5061028260205481565b34801561047e57600080fd5b50610322610a7a565b34801561049357600080fd5b506102f26104a23660046119a0565b610ad7565b3480156104b357600080fd5b506103226104c2366004611a64565b610b4b565b3480156104d357600080fd5b50601d5461042a906001600160a01b031681565b3480156104f357600080fd5b50610322610502366004611a9d565b610ba0565b34801561051357600080fd5b50610322610522366004611ab6565b610c3c565b34801561053357600080fd5b50610322610542366004611a64565b610cca565b34801561055357600080fd5b50610282600c5481565b34801561056957600080fd5b50610282600d5481565b34801561057f57600080fd5b50601e546102f290600160a01b900460ff1681565b3480156105a057600080fd5b506102826105af366004611a39565b6001600160a01b031660009081526004602052604090205490565b3480156105d657600080fd5b50610322610d1f565b3480156105eb57600080fd5b5061028260185481565b34801561060157600080fd5b506000546001600160a01b031661042a565b34801561061f57600080fd5b506102f261062e366004611a39565b600b6020526000908152604090205460ff1681565b34801561064f57600080fd5b5061028260195481565b34801561066557600080fd5b50604080518082019091526007815266123837ba34b7b760c91b60208201526102c5565b34801561069557600080fd5b50610282600e5481565b3480156106ab57600080fd5b506102f26106ba3660046119a0565b610d93565b3480156106cb57600080fd5b50601c5461042a906001600160a01b031681565b3480156106eb57600080fd5b506103226106fa366004611ad4565b610da0565b34801561070b57600080fd5b5061032261071a366004611b09565b610e24565b34801561072b57600080fd5b50601a5461042a906001600160a01b031681565b34801561074b57600080fd5b5061028261075a366004611b54565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561079157600080fd5b50601b5461042a906001600160a01b031681565b3480156107b157600080fd5b506103226107c0366004611a9d565b610e8d565b3480156107d157600080fd5b506103226107e0366004611a39565b610f21565b3480156107f157600080fd5b50610322610800366004611a64565b61100b565b34801561081157600080fd5b506102f2610820366004611a39565b60096020526000908152604090205460ff1681565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108909086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146108d55760405162461bcd60e51b81526004016108cc90611b82565b60405180910390fd5b601083905560118290556012819055806108ef8385611bcd565b6108f99190611bcd565b6013819055601910156109455760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642062757920746178206665657360601b60448201526064016108cc565b505050565b6000546001600160a01b031633146109745760405162461bcd60e51b81526004016108cc90611b82565b6014839055601582905560168190558061098e8385611bcd565b6109989190611bcd565b6017819055605f10156109455760405162461bcd60e51b8152602060048201526015602482015274496e76616c69642073656c6c20746178206665657360581b60448201526064016108cc565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610a65576001600160a01b0384166000908152600560209081526040808320338452909152902054610a40908390611be0565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b610a70848484611060565b90505b9392505050565b6000546001600160a01b03163314610aa45760405162461bcd60e51b81526004016108cc90611b82565b6040514790339082156108fc029083906000818181858888f19350505050158015610ad3573d6000803e3d6000fd5b5050565b60405163a9059cbb60e01b8152336004820152602481018290526000906001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a739190611bf3565b6000546001600160a01b03163314610b755760405162461bcd60e51b81526004016108cc90611b82565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610bca5760405162461bcd60e51b81526004016108cc90611b82565b6064811015610c1b5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206d61782077616c6c65742073697a6500000000000000000060448201526064016108cc565b61271081600254610c2c9190611c10565b610c369190611c27565b60195550565b6000546001600160a01b03163314610c665760405162461bcd60e51b81526004016108cc90611b82565b81610ca55760405162461bcd60e51b815260206004820152600f60248201526e273790393ab3903432b9329039b2b960891b60448201526064016108cc565b6006805460ff19168315159081179091556008829055600103610ad357436007555050565b6000546001600160a01b03163314610cf45760405162461bcd60e51b81526004016108cc90611b82565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d495760405162461bcd60e51b81526004016108cc90611b82565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000610a73338484611060565b6000546001600160a01b03163314610dca5760405162461bcd60e51b81526004016108cc90611b82565b601e805460ff60a01b1916600160a01b8515150217905560025461271090610df3908490611c10565b610dfd9190611c27565b601f5560025461271090610e12908390611c10565b610e1c9190611c27565b602055505050565b6000546001600160a01b03163314610e4e5760405162461bcd60e51b81526004016108cc90611b82565b601a80546001600160a01b039485166001600160a01b031991821617909155601b805493851693821693909317909255601c8054919093169116179055565b6000546001600160a01b03163314610eb75760405162461bcd60e51b81526004016108cc90611b82565b6032811015610f005760405162461bcd60e51b8152602060048201526015602482015274125b9d985b1a59081b585e081d1e08185b5bdd5b9d605a1b60448201526064016108cc565b61271081600254610f119190611c10565b610f1b9190611c27565b60185550565b6000546001600160a01b03163314610f4b5760405162461bcd60e51b81526004016108cc90611b82565b6001600160a01b038116610fb05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108cc565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110355760405162461bcd60e51b81526004016108cc90611b82565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b60215460009060ff1680611072575081155b1561108957611082848484611424565b9050610a73565b6001600160a01b0384166000908152600a602052604090205460ff161580156110cb57506001600160a01b0383166000908152600a602052604090205460ff16155b80156110da575060065460ff16155b80156110f35750601e546001600160a01b038581169116145b1561111c576001600160a01b0383166000908152600960205260409020805460ff191660011790555b6001600160a01b03841660009081526009602052604090205460ff16156111765760405162461bcd60e51b815260206004820152600e60248201526d596f7520617265206120626f742160901b60448201526064016108cc565b61117f846114de565b6000546001600160a01b038581169116148015906111a657506001600160a01b0383163014155b80156111c057506001546001600160a01b03848116911614155b80156111da5750601e546001600160a01b03848116911614155b1561129e576001600160a01b0383166000908152600460205260409020546019546112058483611bcd565b11158061122a57506001600160a01b0384166000908152600b602052604090205460ff165b61129c5760405162461bcd60e51b815260206004820152603f60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f7420686f6c642074686174206d7563682e0060648201526084016108cc565b505b601e546001600160a01b039081169085160361131e57601854821115806112dd57506001600160a01b0383166000908152600b602052604090205460ff165b61131e5760405162461bcd60e51b81526020600482015260126024820152712a2c103634b6b4ba1032bc31b2b2b232b21760711b60448201526064016108cc565b61132784611531565b1561133457611334611585565b6001600160a01b038416600090815260046020526040902054611358908390611be0565b6001600160a01b038516600090815260046020908152604080832093909355600a90529081205460ff161561138d5782611396565b611396836118e4565b6001600160a01b0385166000908152600460205260409020549091506113bd908290611bcd565b6001600160a01b0380861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114119085815260200190565b60405180910390a3506001949350505050565b6001600160a01b038316600090815260046020526040812054611448908390611be0565b6001600160a01b038086166000908152600460205260408082209390935590851681522054611478908390611bcd565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114cc9086815260200190565b60405180910390a35060019392505050565b601e546001600160a01b039081169082160361151457611511601054600c55601154600d55601254600e55601354600f55565b50565b611511601454600c55601554600d55601654600e55601754600f55565b60006001600160a01b0382163014801561154e575060215460ff16155b80156115635750601e54600160a01b900460ff165b801561089c5750601f5430600090815260046020526040902054101592915050565b6021805460ff1916600117905560208054306000908152600490925260408220546115b09190611be0565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106115ea576115ea611c49565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611643573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116679190611c5f565b8160018151811061167a5761167a611c49565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b81524792919091169063791ac947906116c4908690600090879030904290600401611c7c565b600060405180830381600087803b1580156116de57600080fd5b505af11580156116f2573d6000803e3d6000fd5b50505050600081476117049190611be0565b90506000600f54600c54836117199190611c10565b6117239190611c27565b90506000600f54600d54846117389190611c10565b6117429190611c27565b90506000600f54600e54856117579190611c10565b6117619190611c27565b601a546040519192506000916001600160a01b039091169061753090869084818181858888f193505050503d80600081146117b8576040519150601f19603f3d011682016040523d82523d6000602084013e6117bd565b606091505b50509050806117de5760405162461bcd60e51b81526004016108cc90611ced565b601b546040516000916001600160a01b03169061753090869084818181858888f193505050503d8060008114611830576040519150601f19603f3d011682016040523d82523d6000602084013e611835565b606091505b50509050806118565760405162461bcd60e51b81526004016108cc90611ced565b601c546040516000916001600160a01b03169061753090869084818181858888f193505050503d80600081146118a8576040519150601f19603f3d011682016040523d82523d6000602084013e6118ad565b606091505b50509050806118ce5760405162461bcd60e51b81526004016108cc90611ced565b50506021805460ff191690555050505050505050565b6000806008546007546118f79190611bcd565b43111561191b57600f5461190c606485611c27565b6119169190611c10565b611931565b611926606484611c27565b611931906063611c10565b9050610a738184611be0565b600060208083528351808285015260005b8181101561196a5785810183015185820160400152820161194e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461151157600080fd5b600080604083850312156119b357600080fd5b82356119be8161198b565b946020939093013593505050565b6000806000606084860312156119e157600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611a0d57600080fd5b8335611a188161198b565b92506020840135611a288161198b565b929592945050506040919091013590565b600060208284031215611a4b57600080fd5b8135610a738161198b565b801515811461151157600080fd5b60008060408385031215611a7757600080fd5b8235611a828161198b565b91506020830135611a9281611a56565b809150509250929050565b600060208284031215611aaf57600080fd5b5035919050565b60008060408385031215611ac957600080fd5b82356119be81611a56565b600080600060608486031215611ae957600080fd5b8335611af481611a56565b95602085013595506040909401359392505050565b600080600060608486031215611b1e57600080fd5b8335611b298161198b565b92506020840135611b398161198b565b91506040840135611b498161198b565b809150509250925092565b60008060408385031215611b6757600080fd5b8235611b728161198b565b91506020830135611a928161198b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561089c5761089c611bb7565b8181038181111561089c5761089c611bb7565b600060208284031215611c0557600080fd5b8151610a7381611a56565b808202811582820484141761089c5761089c611bb7565b600082611c4457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611c7157600080fd5b8151610a738161198b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ccc5784516001600160a01b031683529383019391830191600101611ca7565b50506001600160a01b03969096166060850152505050608001529392505050565b6020808252601e908201527f72656365697665722072656a656374656420455448207472616e73666572000060408201526060019056fea2646970667358221220cfa3ad33127a3e4b939229a4b08cb7352b167fcc50a830e5c8ba86c2b8a4a5a064736f6c63430008130033