0x608060405234801561001057600080fd5b5060405161157f38038061157f83398101604081905261002f916100bd565b806100393361006d565b600180546001600160a01b039283166001600160a01b031991821617909155600280549390921692169190911790556100ed565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100cf57600080fd5b81516001600160a01b03811681146100e657600080fd5b9392505050565b611483806100fc6000396000f3fe6080604052600436106101355760003560e01c8063b588d1c9116100ab578063dc628aa41161006f578063dc628aa41461033e578063ddcb4b681461035e578063edc7a35f1461037e578063f2fde38b14610391578063f928603e146103b1578063fc8e9177146103d157600080fd5b8063b588d1c9146102ab578063bdc15880146102cb578063bee20885146102de578063c3549bd3146102fe578063cc8ba1881461031e57600080fd5b80636af84fc0116100fd5780636af84fc0146101f8578063715018a6146102185780637df6a6c81461022d578063811822e61461024d5780638da5cb5b1461026d5780639e3bac7f1461028b57600080fd5b8063214cefe21461013a578063249b570b1461017657806339029b9314610198578063503690d1146101b85780635b116ab8146101d8575b600080fd5b34801561014657600080fd5b5060015461015a906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b34801561018257600080fd5b50610196610191366004611070565b6103f1565b005b3480156101a457600080fd5b506101966101b3366004611020565b610635565b3480156101c457600080fd5b506101966101d33660046111d1565b6106c2565b3480156101e457600080fd5b506101966101f3366004611044565b610760565b34801561020457600080fd5b50610196610213366004611212565b6107f5565b34801561022457600080fd5b50610196610850565b34801561023957600080fd5b50610196610248366004611212565b6108c2565b34801561025957600080fd5b50610196610268366004611212565b61091d565b34801561027957600080fd5b506000546001600160a01b031661015a565b34801561029757600080fd5b506101966102a6366004611020565b610978565b3480156102b757600080fd5b506101966102c6366004611020565b6109ce565b6101966102d936600461114b565b610a2a565b3480156102ea57600080fd5b506101966102f9366004611244565b610aa1565b34801561030a57600080fd5b5060025461015a906001600160a01b031681565b34801561032a57600080fd5b506101966103393660046112a3565b610c30565b34801561034a57600080fd5b50610196610359366004611281565b610c99565b34801561036a57600080fd5b506101966103793660046111af565b610cfb565b61019661038c36600461114b565b610d57565b34801561039d57600080fd5b506101966103ac366004611020565b610db5565b3480156103bd57600080fd5b506101966103cc366004611212565b610e0d565b3480156103dd57600080fd5b506101966103ec366004611212565b610e68565b6000546001600160a01b031633146104245760405162461bcd60e51b815260040161041b90611338565b60405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663a85adeab6040518163ffffffff1660e01b815260040160206040518083038186803b15801561047257600080fd5b505afa158015610486573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104aa919061122b565b42108061053a5750600160009054906101000a90046001600160a01b03166001600160a01b031663a85adeab6040518163ffffffff1660e01b815260040160206040518083038186803b15801561050057600080fd5b505afa158015610514573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610538919061122b565b155b61055757604051631699f04b60e31b815260040160405180910390fd5b80518251146105795760405163260ff0af60e21b815260040160405180910390fd5b60005b82518110156106305760015483516001600160a01b039091169063bee20885908590849081106105ae576105ae61140c565b60200260200101518484815181106105c8576105c861140c565b60200260200101516040518363ffffffff1660e01b81526004016105ed92919061136d565b600060405180830381600087803b15801561060757600080fd5b505af115801561061b573d6000803e3d6000fd5b5050505080610629906113e3565b905061057c565b505050565b6000546001600160a01b0316331461065f5760405162461bcd60e51b815260040161041b90611338565b60015460405163f2fde38b60e01b81526001600160a01b0383811660048301529091169063f2fde38b906024015b600060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031633146106ec5760405162461bcd60e51b815260040161041b90611338565b60015460405163503690d160e01b81526001600160a01b0385811660048301528481166024830152604482018490529091169063503690d1906064015b600060405180830381600087803b15801561074357600080fd5b505af1158015610757573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b0316331461078a5760405162461bcd60e51b815260040161041b90611338565b600254604051630b622d5760e31b81526001600160a01b0384811660048301526024820184905290911690635b116ab8906044015b600060405180830381600087803b1580156107d957600080fd5b505af11580156107ed573d6000803e3d6000fd5b505050505050565b6000546001600160a01b0316331461081f5760405162461bcd60e51b815260040161041b90611338565b6001546040516301abe13f60e61b8152600481018390526001600160a01b0390911690636af84fc09060240161068d565b6000546001600160a01b0316331461087a5760405162461bcd60e51b815260040161041b90611338565b60405162461bcd60e51b815260206004820152601d60248201527f4f776e6572736869702063616e6e6f742062652072656e6f756e636564000000604482015260640161041b565b6000546001600160a01b031633146108ec5760405162461bcd60e51b815260040161041b90611338565b600154604051630fbed4d960e31b8152600481018390526001600160a01b0390911690637df6a6c89060240161068d565b6000546001600160a01b031633146109475760405162461bcd60e51b815260040161041b90611338565b60015460405163408c117360e11b8152600481018390526001600160a01b039091169063811822e69060240161068d565b6000546001600160a01b031633146109a25760405162461bcd60e51b815260040161041b90611338565b600180546001600160a01b039092166001600160a01b0319928316811790915560028054909216179055565b6000546001600160a01b031633146109f85760405162461bcd60e51b815260040161041b90611338565b60015460405163b588d1c960e01b81526001600160a01b0383811660048301529091169063b588d1c99060240161068d565b6000546001600160a01b03163314610a545760405162461bcd60e51b815260040161041b90611338565b60025460405163017b82b160e71b81526001600160a01b039091169063bdc15880903490610a88908690869060040161130a565b6000604051808303818588803b15801561074357600080fd5b6000546001600160a01b03163314610acb5760405162461bcd60e51b815260040161041b90611338565b600160009054906101000a90046001600160a01b03166001600160a01b031663a85adeab6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b1957600080fd5b505afa158015610b2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b51919061122b565b421080610be15750600160009054906101000a90046001600160a01b03166001600160a01b031663a85adeab6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ba757600080fd5b505afa158015610bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdf919061122b565b155b610bfe57604051631699f04b60e31b815260040160405180910390fd5b60015460405163bee2088560e01b81526001600160a01b039091169063bee20885906107bf908590859060040161136d565b6000546001600160a01b03163314610c5a5760405162461bcd60e51b815260040161041b90611338565b600154604051631991743160e31b81526004810185905260248101849052604481018390526001600160a01b039091169063cc8ba18890606401610729565b6000546001600160a01b03163314610cc35760405162461bcd60e51b815260040161041b90611338565b600154604051633718a2a960e21b815260048101849052602481018390526001600160a01b039091169063dc628aa4906044016107bf565b6000546001600160a01b03163314610d255760405162461bcd60e51b815260040161041b90611338565b600154604051631bb9696d60e31b815282151560048201526001600160a01b039091169063ddcb4b689060240161068d565b6000546001600160a01b03163314610d815760405162461bcd60e51b815260040161041b90611338565b60025460405163edc7a35f60e01b81526001600160a01b039091169063edc7a35f903490610a88908690869060040161130a565b6000546001600160a01b03163314610ddf5760405162461bcd60e51b815260040161041b90611338565b803b8015610e005760405163d1ea922b60e01b815260040160405180910390fd5b610e0982610ec3565b5050565b6000546001600160a01b03163314610e375760405162461bcd60e51b815260040161041b90611338565b600154604051637c94301f60e11b8152600481018390526001600160a01b039091169063f928603e9060240161068d565b6000546001600160a01b03163314610e925760405162461bcd60e51b815260040161041b90611338565b60025460405163fc8e917760e01b8152600481018390526001600160a01b039091169063fc8e91779060240161068d565b6000546001600160a01b03163314610eed5760405162461bcd60e51b815260040161041b90611338565b6001600160a01b038116610f525760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161041b565b610f5b81610f5e565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600082601f830112610fbf57600080fd5b81356020610fd4610fcf836113bf565b61138e565b80838252828201915082860187848660051b8901011115610ff457600080fd5b60005b8581101561101357813584529284019290840190600101610ff7565b5090979650505050505050565b60006020828403121561103257600080fd5b813561103d81611438565b9392505050565b6000806040838503121561105757600080fd5b823561106281611438565b946020939093013593505050565b6000806040838503121561108357600080fd5b823567ffffffffffffffff8082111561109b57600080fd5b6110a786838701610fae565b93506020915081850135818111156110be57600080fd5b8501601f810187136110cf57600080fd5b80356110dd610fcf826113bf565b8082825285820191508584018a878560051b87010111156110fd57600080fd5b6000805b8581101561113857823588811115611117578283fd5b6111258e8b838b0101610fae565b8652509388019391880191600101611101565b5050508096505050505050509250929050565b6000806040838503121561115e57600080fd5b823567ffffffffffffffff8082111561117657600080fd5b61118286838701610fae565b9350602085013591508082111561119857600080fd5b506111a585828601610fae565b9150509250929050565b6000602082840312156111c157600080fd5b8135801515811461103d57600080fd5b6000806000606084860312156111e657600080fd5b83356111f181611438565b9250602084013561120181611438565b929592945050506040919091013590565b60006020828403121561122457600080fd5b5035919050565b60006020828403121561123d57600080fd5b5051919050565b6000806040838503121561125757600080fd5b82359150602083013567ffffffffffffffff81111561127557600080fd5b6111a585828601610fae565b6000806040838503121561129457600080fd5b50508035926020909101359150565b6000806000606084860312156112b857600080fd5b505081359360208301359350604090920135919050565b600081518084526020808501945080840160005b838110156112ff578151875295820195908201906001016112e3565b509495945050505050565b60408152600061131d60408301856112cf565b828103602084015261132f81856112cf565b95945050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b82815260406020820152600061138660408301846112cf565b949350505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156113b7576113b7611422565b604052919050565b600067ffffffffffffffff8211156113d9576113d9611422565b5060051b60200190565b600060001982141561140557634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610f5b57600080fdfea26469706673582212205d02f3df5ee85c5524a3427f66a167f75e463d3e5e74570a364401682602e37264736f6c634300080700330000000000000000000000003f257f1749e10edfa24087ecda5fbedbcb7d5c2e