6080604052600180546001600160a01b03191661dead179055620000266009600a6200055b565b6200003690633b9aca0062000573565b600281905562000049906103e862000573565b6003556006805460ff19169055600060078190556008819055600c8190556001600d819055600e8290556010829055601181905560128290556200008e90826200058d565b6200009a91906200058d565b60135560006014819055600160158190556016829055620000bc90826200058d565b620000c891906200058d565b601755612710600254612710620000e0919062000573565b620000ec9190620005a3565b60185561271060025461271062000104919062000573565b620001109190620005a3565b601955601a80546001600160a01b0319908116733b58ac6d346ae68a063a9589afde5106e4015fea908117909255601b8054821683179055601c80549091169091179055601e805460ff60a01b1916600160a01b179055600254612710906200017b90600a62000573565b620001879190620005a3565b601f5561271060025460016200019e919062000573565b620001aa9190620005a3565b602055348015620001ba57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000261573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002879190620005c6565b6001600160a01b031663c9c65396601d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030f9190620005c6565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200035c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003829190620005c6565b601e80546001600160a01b0319166001600160a01b03928316179055306000818152600560209081526040808320601d549095168352938152838220600019905533808352600a8252848320805460ff199081166001908117909255600b84528685208054909116909117905560035493835260048252848320939093556002548383528483208190559351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620005f1565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200049d57816000190482111562000481576200048162000446565b808516156200048f57918102915b93841c939080029062000461565b509250929050565b600082620004b65750600162000555565b81620004c55750600062000555565b8160018114620004de5760028114620004e95762000509565b600191505062000555565b60ff841115620004fd57620004fd62000446565b50506001821b62000555565b5060208310610133831016604e8410600b84101617156200052e575081810a62000555565b6200053a83836200045c565b806000190482111562000551576200055162000446565b0290505b92915050565b60006200056c60ff841683620004a5565b9392505050565b808202811582820484141762000555576200055562000446565b8082018082111562000555576200055562000446565b600082620005c157634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620005d957600080fd5b81516001600160a01b03811681146200056c57600080fd5b611d5880620006016000396000f3fe6080604052600436106102605760003560e01c80636827e76411610144578063bfa21d6a116100b6578063dd62ed3e1161007a578063dd62ed3e1461073d578063e96fada214610783578063ec28438a146107a3578063f2fde38b146107c3578063f84ba65d146107e3578063fe575a871461080357600080fd5b8063bfa21d6a146106a7578063c4f04841146106c7578063d0889358146106dd578063d7c01032146106fd578063dab84ee71461071d57600080fd5b8063893d20e811610108578063893d20e8146105de5780638b42507f146105fc5780638f9a55c01461062c57806395d89b411461064257806398118cb414610671578063a9059cbb1461068757600080fd5b80636827e764146105465780636ddd17131461055c57806370a082311461057d578063715018a6146105b35780637d1db4a5146105c857600080fd5b80633f4218e0116101dd57806352551a75116101a157806352551a7514610486578063534030b1146104a6578063596fa9e3146104c65780635d0044ca146104e65780635e83ae7614610506578063658d4b7f1461052657600080fd5b80633f4218e0146103d957806342cc2f45146104095780634ada218b146104415780634f28cac21461045b57806351bc3c851461047157600080fd5b806318160ddd1161022457806318160ddd146103435780631df4ccfc1461035857806323b872dd1461036e5780632f54bf6e1461038e578063313ce567146103bd57600080fd5b80630445b6671461026c57806306fdde0314610295578063095ea7b3146102d15780630d075d9c146103015780630f683e901461032357600080fd5b3661026757005b600080fd5b34801561027857600080fd5b50610282601f5481565b6040519081526020015b60405180910390f35b3480156102a157600080fd5b5060408051808201909152600a8152695368696e6a7520496e7560b01b60208201525b60405161028c919061193b565b3480156102dd57600080fd5b506102f16102ec36600461199e565b610833565b604051901515815260200161028c565b34801561030d57600080fd5b5061032161031c3660046119ca565b6108a0565b005b34801561032f57600080fd5b5061032161033e3660046119ca565b610948565b34801561034f57600080fd5b50600254610282565b34801561036457600080fd5b50610282600f5481565b34801561037a57600080fd5b506102f16103893660046119f6565b6109e3565b34801561039a57600080fd5b506102f16103a9366004611a37565b6000546001600160a01b0391821691161490565b3480156103c957600080fd5b506040516009815260200161028c565b3480156103e557600080fd5b506102f16103f4366004611a37565b600a6020526000908152604090205460ff1681565b34801561041557600080fd5b50601e54610429906001600160a01b031681565b6040516001600160a01b03909116815260200161028c565b34801561044d57600080fd5b506006546102f19060ff1681565b34801561046757600080fd5b5061028260205481565b34801561047d57600080fd5b50610321610a78565b34801561049257600080fd5b506102f16104a136600461199e565b610ad5565b3480156104b257600080fd5b506103216104c1366004611a62565b610b49565b3480156104d257600080fd5b50601d54610429906001600160a01b031681565b3480156104f257600080fd5b50610321610501366004611a9b565b610b9e565b34801561051257600080fd5b50610321610521366004611ab4565b610c3a565b34801561053257600080fd5b50610321610541366004611a62565b610cc8565b34801561055257600080fd5b50610282600c5481565b34801561056857600080fd5b50601e546102f190600160a01b900460ff1681565b34801561058957600080fd5b50610282610598366004611a37565b6001600160a01b031660009081526004602052604090205490565b3480156105bf57600080fd5b50610321610d1d565b3480156105d457600080fd5b5061028260185481565b3480156105ea57600080fd5b506000546001600160a01b0316610429565b34801561060857600080fd5b506102f1610617366004611a37565b600b6020526000908152604090205460ff1681565b34801561063857600080fd5b5061028260195481565b34801561064e57600080fd5b506040805180820190915260068152655348494e4a5560d01b60208201526102c4565b34801561067d57600080fd5b50610282600e5481565b34801561069357600080fd5b506102f16106a236600461199e565b610d91565b3480156106b357600080fd5b50601c54610429906001600160a01b031681565b3480156106d357600080fd5b50610282600d5481565b3480156106e957600080fd5b506103216106f8366004611ad2565b610d9e565b34801561070957600080fd5b50610321610718366004611b07565b610e22565b34801561072957600080fd5b50601a54610429906001600160a01b031681565b34801561074957600080fd5b50610282610758366004611b52565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561078f57600080fd5b50601b54610429906001600160a01b031681565b3480156107af57600080fd5b506103216107be366004611a9b565b610e8b565b3480156107cf57600080fd5b506103216107de366004611a37565b610f1f565b3480156107ef57600080fd5b506103216107fe366004611a62565b611009565b34801561080f57600080fd5b506102f161081e366004611a37565b60096020526000908152604090205460ff1681565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061088e9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146108d35760405162461bcd60e51b81526004016108ca90611b80565b60405180910390fd5b601083905560118290556012819055806108ed8385611bcb565b6108f79190611bcb565b6013819055601910156109435760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642062757920746178206665657360601b60448201526064016108ca565b505050565b6000546001600160a01b031633146109725760405162461bcd60e51b81526004016108ca90611b80565b6014839055601582905560168190558061098c8385611bcb565b6109969190611bcb565b6017819055605f10156109435760405162461bcd60e51b8152602060048201526015602482015274496e76616c69642073656c6c20746178206665657360581b60448201526064016108ca565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610a63576001600160a01b0384166000908152600560209081526040808320338452909152902054610a3e908390611bde565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b610a6e84848461105e565b90505b9392505050565b6000546001600160a01b03163314610aa25760405162461bcd60e51b81526004016108ca90611b80565b6040514790339082156108fc029083906000818181858888f19350505050158015610ad1573d6000803e3d6000fd5b5050565b60405163a9059cbb60e01b8152336004820152602481018290526000906001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a719190611bf1565b6000546001600160a01b03163314610b735760405162461bcd60e51b81526004016108ca90611b80565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610bc85760405162461bcd60e51b81526004016108ca90611b80565b6064811015610c195760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206d61782077616c6c65742073697a6500000000000000000060448201526064016108ca565b61271081600254610c2a9190611c0e565b610c349190611c25565b60195550565b6000546001600160a01b03163314610c645760405162461bcd60e51b81526004016108ca90611b80565b81610ca35760405162461bcd60e51b815260206004820152600f60248201526e273790393ab3903432b9329039b2b960891b60448201526064016108ca565b6006805460ff19168315159081179091556008829055600103610ad157436007555050565b6000546001600160a01b03163314610cf25760405162461bcd60e51b81526004016108ca90611b80565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d475760405162461bcd60e51b81526004016108ca90611b80565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000610a7133848461105e565b6000546001600160a01b03163314610dc85760405162461bcd60e51b81526004016108ca90611b80565b601e805460ff60a01b1916600160a01b8515150217905560025461271090610df1908490611c0e565b610dfb9190611c25565b601f5560025461271090610e10908390611c0e565b610e1a9190611c25565b602055505050565b6000546001600160a01b03163314610e4c5760405162461bcd60e51b81526004016108ca90611b80565b601a80546001600160a01b039485166001600160a01b031991821617909155601b805493851693821693909317909255601c8054919093169116179055565b6000546001600160a01b03163314610eb55760405162461bcd60e51b81526004016108ca90611b80565b6032811015610efe5760405162461bcd60e51b8152602060048201526015602482015274125b9d985b1a59081b585e081d1e08185b5bdd5b9d605a1b60448201526064016108ca565b61271081600254610f0f9190611c0e565b610f199190611c25565b60185550565b6000546001600160a01b03163314610f495760405162461bcd60e51b81526004016108ca90611b80565b6001600160a01b038116610fae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108ca565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110335760405162461bcd60e51b81526004016108ca90611b80565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b60215460009060ff1680611070575081155b1561108757611080848484611422565b9050610a71565b6001600160a01b0384166000908152600a602052604090205460ff161580156110c957506001600160a01b0383166000908152600a602052604090205460ff16155b80156110d8575060065460ff16155b80156110f15750601e546001600160a01b038581169116145b1561111a576001600160a01b0383166000908152600960205260409020805460ff191660011790555b6001600160a01b03841660009081526009602052604090205460ff16156111745760405162461bcd60e51b815260206004820152600e60248201526d596f7520617265206120626f742160901b60448201526064016108ca565b61117d846114dc565b6000546001600160a01b038581169116148015906111a457506001600160a01b0383163014155b80156111be57506001546001600160a01b03848116911614155b80156111d85750601e546001600160a01b03848116911614155b1561129c576001600160a01b0383166000908152600460205260409020546019546112038483611bcb565b11158061122857506001600160a01b0384166000908152600b602052604090205460ff165b61129a5760405162461bcd60e51b815260206004820152603f60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f7420686f6c642074686174206d7563682e0060648201526084016108ca565b505b601e546001600160a01b039081169085160361131c57601854821115806112db57506001600160a01b0383166000908152600b602052604090205460ff165b61131c5760405162461bcd60e51b81526020600482015260126024820152712a2c103634b6b4ba1032bc31b2b2b232b21760711b60448201526064016108ca565b6113258461152f565b1561133257611332611583565b6001600160a01b038416600090815260046020526040902054611356908390611bde565b6001600160a01b038516600090815260046020908152604080832093909355600a90529081205460ff161561138b5782611394565b611394836118e2565b6001600160a01b0385166000908152600460205260409020549091506113bb908290611bcb565b6001600160a01b0380861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061140f9085815260200190565b60405180910390a3506001949350505050565b6001600160a01b038316600090815260046020526040812054611446908390611bde565b6001600160a01b038086166000908152600460205260408082209390935590851681522054611476908390611bcb565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114ca9086815260200190565b60405180910390a35060019392505050565b601e546001600160a01b03908116908216036115125761150f601054600c55601154600d55601254600e55601354600f55565b50565b61150f601454600c55601554600d55601654600e55601754600f55565b60006001600160a01b0382163014801561154c575060215460ff16155b80156115615750601e54600160a01b900460ff165b801561089a5750601f5430600090815260046020526040902054101592915050565b6021805460ff1916600117905560208054306000908152600490925260408220546115ae9190611bde565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106115e8576115e8611c47565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116659190611c5d565b8160018151811061167857611678611c47565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b81524792919091169063791ac947906116c2908690600090879030904290600401611c7a565b600060405180830381600087803b1580156116dc57600080fd5b505af11580156116f0573d6000803e3d6000fd5b50505050600081476117029190611bde565b90506000600f54600c54836117179190611c0e565b6117219190611c25565b90506000600f54600d54846117369190611c0e565b6117409190611c25565b90506000600f54600e54856117559190611c0e565b61175f9190611c25565b601a546040519192506000916001600160a01b039091169061753090869084818181858888f193505050503d80600081146117b6576040519150601f19603f3d011682016040523d82523d6000602084013e6117bb565b606091505b50509050806117dc5760405162461bcd60e51b81526004016108ca90611ceb565b601b546040516000916001600160a01b03169061753090869084818181858888f193505050503d806000811461182e576040519150601f19603f3d011682016040523d82523d6000602084013e611833565b606091505b50509050806118545760405162461bcd60e51b81526004016108ca90611ceb565b601c546040516000916001600160a01b03169061753090869084818181858888f193505050503d80600081146118a6576040519150601f19603f3d011682016040523d82523d6000602084013e6118ab565b606091505b50509050806118cc5760405162461bcd60e51b81526004016108ca90611ceb565b50506021805460ff191690555050505050505050565b6000806008546007546118f59190611bcb565b43111561191957600f5461190a606485611c25565b6119149190611c0e565b61192f565b611924606484611c25565b61192f906063611c0e565b9050610a718184611bde565b600060208083528351808285015260005b818110156119685785810183015185820160400152820161194c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461150f57600080fd5b600080604083850312156119b157600080fd5b82356119bc81611989565b946020939093013593505050565b6000806000606084860312156119df57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611a0b57600080fd5b8335611a1681611989565b92506020840135611a2681611989565b929592945050506040919091013590565b600060208284031215611a4957600080fd5b8135610a7181611989565b801515811461150f57600080fd5b60008060408385031215611a7557600080fd5b8235611a8081611989565b91506020830135611a9081611a54565b809150509250929050565b600060208284031215611aad57600080fd5b5035919050565b60008060408385031215611ac757600080fd5b82356119bc81611a54565b600080600060608486031215611ae757600080fd5b8335611af281611a54565b95602085013595506040909401359392505050565b600080600060608486031215611b1c57600080fd5b8335611b2781611989565b92506020840135611b3781611989565b91506040840135611b4781611989565b809150509250925092565b60008060408385031215611b6557600080fd5b8235611b7081611989565b91506020830135611a9081611989565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561089a5761089a611bb5565b8181038181111561089a5761089a611bb5565b600060208284031215611c0357600080fd5b8151610a7181611a54565b808202811582820484141761089a5761089a611bb5565b600082611c4257634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611c6f57600080fd5b8151610a7181611989565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611cca5784516001600160a01b031683529383019391830191600101611ca5565b50506001600160a01b03969096166060850152505050608001529392505050565b6020808252601e908201527f72656365697665722072656a656374656420455448207472616e73666572000060408201526060019056fea2646970667358221220f605fb4681dea154408ba94473c50b10719d6799c1e370e5a4fe06009249902364736f6c63430008130033