60806040526001805460ff60a01b19169055600f805461ff001916905534801561002857600080fd5b50600080546001600160a01b03191633179055600f805460ff19166006179055614d11806100576000396000f3fe6080604052600436106103815760003560e01c80638da5cb5b116101d1578063cf2c52cb11610102578063e94a0102116100a0578063f9428b811161006f578063f9428b8114610fee578063f9f92be414611003578063fa2c322d14611036578063fe575a871461104b57610381565b8063e94a010214610ebc578063ea7b65f414610ef5578063ef55bec614610f4f578063f2fde38b14610fbb57610381565b8063dd62ed3e116100dc578063dd62ed3e14610d94578063e1560fd314610dcf578063e3ee160e14610e3b578063e5a6b10f14610ea757610381565b8063cf2c52cb14610c96578063d505accf14610d21578063d916948714610d7f57610381565b8063ad38bf221161016f578063bd10243011610149578063bd10243014610bcd578063bf3506c114610be2578063c237108f14610c15578063c7b84f8d14610c8157610381565b8063ad38bf2214610aeb578063b008609514610b1e578063b2118a8d14610b8a57610381565b8063a0712d68116101ab578063a0712d6814610a3a578063a0cc6a6814610a64578063a457c2d714610a79578063a9059cbb14610ab257610381565b80638da5cb5b146109fb57806395d89b4114610a105780639fd0506d14610a2557610381565b806338a63183116102b6578063554bab3c1161025457806370a082311161022357806370a082311461096b5780637ecebe001461099e5780637f2eecc3146109d15780638456cb59146109e657610381565b8063554bab3c1461080a57806356ce0e6c1461083d5780635a049a70146109085780635c975abb1461095657610381565b80634239c41a116102905780634239c41a1461074c578063445a6797146107ad5780634b71f5c3146107e05780634e71d92d146107f557610381565b806338a63183146106cd57806339509351146106fe5780633f4ba83a1461073757610381565b806323b872dd116103235780632e1a7d4d116102fd5780632e1a7d4d1461064e57806330adf81f14610678578063313ce5671461068d5780633644e515146106b857610381565b806323b872dd146105a557806326a40c99146105e85780632ab600451461061b57610381565b806310c8b4041161035f57806310c8b4041461051f57806318160ddd146105465780631a8952661461055b5780631c113d5a1461059057610381565b806306fdde0314610386578063095ea7b3146104105780630c53c51c1461045d575b600080fd5b34801561039257600080fd5b5061039b61107e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103d55781810151838201526020016103bd565b50505050905090810190601f1680156104025780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041c57600080fd5b506104496004803603604081101561043357600080fd5b506001600160a01b038135169060200135611115565b604080519115158252519081900360200190f35b61039b600480360360a081101561047357600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561049d57600080fd5b8201836020820111156104af57600080fd5b803590602001918460018302840111600160201b831117156104d057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020810135906040013560ff1661123c565b34801561052b57600080fd5b50610534611504565b60408051918252519081900360200190f35b34801561055257600080fd5b50610534611528565b34801561056757600080fd5b5061058e6004803603602081101561057e57600080fd5b50356001600160a01b031661152e565b005b34801561059c57600080fd5b506105346115d0565b3480156105b157600080fd5b50610449600480360360608110156105c857600080fd5b506001600160a01b038135811691602081013590911690604001356115f4565b3480156105f457600080fd5b506105346004803603602081101561060b57600080fd5b50356001600160a01b03166117e0565b34801561062757600080fd5b5061058e6004803603602081101561063e57600080fd5b50356001600160a01b0316611847565b34801561065a57600080fd5b5061058e6004803603602081101561067157600080fd5b5035611933565b34801561068457600080fd5b50610534611947565b34801561069957600080fd5b506106a261196b565b6040805160ff9092168252519081900360200190f35b3480156106c457600080fd5b50610534611974565b3480156106d957600080fd5b506106e261197a565b604080516001600160a01b039092168252519081900360200190f35b34801561070a57600080fd5b506104496004803603604081101561072157600080fd5b506001600160a01b038135169060200135611989565b34801561074357600080fd5b5061058e611aa5565b34801561075857600080fd5b5061058e600480360361010081101561077057600080fd5b506001600160a01b038135169060208101359060408101359060608101359060808101359060ff60a0820135169060c08101359060e00135611b36565b3480156107b957600080fd5b5061058e600480360360208110156107d057600080fd5b50356001600160a01b0316611bf8565b3480156107ec57600080fd5b50610534611cea565b34801561080157600080fd5b5061058e611d0e565b34801561081657600080fd5b5061058e6004803603602081101561082d57600080fd5b50356001600160a01b0316611db3565b34801561084957600080fd5b5061058e6004803603604081101561086057600080fd5b810190602081018135600160201b81111561087a57600080fd5b82018360208201111561088c57600080fd5b803590602001918460018302840111600160201b831117156108ad57600080fd5b919390929091602081019035600160201b8111156108ca57600080fd5b8201836020820111156108dc57600080fd5b803590602001918460018302840111600160201b831117156108fd57600080fd5b509092509050611ea5565b34801561091457600080fd5b5061058e600480360360a081101561092b57600080fd5b506001600160a01b038135169060208101359060ff6040820135169060608101359060800135611f7d565b34801561096257600080fd5b50610449611fde565b34801561097757600080fd5b506105346004803603602081101561098e57600080fd5b50356001600160a01b0316611fee565b3480156109aa57600080fd5b50610534600480360360208110156109c157600080fd5b50356001600160a01b0316612009565b3480156109dd57600080fd5b50610534612024565b3480156109f257600080fd5b5061058e612048565b348015610a0757600080fd5b506106e26120df565b348015610a1c57600080fd5b5061039b6120ee565b348015610a3157600080fd5b506106e261214f565b348015610a4657600080fd5b5061058e60048036036020811015610a5d57600080fd5b503561215e565b348015610a7057600080fd5b5061053461218b565b348015610a8557600080fd5b5061044960048036036040811015610a9c57600080fd5b506001600160a01b0381351690602001356121af565b348015610abe57600080fd5b5061044960048036036040811015610ad557600080fd5b506001600160a01b0381351690602001356122cb565b348015610af757600080fd5b5061058e60048036036020811015610b0e57600080fd5b50356001600160a01b03166123e7565b348015610b2a57600080fd5b5061058e6004803603610120811015610b4257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060ff60c0820135169060e08101359061010001356124d9565b348015610b9657600080fd5b5061058e60048036036060811015610bad57600080fd5b506001600160a01b038135811691602081013590911690604001356125f8565b348015610bd957600080fd5b506106e261266a565b348015610bee57600080fd5b5061044960048036036020811015610c0557600080fd5b50356001600160a01b0316612679565b348015610c2157600080fd5b5061058e6004803603610120811015610c3957600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060ff60c0820135169060e0810135906101000135612690565b348015610c8d57600080fd5b506105346127a2565b348015610ca257600080fd5b5061058e60048036036040811015610cb957600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610ce357600080fd5b820183602082011115610cf557600080fd5b803590602001918460018302840111600160201b83111715610d1657600080fd5b5090925090506127c6565b348015610d2d57600080fd5b5061058e600480360360e0811015610d4457600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135612845565b348015610d8b57600080fd5b50610534612955565b348015610da057600080fd5b5061053460048036036040811015610db757600080fd5b506001600160a01b0381358116916020013516612979565b348015610ddb57600080fd5b5061058e6004803603610120811015610df357600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060ff60c0820135169060e08101359061010001356129a4565b348015610e4757600080fd5b5061058e6004803603610120811015610e5f57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060ff60c0820135169060e0810135906101000135612ab6565b348015610eb357600080fd5b5061039b612bc8565b348015610ec857600080fd5b5061044960048036036040811015610edf57600080fd5b506001600160a01b038135169060200135612c29565b348015610f0157600080fd5b5061058e600480360360e0811015610f1857600080fd5b506001600160a01b038135169060208101359060408101359060608101359060ff6080820135169060a08101359060c00135612c54565b348015610f5b57600080fd5b5061058e6004803603610120811015610f7357600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060ff60c0820135169060e0810135906101000135612d14565b348015610fc757600080fd5b5061058e60048036036020811015610fde57600080fd5b50356001600160a01b0316612e26565b348015610ffa57600080fd5b50610534612f32565b34801561100f57600080fd5b5061058e6004803603602081101561102657600080fd5b50356001600160a01b0316612f56565b34801561104257600080fd5b50610534612ffb565b34801561105757600080fd5b506104496004803603602081101561106e57600080fd5b50356001600160a01b031661301f565b600c8054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561110a5780601f106110df5761010080835404028352916020019161110a565b820191906000526020600020905b8154815290600101906020018083116110ed57829003601f168201915b505050505090505b90565b600154600090600160a01b900460ff1615611165576040805162461bcd60e51b81526020600482015260106024820152600080516020614b18833981519152604482015290519081900360640190fd5b61116d61303d565b6001600160a01b03811660009081526003602052604090205460ff16156111c55760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b6001600160a01b038416600090815260036020526040902054849060ff161561121f5760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b61123161122a61303d565b868661304c565b506001949350505050565b6060611246614762565b50604080516060810182526001600160a01b03881660008181526007602090815290849020805460018101909155835282015290810186905261128c8782878787613138565b6112c75760405162461bcd60e51b8152600401808060200182810382526021815260200180614a8c6021913960400191505060405180910390fd5b7f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b87338860405180846001600160a01b03168152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561134657818101518382015260200161132e565b50505050905090810190601f1680156113735780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a160006060306001600160a01b0316888a6040516020018083805190602001908083835b602083106113c45780518252601f1990920191602091820191016113a5565b6001836020036101000a038019825116818451168082178552505050505050905001826001600160a01b031660601b8152601401925050506040516020818303038152906040526040518082805190602001908083835b6020831061143a5780518252601f19909201916020918201910161141b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461149c576040519150601f19603f3d011682016040523d82523d6000602084013e6114a1565b606091505b5091509150816114f8576040805162461bcd60e51b815260206004820152601c60248201527f46756e6374696f6e2063616c6c206e6f74207375636365737366756c00000000604482015290519081900360640190fd5b98975050505050505050565b7f808c10407a796f3ef2c7ea38c0638ea9d2b8a1c63e3ca9e1f56ce84ae59df73c81565b600b5490565b6002546001600160a01b031661154261303d565b6001600160a01b0316146115875760405162461bcd60e51b815260040180806020018281038252602c8152602001806149cf602c913960400191505060405180910390fd5b6001600160a01b038116600081815260036020526040808220805460ff19169055517f117e3210bb9aa7d9baff172026820255c6f6c30ba8999d1c2fd88e2848137c4e9190a250565b7fa903e8f81a8524953537b29128569227da6c8d3c802e22ca6b929c9a11ca357281565b600154600090600160a01b900460ff1615611644576040805162461bcd60e51b81526020600482015260106024820152600080516020614b18833981519152604482015290519081900360640190fd5b61164c61303d565b6001600160a01b03811660009081526003602052604090205460ff16156116a45760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b6001600160a01b038516600090815260036020526040902054859060ff16156116fe5760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b6001600160a01b038516600090815260036020526040902054859060ff16156117585760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b611763878787613228565b6117d38761176f61303d565b6117ce88604051806060016040528060288152602001614a44602891396001600160a01b038d166000908152600a60205260408120906117ad61303d565b6001600160a01b03168152602081019190915260400160002054919061337a565b61304c565b5060019695505050505050565b6040805160609290921b6bffffffffffffffffffffffff19166020808401919091527f50ccb4ebe86c930bb02e58f69e6b355aea39aa2c6b53ac7ed8d10e07ef455b9460348085019190915282518085039091018152605490930190915281519101205490565b6000546001600160a01b031661185b61303d565b6001600160a01b0316146118a4576040805162461bcd60e51b81526020600482018190526024820152600080516020614a6c833981519152604482015290519081900360640190fd5b6001600160a01b0381166118e95760405162461bcd60e51b815260040180806020018281038252602a815260200180614946602a913960400191505060405180910390fd5b600480546001600160a01b0319166001600160a01b0383169081179091556040517fe475e580d85111348e40d8ca33cfdd74c30fe1655c2d8537a13abc10065ffa5a90600090a250565b61194461193e61303d565b82613411565b50565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600f5460ff1690565b60055481565b6004546001600160a01b031690565b600154600090600160a01b900460ff16156119d9576040805162461bcd60e51b81526020600482015260106024820152600080516020614b18833981519152604482015290519081900360640190fd5b6119e161303d565b6001600160a01b03811660009081526003602052604090205460ff1615611a395760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b6001600160a01b038416600090815260036020526040902054849060ff1615611a935760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b611231611a9e61303d565b8686613501565b6001546001600160a01b0316611ab961303d565b6001600160a01b031614611afe5760405162461bcd60e51b8152600401808060200182810382526022815260200180614b5c6022913960400191505060405180910390fd5b6001805460ff60a01b191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b600154600160a01b900460ff1615611b83576040805162461bcd60e51b81526020600482015260106024820152600080516020614b18833981519152604482015290519081900360640190fd5b6001600160a01b038816600090815260036020526040902054889060ff1615611bdd5760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b611bed8989898989898989613539565b505050505050505050565b6000546001600160a01b0316611c0c61303d565b6001600160a01b031614611c55576040805162461bcd60e51b81526020600482018190526024820152600080516020614a6c833981519152604482015290519081900360640190fd5b6001600160a01b038116611c9a5760405162461bcd60e51b815260040180806020018281038252603f815260200180614c9d603f913960400191505060405180910390fd5b600880546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fdffd995e3957403875187f4e368dc653bf56cd2759d30cd40e06b3d8afc758a690600090a250565b7fb70559e94cbda91958ebec07f9b65b3b490097c8d25c8dacd71105df1015b6d881565b600154600160a01b900460ff1615611d5b576040805162461bcd60e51b81526020600482015260106024820152600080516020614b18833981519152604482015290519081900360640190fd5b3360008181526003602052604090205460ff1615611daa5760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b6119443361361e565b6000546001600160a01b0316611dc761303d565b6001600160a01b031614611e10576040805162461bcd60e51b81526020600482018190526024820152600080516020614a6c833981519152604482015290519081900360640190fd5b6001600160a01b038116611e555760405162461bcd60e51b81526004018080602001828103825260288152602001806148636028913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fb80482a293ca2e013eda8683c9bd7fc8347cfdaeea5ede58cba46df502c2a60490600090a250565b6000546001600160a01b0316611eb961303d565b6001600160a01b031614611f02576040805162461bcd60e51b81526020600482018190526024820152600080516020614a6c833981519152604482015290519081900360640190fd5b611f0e600c858561478c565b50611f1b600d838361478c565b50611f7484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260018152601960f91b6020820152915061364e9050565b60055550505050565b600154600160a01b900460ff1615611fca576040805162461bcd60e51b81526020600482015260106024820152600080516020614b18833981519152604482015290519081900360640190fd5b611fd785858585856136c0565b5050505050565b600154600160a01b900460ff1690565b6001600160a01b031660009081526009602052604090205490565b6001600160a01b031660009081526007602052604090205490565b7fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de881565b6001546001600160a01b031661205c61303d565b6001600160a01b0316146120a15760405162461bcd60e51b8152600401808060200182810382526022815260200180614b5c6022913960400191505060405180910390fd5b6001805460ff60a01b1916600160a01b1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b6000546001600160a01b031690565b600d8054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561110a5780601f106110df5761010080835404028352916020019161110a565b6001546001600160a01b031690565b6000811161216b57600080fd5b336000908152600960205260409020805482019055600b80549091019055565b7f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226781565b600154600090600160a01b900460ff16156121ff576040805162461bcd60e51b81526020600482015260106024820152600080516020614b18833981519152604482015290519081900360640190fd5b61220761303d565b6001600160a01b03811660009081526003602052604090205460ff161561225f5760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b6001600160a01b038416600090815260036020526040902054849060ff16156122b95760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b6112316122c461303d565b86866137d8565b600154600090600160a01b900460ff161561231b576040805162461bcd60e51b81526020600482015260106024820152600080516020614b18833981519152604482015290519081900360640190fd5b61232361303d565b6001600160a01b03811660009081526003602052604090205460ff161561237b5760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b6001600160a01b038416600090815260036020526040902054849060ff16156123d55760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b6112316123e061303d565b8686613228565b6000546001600160a01b03166123fb61303d565b6001600160a01b031614612444576040805162461bcd60e51b81526020600482018190526024820152600080516020614a6c833981519152604482015290519081900360640190fd5b6001600160a01b0381166124895760405162461bcd60e51b8152600401808060200182810382526032815260200180614bfc6032913960400191505060405180910390fd5b600280546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fc67398012c111ce95ecb7429b933096c977380ee6c421175a71a4a4c6c88c06e90600090a250565b600154600160a01b900460ff1615612526576040805162461bcd60e51b81526020600482015260106024820152600080516020614b18833981519152604482015290519081900360640190fd5b6001600160a01b038916600090815260036020526040902054899060ff16156125805760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b6001600160a01b038916600090815260036020526040902054899060ff16156125da5760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b6125eb8b8b8b8b8b8b8b8b8b613827565b5050505050505050505050565b6004546001600160a01b031661260c61303d565b6001600160a01b0316146126515760405162461bcd60e51b8152600401808060200182810382526024815260200180614a206024913960400191505060405180910390fd5b6126656001600160a01b0384168383613923565b505050565b6002546001600160a01b031690565b600042610e10612688846117e0565b011092915050565b600154600160a01b900460ff16156126dd576040805162461bcd60e51b81526020600482015260106024820152600080516020614b18833981519152604482015290519081900360640190fd5b6001600160a01b038916600090815260036020526040902054899060ff16156127375760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b6001600160a01b038916600090815260036020526040902054899060ff16156127915760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b6125eb8b8b8b8b8b8b8b8b8b613975565b7f424222bb050a1f7f14017232a5671f2680a2d3420f504bd565cf03035c53198a81565b6008546001600160a01b03166127da61303d565b6001600160a01b03161461281f5760405162461bcd60e51b81526004018080602001828103825260398152602001806149966039913960400191505060405180910390fd5b60008282602081101561283157600080fd5b5035905061283f8482613a65565b50505050565b600154600160a01b900460ff1615612892576040805162461bcd60e51b81526020600482015260106024820152600080516020614b18833981519152604482015290519081900360640190fd5b6001600160a01b038716600090815260036020526040902054879060ff16156128ec5760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b6001600160a01b038716600090815260036020526040902054879060ff16156129465760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b611bed89898989898989613b4b565b7f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742981565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b600154600160a01b900460ff16156129f1576040805162461bcd60e51b81526020600482015260106024820152600080516020614b18833981519152604482015290519081900360640190fd5b6001600160a01b038916600090815260036020526040902054899060ff1615612a4b5760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b6001600160a01b038916600090815260036020526040902054899060ff1615612aa55760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b6125eb8b8b8b8b8b8b8b8b8b613cdf565b600154600160a01b900460ff1615612b03576040805162461bcd60e51b81526020600482015260106024820152600080516020614b18833981519152604482015290519081900360640190fd5b6001600160a01b038916600090815260036020526040902054899060ff1615612b5d5760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b6001600160a01b038916600090815260036020526040902054899060ff1615612bb75760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b6125eb8b8b8b8b8b8b8b8b8b613dcf565b600e8054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561110a5780601f106110df5761010080835404028352916020019161110a565b6001600160a01b03919091166000908152600660209081526040808320938352929052205460ff1690565b600154600160a01b900460ff1615612ca1576040805162461bcd60e51b81526020600482015260106024820152600080516020614b18833981519152604482015290519081900360640190fd5b6001600160a01b038716600090815260036020526040902054879060ff1615612cfb5760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b612d0a88888888888888613ebf565b5050505050505050565b600154600160a01b900460ff1615612d61576040805162461bcd60e51b81526020600482015260106024820152600080516020614b18833981519152604482015290519081900360640190fd5b6001600160a01b038916600090815260036020526040902054899060ff1615612dbb5760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b6001600160a01b038916600090815260036020526040902054899060ff1615612e155760405162461bcd60e51b8152600401808060200182810382526025815260200180614c2e6025913960400191505060405180910390fd5b6125eb8b8b8b8b8b8b8b8b8b613f9c565b6000546001600160a01b0316612e3a61303d565b6001600160a01b031614612e83576040805162461bcd60e51b81526020600482018190526024820152600080516020614a6c833981519152604482015290519081900360640190fd5b6001600160a01b038116612ec85760405162461bcd60e51b81526004018080602001828103825260268152602001806148fe6026913960400191505060405180910390fd5b600054604080516001600160a01b039283168152918316602083015280517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09281900390910190a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b7fe3b3e87dbdf8620d96f948ef92c56738e6c880db5c3b045328a0352a1c710bd181565b6002546001600160a01b0316612f6a61303d565b6001600160a01b031614612faf5760405162461bcd60e51b815260040180806020018281038252602c8152602001806149cf602c913960400191505060405180910390fd5b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b8559190a250565b7f23d10def3caacba2e4042e0c75d44a42d2558aabcf5ce951d0642a8032e1e65381565b6001600160a01b031660009081526003602052604090205460ff1690565b6000613047614075565b905090565b6001600160a01b0383166130915760405162461bcd60e51b8152600401808060200182810382526024815260200180614b386024913960400191505060405180910390fd5b6001600160a01b0382166130d65760405162461bcd60e51b81526004018080602001828103825260228152602001806149246022913960400191505060405180910390fd5b6001600160a01b038084166000818152600a6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60006001600160a01b03861661317f5760405162461bcd60e51b81526004018080602001828103825260258152602001806149fb6025913960400191505060405180910390fd5b60607f23d10def3caacba2e4042e0c75d44a42d2558aabcf5ce951d0642a8032e1e65360001b8660000151876020015188604001518051906020012060405160200180858152602001848152602001836001600160a01b031681526020018281526020019450505050506040516020818303038152906040529050866001600160a01b0316613213600554858888866140d2565b6001600160a01b031614979650505050505050565b6001600160a01b03831661326d5760405162461bcd60e51b8152600401808060200182810382526025815260200180614af36025913960400191505060405180910390fd5b6001600160a01b0382166132b25760405162461bcd60e51b81526004018080602001828103825260238152602001806148206023913960400191505060405180910390fd5b6132ef81604051806060016040528060268152602001614970602691396001600160a01b038616600090815260096020526040902054919061337a565b6001600160a01b03808516600090815260096020526040808220939093559084168152205461331e9082614129565b6001600160a01b0380841660008181526009602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156134095760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156133ce5781810151838201526020016133b6565b50505050905090810190601f1680156133fb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b0382166134565760405162461bcd60e51b8152600401808060200182810382526021815260200180614ad26021913960400191505060405180910390fd5b613493816040518060600160405280602281526020016148b6602291396001600160a01b038516600090815260096020526040902054919061337a565b6001600160a01b038316600090815260096020526040902055600b546134b9908261418a565b600b556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6001600160a01b038084166000908152600a602090815260408083209386168352929052205461266590849084906117ce9085614129565b613545888588886141cc565b604080517fe3b3e87dbdf8620d96f948ef92c56738e6c880db5c3b045328a0352a1c710bd160208201526001600160a01b038a16818301819052606082018a90526080820189905260a0820188905260c08083018890528351808403909101815260e09092019092526005549091906135c190868686866140d2565b6001600160a01b03161461360a576040805162461bcd60e51b815260206004820152601e6024820152600080516020614843833981519152604482015290519081900360640190fd5b6136148986614252565b611bed8989613411565b42610e1061362b836117e0565b011061363657600080fd5b61364081426142ac565b611944816305f5e100613a65565b8151602092830120815191830191909120604080517f36c25de3e541d5d970f66e4210d728721220fff5c077cc6cd008b3a0c62adab7818601528082019390935260608301919091523060808301524660a0808401919091528151808403909101815260c09092019052805191012090565b6136ca8585614316565b604080517f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742960208201526001600160a01b038716818301819052606082810188905283518084039091018152608090920190925260055490919061373190868686866140d2565b6001600160a01b03161461377a576040805162461bcd60e51b815260206004820152601e6024820152600080516020614843833981519152604482015290519081900360640190fd5b6001600160a01b0386166000818152600660209081526040808320898452909152808220805460ff19166001179055518792917f1cdd46ff242716cdaa72d159d339a485b3438398348d68f09d7c8c0a59353d8191a3505050505050565b61266583836117ce84604051806060016040528060258152602001614c78602591396001600160a01b03808a166000908152600a60209081526040808320938c1683529290522054919061337a565b613833898588886141cc565b604080517fb70559e94cbda91958ebec07f9b65b3b490097c8d25c8dacd71105df1015b6d860208201526001600160a01b03808c16828401819052908b166060830152608082018a905260a0820189905260c0820188905260e0808301889052835180840390910181526101009092019092526005549091906138b990868686866140d2565b6001600160a01b031614613902576040805162461bcd60e51b815260206004820152601e6024820152600080516020614843833981519152604482015290519081900360640190fd5b61390c8a86614252565b6139178a8a8a6137d8565b50505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261266590849061437d565b613981898588886141cc565b604080517f424222bb050a1f7f14017232a5671f2680a2d3420f504bd565cf03035c53198a60208201526001600160a01b03808c16828401819052908b166060830152608082018a905260a0820189905260c0820188905260e080830188905283518084039091018152610100909201909252600554909190613a0790868686866140d2565b6001600160a01b031614613a50576040805162461bcd60e51b815260206004820152601e6024820152600080516020614843833981519152604482015290519081900360640190fd5b613a5a8a86614252565b6139178a8a8a613501565b6001600160a01b038216613ac0576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600b54613acd9082614129565b600b556001600160a01b038216600090815260096020526040902054613af39082614129565b6001600160a01b03831660008181526009602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b33301415613ba0576040805162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973207468697320636f6e7472616374000000000000000000604482015290519081900360640190fd5b42841015613bf5576040805162461bcd60e51b815260206004820152601e60248201527f46696174546f6b656e56323a207065726d697420697320657870697265640000604482015290519081900360640190fd5b6001600160a01b0380881660008181526007602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c992810192909252818301849052938a1660608201526080810189905260a081019390935260c08084018890528151808503909101815260e09093019052600554613c8b90868686866140d2565b6001600160a01b031614613cd4576040805162461bcd60e51b815260206004820152601e6024820152600080516020614843833981519152604482015290519081900360640190fd5b612d0a88888861304c565b613ceb898588886141cc565b604080517f808c10407a796f3ef2c7ea38c0638ea9d2b8a1c63e3ca9e1f56ce84ae59df73c60208201526001600160a01b03808c16828401819052908b166060830152608082018a905260a0820189905260c0820188905260e080830188905283518084039091018152610100909201909252600554909190613d7190868686866140d2565b6001600160a01b031614613dba576040805162461bcd60e51b815260206004820152601e6024820152600080516020614843833981519152604482015290519081900360640190fd5b613dc48a86614252565b6139178a8a8a61304c565b613ddb898588886141cc565b604080517f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226760208201526001600160a01b03808c16828401819052908b166060830152608082018a905260a0820189905260c0820188905260e080830188905283518084039091018152610100909201909252600554909190613e6190868686866140d2565b6001600160a01b031614613eaa576040805162461bcd60e51b815260206004820152601e6024820152600080516020614843833981519152604482015290519081900360640190fd5b613eb48a86614252565b6139178a8a8a613228565b613ecb878588886141cc565b604080517fa903e8f81a8524953537b29128569227da6c8d3c802e22ca6b929c9a11ca357260208201526001600160a01b038916818301819052606082018990526080820188905260a08083018890528351808403909101815260c0909201909252600554909190613f4090868686866140d2565b6001600160a01b031614613f89576040805162461bcd60e51b815260206004820152601e6024820152600080516020614843833981519152604482015290519081900360640190fd5b613f938886614252565b612d0a8861361e565b6001600160a01b0388163314613fe35760405162461bcd60e51b8152600401808060200182810382526025815260200180614aad6025913960400191505060405180910390fd5b613fef898588886141cc565b604080517fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de860208201526001600160a01b03808c16828401819052908b166060830152608082018a905260a0820189905260c0820188905260e080830188905283518084039091018152610100909201909252600554909190613e6190868686866140d2565b6000333014156140cd5760606000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b031691506111129050565b503390565b80516020808301919091206040805161190160f01b8185015260228101899052604280820193909352815180820390930183526062019052805191012060009061411e8187878761442e565b979650505050505050565b600082820183811015614183576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600061418383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061337a565b81421161420a5760405162461bcd60e51b815260040180806020018281038252602b81526020018061488b602b913960400191505060405180910390fd5b8042106142485760405162461bcd60e51b8152600401808060200182810382526025815260200180614c536025913960400191505060405180910390fd5b61283f8484614316565b6001600160a01b0382166000818152600660209081526040808320858452909152808220805460ff19166001179055518392917f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a591a35050565b6000827f50ccb4ebe86c930bb02e58f69e6b355aea39aa2c6b53ac7ed8d10e07ef455b9460001b60405160200180836001600160a01b031660601b815260140182815260200192505050604051602081830303815290604052805190602001209050818155505050565b6001600160a01b038216600090815260066020908152604080832084845290915290205460ff16156143795760405162461bcd60e51b815260040180806020018281038252602e815260200180614bce602e913960400191505060405180910390fd5b5050565b60606143d2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166145b29092919063ffffffff16565b805190915015612665578080602001905160208110156143f157600080fd5b50516126655760405162461bcd60e51b815260040180806020018281038252602a815260200180614ba4602a913960400191505060405180910390fd5b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a082111561448f5760405162461bcd60e51b8152600401808060200182810382526026815260200180614b7e6026913960400191505060405180910390fd5b8360ff16601b141580156144a757508360ff16601c14155b156144e35760405162461bcd60e51b81526004018080602001828103825260268152602001806148d86026913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561453f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166145a7576040805162461bcd60e51b815260206004820152601c60248201527f45435265636f7665723a20696e76616c6964207369676e617475726500000000604482015290519081900360640190fd5b90505b949350505050565b60606145aa848460008560606145c785614729565b614618576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106146575780518252601f199092019160209182019101614638565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146146b9576040519150601f19603f3d011682016040523d82523d6000602084013e6146be565b606091505b509150915081156146d25791506145aa9050565b8051156146e25780518082602001fd5b60405162461bcd60e51b81526020600482018181528651602484015286518793919283926044019190850190808383600083156133ce5781810151838201526020016133b6565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906145aa575050151592915050565b60405180606001604052806000815260200160006001600160a01b03168152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106147cd5782800160ff198235161785556147fa565b828001600101855582156147fa579182015b828111156147fa5782358255916020019190600101906147df565b5061480692915061480a565b5090565b5b80821115614806576000815560010161480b56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737346696174546f6b656e56323a20696e76616c6964207369676e617475726500005061757361626c653a206e65772070617573657220697320746865207a65726f206164647265737346696174546f6b656e56323a20617574686f72697a6174696f6e206973206e6f74207965742076616c696445524332303a206275726e20616d6f756e7420657863656564732062616c616e636545435265636f7665723a20696e76616c6964207369676e6174757265202776272076616c75654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373526573637561626c653a206e6577207265736375657220697320746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654368696c64436861696e4d616e61676561626c653a2063616c6c6572206973206e6f7420746865206368696c64436861696e4d616e61676572426c61636b6c69737461626c653a2063616c6c6572206973206e6f742074686520626c61636b6c69737465724e61746976654d6574615472616e73616374696f6e3a20494e56414c49445f5349474e4552526573637561626c653a2063616c6c6572206973206e6f7420746865207265736375657245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725369676e657220616e64207369676e617475726520646f206e6f74206d6174636846696174546f6b656e56323a2063616c6c6572206d7573742062652074686520706179656545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f20616464726573735061757361626c653a207061757365640000000000000000000000000000000045524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735061757361626c653a2063616c6c6572206973206e6f74207468652070617573657245435265636f7665723a20696e76616c6964207369676e6174757265202773272076616c75655361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656446696174546f6b656e56323a20617574686f72697a6174696f6e2069732075736564206f722063616e63656c6564426c61636b6c69737461626c653a206e657720626c61636b6c697374657220697320746865207a65726f2061646472657373426c61636b6c69737461626c653a206163636f756e7420697320626c61636b6c697374656446696174546f6b656e56323a20617574686f72697a6174696f6e206973206578706972656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4368696c64436861696e4d616e61676561626c653a206e6577206368696c64436861696e4d616e6167657220697320746865207a65726f2061646472657373a2646970667358221220b0b3d28c67b0c8aa579ecd3b180a7fa8fe116fe0245caa56ea1e503eab9a2aef64736f6c634300060c0033