6080604052600060045560006005553480156200001b57600080fd5b5060405162001e1738038062001e178339810160408190526200003e916200032c565b60016000818155815460ff191690915562000058620000f8565b60018054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000bb600a82620000fc565b60095550600280546001600160a01b039485166001600160a01b03199182161790915560038054939094169216919091179091556006556200047a565b3390565b6000816200010d57506001620001a9565b81600114156200011f575081620001a9565b6000620001478462000141600286620001af60201b62000f971790919060201c565b620000fc565b9050620001638182620001f960201b62000fd91790919060201c565b9050620001806002846200025060201b6200101e1790919060201c565b60011415620001a657620001a38482620001f960201b62000fd91790919060201c565b90505b90505b92915050565b6000620001a683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200029a60201b60201c565b6000826200020a57506000620001a9565b600062000218838562000421565b9050826200022785836200040a565b14620001a65760405162461bcd60e51b81526004016200024790620003c9565b60405180910390fd5b6000620001a683836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250620002d660201b60201c565b60008183620002be5760405162461bcd60e51b815260040162000247919062000373565b506000620002cd84866200040a565b95945050505050565b60008183620002fa5760405162461bcd60e51b815260040162000247919062000373565b506200030783856200044d565b949350505050565b80516001600160a01b03811681146200032757600080fd5b919050565b6000806000806080858703121562000342578384fd5b6200034d856200030f565b93506200035d602086016200030f565b6040860151606090960151949790965092505050565b6000602080835283518082850152825b81811015620003a15785810183015185820160400152820162000383565b81811115620003b35783604083870101525b50601f01601f1916929092016040019392505050565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6000826200041c576200041c62000464565b500490565b60008160001904831182151516156200044857634e487b7160e01b81526011600452602481fd5b500290565b6000826200045f576200045f62000464565b500690565b634e487b7160e01b600052601260045260246000fd5b61198d806200048a6000396000f3fe608060405234801561001057600080fd5b50600436106101e45760003560e01c80637b0a47ee1161010f578063c8f33c91116100a2578063df136d6511610071578063df136d6514610382578063e9fad8ee1461038a578063ebe2b12b14610392578063f2fde38b1461039a576101e4565b8063c8f33c9114610357578063cc1a378f1461035f578063cd3daf9d14610372578063d1af0c7d1461037a576101e4565b80638d8e5da7116100de5780638d8e5da7146103215780638da5cb5b14610334578063a694fc3a1461033c578063a85fe3b71461034f576101e4565b80637b0a47ee146102eb57806380faa57d146102f35780638980f11f146102fb5780638b8763471461030e576101e4565b80633c6b16ab1161018757806370a082311161015657806370a08231146102a8578063715018a6146102bb57806372f702f3146102c35780637ae2b5c7146102d8576101e4565b80633c6b16ab146102655780633d18b912146102785780635c975abb146102805780636325786d14610295576101e4565b80631c1f78eb116101c35780631c1f78eb1461022d5780632e1a7d4d146102355780632e4c697f1461024a578063386a95251461025d576101e4565b80628cc262146101e95780630700037d1461021257806318160ddd14610225575b600080fd5b6101fc6101f736600461135f565b6103ad565b6040516102099190611868565b60405180910390f35b6101fc61022036600461135f565b610424565b6101fc610436565b6101fc61043d565b610248610243366004611406565b61045b565b005b6101fc610258366004611436565b6105a7565b6101fc61060c565b610248610273366004611406565b610612565b610248610816565b61028861091a565b60405161020991906114c4565b6102486102a336600461135f565b610923565b6101fc6102b636600461135f565b61099a565b6102486109b5565b6102cb610a3f565b6040516102099190611473565b6101fc6102e6366004611436565b610a4e565b6101fc610a64565b6101fc610a6a565b61024861030936600461137b565b610a78565b6101fc61031c36600461135f565b610b67565b61024861032f3660046113c6565b610b79565b6102cb610c39565b61024861034a366004611406565b610c4d565b6101fc610da3565b6101fc610da9565b61024861036d366004611406565b610daf565b6101fc610e4a565b6102cb610e92565b6101fc610ea1565b610248610ea7565b6101fc610eca565b6102486103a836600461135f565b610ed0565b6001600160a01b0381166000908152600c6020908152604080832054600954600b9093529083205461041e9261041891610412906103f3906103ed610e4a565b90611060565b6001600160a01b0388166000908152600e602052604090205490610fd9565b90610f97565b906110a2565b92915050565b600c6020526000908152604090205481565b600d545b90565b6000610456600654600554610fd990919063ffffffff16565b905090565b600260005414156104875760405162461bcd60e51b815260040161047e90611831565b60405180910390fd5b600260005533610495610e4a565b6008556104a0610a6a565b6007556001600160a01b038116156104e7576104bb816103ad565b6001600160a01b0382166000908152600c6020908152604080832093909355600854600b909152919020555b600082116105075760405162461bcd60e51b815260040161047e90611696565b600d546105149083611060565b600d55336000908152600e60205260409020546105319083611060565b336000818152600e602052604090209190915560035461055d916001600160a01b0390911690846110d1565b336001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040516105969190611868565b60405180910390a250506001600055565b6000816105b65750600161041e565b81600114156105c657508161041e565b60006105d784610258856002610f97565b90506105e38180610fd9565b90506105f083600261101e565b60011415610605576106028185610fd9565b90505b9392505050565b60065481565b61061a611127565b60015461010090046001600160a01b0390811691161461064c5760405162461bcd60e51b815260040161047e90611702565b6000610656610e4a565b600855610661610a6a565b6007556001600160a01b038116156106a85761067c816103ad565b6001600160a01b0382166000908152600c6020908152604080832093909355600854600b909152919020555b60045442106106c7576006546106bf908390610f97565b60055561070a565b6004546000906106d79042611060565b905060006106f060055483610fd990919063ffffffff16565b6006549091506107049061041286846110a2565b60055550505b6002546040516370a0823160e01b81526000916001600160a01b0316906370a082319061073b903090600401611473565b60206040518083038186803b15801561075357600080fd5b505afa158015610767573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078b919061141e565b90506107a260065482610f9790919063ffffffff16565b60055411156107c35760405162461bcd60e51b815260040161047e90611779565b4260078190556006546107d691906110a2565b6004556040517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d90610809908590611868565b60405180910390a1505050565b600260005414156108395760405162461bcd60e51b815260040161047e90611831565b600260005533610847610e4a565b600855610852610a6a565b6007556001600160a01b038116156108995761086d816103ad565b6001600160a01b0382166000908152600c6020908152604080832093909355600854600b909152919020555b336000908152600c6020526040902054801561091157336000818152600c60205260408120556002546108d8916001600160a01b0390911690836110d1565b336001600160a01b03167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486826040516105969190611868565b50506001600055565b60015460ff1690565b61092b611127565b60015461010090046001600160a01b0390811691161461095d5760405162461bcd60e51b815260040161047e90611702565b60405147906001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610995573d6000803e3d6000fd5b505050565b6001600160a01b03166000908152600e602052604090205490565b6109bd611127565b60015461010090046001600160a01b039081169116146109ef5760405162461bcd60e51b815260040161047e90611702565b60015460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360018054610100600160a81b0319169055565b6003546001600160a01b031681565b6000818310610a5d5781610605565b5090919050565b60055481565b600061045642600454610a4e565b610a80611127565b60015461010090046001600160a01b03908116911614610ab25760405162461bcd60e51b815260040161047e90611702565b6002546001600160a01b0383811691161415610ae05760405162461bcd60e51b815260040161047e9061162a565b600d5415610b16576003546001600160a01b0383811691161415610b165760405162461bcd60e51b815260040161047e90611737565b610b2a6001600160a01b03831633836110d1565b7f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa288282604051610b5b929190611487565b60405180910390a15050565b600b6020526000908152604090205481565b610b81611127565b60015461010090046001600160a01b03908116911614610bb35760405162461bcd60e51b815260040161047e90611702565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb90610be19085908590600401611487565b602060405180830381600087803b158015610bfb57600080fd5b505af1158015610c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3391906113a6565b50505050565b60015461010090046001600160a01b031690565b60026000541415610c705760405162461bcd60e51b815260040161047e90611831565b600260005560015460ff1615610c985760405162461bcd60e51b815260040161047e9061166c565b33610ca1610e4a565b600855610cac610a6a565b6007556001600160a01b03811615610cf357610cc7816103ad565b6001600160a01b0382166000908152600c6020908152604080832093909355600854600b909152919020555b60008211610d135760405162461bcd60e51b815260040161047e906115cb565b600d54610d2090836110a2565b600d55336000908152600e6020526040902054610d3d90836110a2565b336000818152600e6020526040902091909155600354610d6a916001600160a01b0390911690308561112b565b336001600160a01b03167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d836040516105969190611868565b60095481565b60075481565b610db7611127565b60015461010090046001600160a01b03908116911614610de95760405162461bcd60e51b815260040161047e90611702565b6004544211610e0a5760405162461bcd60e51b815260040161047e90611502565b60068190556040517ffb46ca5a5e06d4540d6387b930a7c978bce0db5f449ec6b3f5d07c6e1d44f2d390610e3f908390611868565b60405180910390a150565b6000600d5460001415610e60575060085461043a565b610456610e89600d54610412600954610e83600554610e836007546103ed610a6a565b90610fd9565b600854906110a2565b6002546001600160a01b031681565b60085481565b336000908152600e6020526040902054610ec09061045b565b610ec8610816565b565b60045481565b610ed8611127565b60015461010090046001600160a01b03908116911614610f0a5760405162461bcd60e51b815260040161047e90611702565b6001600160a01b038116610f305760405162461bcd60e51b815260040161047e90611585565b6001546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600061060583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061114c565b600082610fe85750600061041e565b6000610ff4838561189d565b9050826110018583611889565b146106055760405162461bcd60e51b815260040161047e906116c1565b600061060583836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250611183565b600061060583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111b7565b6000806110af8385611871565b9050838110156106055760405162461bcd60e51b815260040161047e906115f3565b6109958363a9059cbb60e01b84846040516024016110f0929190611487565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526111e8565b3390565b610c33846323b872dd60e01b8585856040516024016110f0939291906114a0565b6000818361116d5760405162461bcd60e51b815260040161047e91906114cf565b50600061117a8486611889565b95945050505050565b600081836111a45760405162461bcd60e51b815260040161047e91906114cf565b506111af83856118ff565b949350505050565b600081848411156111db5760405162461bcd60e51b815260040161047e91906114cf565b50600061117a84866118bc565b600061123d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166112779092919063ffffffff16565b805190915015610995578080602001905181019061125b91906113a6565b6109955760405162461bcd60e51b815260040161047e906117e7565b60606111af84846000858561128b85611320565b6112a75760405162461bcd60e51b815260040161047e906117b0565b600080866001600160a01b031685876040516112c39190611457565b60006040518083038185875af1925050503d8060008114611300576040519150601f19603f3d011682016040523d82523d6000602084013e611305565b606091505b5091509150611315828286611326565b979650505050505050565b3b151590565b60608315611335575081610605565b8251156113455782518084602001fd5b8160405162461bcd60e51b815260040161047e91906114cf565b600060208284031215611370578081fd5b81356106058161193f565b6000806040838503121561138d578081fd5b82356113988161193f565b946020939093013593505050565b6000602082840312156113b7578081fd5b81518015158114610605578182fd5b6000806000606084860312156113da578081fd5b83356113e58161193f565b925060208401356113f58161193f565b929592945050506040919091013590565b600060208284031215611417578081fd5b5035919050565b60006020828403121561142f578081fd5b5051919050565b60008060408385031215611448578182fd5b50508035926020909101359150565b600082516114698184602087016118d3565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b901515815260200190565b60006020825282518060208401526114ee8160408501602087016118d3565b601f01601f19169190910160400192915050565b60208082526058908201527f50726576696f7573207265776172647320706572696f64206d7573742062652060408201527f636f6d706c657465206265666f7265206368616e67696e67207468652064757260608201527f6174696f6e20666f7220746865206e657720706572696f640000000000000000608082015260a00190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252600e908201526d043616e6e6f74207374616b6520360941b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526022908201527f43616e6e6f7420776974686472617720746865207265776172647320746f6b656040820152616e7360f01b606082015260800190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b602080825260119082015270043616e6e6f74207769746864726177203607c1b604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f43616e6e6f7420776974686472617720746865207374616b696e6720746f6b656040820152616e7360f01b606082015260800190565b60208082526018908201527f50726f76696465642072657761726420746f6f20686967680000000000000000604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b90815260200190565b6000821982111561188457611884611913565b500190565b60008261189857611898611929565b500490565b60008160001904831182151516156118b7576118b7611913565b500290565b6000828210156118ce576118ce611913565b500390565b60005b838110156118ee5781810151838201526020016118d6565b83811115610c335750506000910152565b60008261190e5761190e611929565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160a01b038116811461195457600080fd5b5056fea26469706673582212207d1e3b33a282a2444c75f7e3c3f6ff19b57f2bc58b22f186a2f37d4ad83428c364736f6c634300080000330000000000000000000000000d75899cab4eec7b22b5bf3d4dd4d965ada8a8cb0000000000000000000000000d75899cab4eec7b22b5bf3d4dd4d965ada8a8cb0000000000000000000000000000000000000000000000000000000000f099c00000000000000000000000000000000000000000000000000000000000000012