0x6101206040523480156200001257600080fd5b506040518060400160405280600981526020016826b7b7b725b7b733bd60b91b815250604051806040016040528060058152602001644d4e4b4e4760d81b8152506200006d62000067620000de60201b60201c565b620000e2565b81516200008290600390602085019062000132565b5080516200009890600490602084019062000132565b50600060019081556009555050600a6080819052610100819052610fa060c081905260a081905260e05280546001600160601b0319164263ffffffff1617905562000215565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546200014090620001d8565b90600052602060002090601f016020900481019282620001645760008555620001af565b82601f106200017f57805160ff1916838001178555620001af565b82800160010185558215620001af579182015b82811115620001af57825182559160200191906001019062000192565b50620001bd929150620001c1565b5090565b5b80821115620001bd5760008155600101620001c2565b600181811c90821680620001ed57607f821691505b602082108114156200020f57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e05161010051611f646200027660003960008181610b3a01528181610bc80152610c0001526000610d3c0152600061056c0152600081816106690152610aa00152600081816103cd0152610db80152611f646000f3fe6080604052600436106101d85760003560e01c80638da5cb5b11610102578063b88d4fde11610095578063e18bb94111610064578063e18bb941146105ce578063e985e9c5146105ee578063f2fde38b14610637578063fbe1aa511461065757600080fd5b8063b88d4fde1461053a578063ba313ca71461055a578063c87b56dd1461058e578063dc33e681146105ae57600080fd5b806398d5fdca116100d157806398d5fdca146104cc578063a0712d68146104f2578063a22cb46514610505578063a2309ff81461052557600080fd5b80638da5cb5b146103ef57806390aa0b0f1461040d5780639231ab2a1461046157806395d89b41146104b757600080fd5b806342842e0e1161017a57806370a082311161014957806370a0823114610366578063715018a614610386578063819b25ba1461039b5780638bc35c2f146103bb57600080fd5b806342842e0e146102e657806355f804b3146103065780636352211e146103265780636b12304e1461034657600080fd5b8063095ea7b3116101b6578063095ea7b31461026c57806318160ddd1461028e57806323b872dd146102b15780633ccfd60b146102d157600080fd5b806301ffc9a7146101dd57806306fdde0314610212578063081812fc14610234575b600080fd5b3480156101e957600080fd5b506101fd6101f8366004611bbf565b61068b565b60405190151581526020015b60405180910390f35b34801561021e57600080fd5b506102276106dd565b6040516102099190611d80565b34801561024057600080fd5b5061025461024f366004611c6a565b61076f565b6040516001600160a01b039091168152602001610209565b34801561027857600080fd5b5061028c610287366004611b95565b6107b3565b005b34801561029a57600080fd5b50600254600154035b604051908152602001610209565b3480156102bd57600080fd5b5061028c6102cc366004611a42565b610841565b3480156102dd57600080fd5b5061028c61084c565b3480156102f257600080fd5b5061028c610301366004611a42565b61096a565b34801561031257600080fd5b5061028c610321366004611bf9565b610985565b34801561033257600080fd5b50610254610341366004611c6a565b6109bb565b34801561035257600080fd5b506101fd610361366004611c83565b6109cd565b34801561037257600080fd5b506102a36103813660046119f4565b6109f0565b34801561039257600080fd5b5061028c610a3e565b3480156103a757600080fd5b5061028c6103b6366004611c6a565b610a74565b3480156103c757600080fd5b506102a37f000000000000000000000000000000000000000000000000000000000000000081565b3480156103fb57600080fd5b506000546001600160a01b0316610254565b34801561041957600080fd5b50600a5461043d9063ffffffff81169064010000000090046001600160401b031682565b6040805163ffffffff90931683526001600160401b03909116602083015201610209565b34801561046d57600080fd5b5061048161047c366004611c6a565b610c36565b6040805182516001600160a01b031681526020808401516001600160401b03169082015291810151151590820152606001610209565b3480156104c357600080fd5b50610227610c5c565b3480156104d857600080fd5b50600a5464010000000090046001600160401b03166102a3565b61028c610500366004611c6a565b610c6b565b34801561051157600080fd5b5061028c610520366004611b59565b610e54565b34801561053157600080fd5b506001546102a3565b34801561054657600080fd5b5061028c610555366004611a7e565b610eea565b34801561056657600080fd5b506102a37f000000000000000000000000000000000000000000000000000000000000000081565b34801561059a57600080fd5b506102276105a9366004611c6a565b610f35565b3480156105ba57600080fd5b506102a36105c93660046119f4565b610fb9565b3480156105da57600080fd5b5061028c6105e9366004611ca5565b610fe7565b3480156105fa57600080fd5b506101fd610609366004611a0f565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b34801561064357600080fd5b5061028c6106523660046119f4565b611049565b34801561066357600080fd5b506102a37f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b031982166380ac58cd60e01b14806106bc57506001600160e01b03198216635b5e139f60e01b145b806106d757506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600380546106ec90611e56565b80601f016020809104026020016040519081016040528092919081815260200182805461071890611e56565b80156107655780601f1061073a57610100808354040283529160200191610765565b820191906000526020600020905b81548152906001019060200180831161074857829003601f168201915b5050505050905090565b600061077a826110e4565b610797576040516333d1c03960e21b815260040160405180910390fd5b506000908152600760205260409020546001600160a01b031690565b60006107be826109bb565b9050806001600160a01b0316836001600160a01b031614156107f35760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b0382161480159061081357506108118133610609565b155b15610831576040516367d9dca160e11b815260040160405180910390fd5b61083c838383611110565b505050565b61083c83838361116c565b6000546001600160a01b0316331461087f5760405162461bcd60e51b815260040161087690611d93565b60405180910390fd5b600260095414156108d25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610876565b6002600955604051600090339047908381818185875af1925050503d8060008114610919576040519150601f19603f3d011682016040523d82523d6000602084013e61091e565b606091505b50509050806109625760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610876565b506001600955565b61083c83838360405180602001604052806000815250610eea565b6000546001600160a01b031633146109af5760405162461bcd60e51b815260040161087690611d93565b61083c600b838361193f565b60006109c68261135a565b5192915050565b600082158015906109dd57508115155b80156109e95750814210155b9392505050565b60006001600160a01b038216610a19576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600660205260409020546001600160401b031690565b6000546001600160a01b03163314610a685760405162461bcd60e51b815260040161087690611d93565b610a726000611474565b565b6000546001600160a01b03163314610a9e5760405162461bcd60e51b815260040161087690611d93565b7f000000000000000000000000000000000000000000000000000000000000000081610acd6002546001540390565b610ad79190611dc8565b1115610b355760405162461bcd60e51b815260206004820152602760248201527f746f6f206d616e7920616c7265616479206d696e746564206265666f72652064604482015266195d881b5a5b9d60ca1b6064820152608401610876565b610b5f7f000000000000000000000000000000000000000000000000000000000000000082611eac565b15610bc15760405162461bcd60e51b815260206004820152602c60248201527f63616e206f6e6c79206d696e742061206d756c7469706c65206f66207468652060448201526b6d6178426174636853697a6560a01b6064820152608401610876565b6000610bed7f000000000000000000000000000000000000000000000000000000000000000083611de0565b905060005b8181101561083c57610c24337f00000000000000000000000000000000000000000000000000000000000000006114c4565b80610c2e81611e91565b915050610bf2565b60408051606081018252600080825260208201819052918101919091526106d78261135a565b6060600480546106ec90611e56565b323314610cba5760405162461bcd60e51b815260206004820152601e60248201527f5468652063616c6c657220697320616e6f7468657220636f6e747261637400006044820152606401610876565b60408051808201909152600a5463ffffffff81168083526401000000009091046001600160401b03166020830181905290610cf582826109cd565b610d3a5760405162461bcd60e51b81526020600482015260166024820152751cd85b19481a185cc81b9bdd08189959dd5b881e595d60521b6044820152606401610876565b7f000000000000000000000000000000000000000000000000000000000000000084610d696002546001540390565b610d739190611dc8565b1115610db65760405162461bcd60e51b815260206004820152601260248201527172656163686564206d617820737570706c7960701b6044820152606401610876565b7f000000000000000000000000000000000000000000000000000000000000000084610de133610fb9565b610deb9190611dc8565b1115610e325760405162461bcd60e51b815260206004820152601660248201527563616e206e6f74206d696e742074686973206d616e7960501b6044820152606401610876565b610e3c33856114c4565b610e4e610e498584611df4565b6114e2565b50505050565b6001600160a01b038216331415610e7e5760405163b06307db60e01b815260040160405180910390fd5b3360008181526008602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610ef584848461116c565b6001600160a01b0383163b15158015610f175750610f1584848484611569565b155b15610e4e576040516368d2bf6b60e11b815260040160405180910390fd5b6060610f40826110e4565b610f5d57604051630a14c4b560e41b815260040160405180910390fd5b6000610f67611661565b9050805160001415610f8857604051806020016040528060008152506109e9565b80610f9284611670565b604051602001610fa3929190611d14565b6040516020818303038152906040529392505050565b6001600160a01b038116600090815260066020526040812054600160401b90046001600160401b03166106d7565b6000546001600160a01b031633146110115760405162461bcd60e51b815260040161087690611d93565b600a80546001600160401b03909216640100000000026bffffffffffffffffffffffff1990921663ffffffff90931692909217179055565b6000546001600160a01b031633146110735760405162461bcd60e51b815260040161087690611d93565b6001600160a01b0381166110d85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610876565b6110e181611474565b50565b6000600154821080156106d7575050600090815260056020526040902054600160e01b900460ff161590565b60008281526007602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006111778261135a565b9050836001600160a01b031681600001516001600160a01b0316146111ae5760405162a1148160e81b815260040160405180910390fd5b6000336001600160a01b03861614806111cc57506111cc8533610609565b806111e75750336111dc8461076f565b6001600160a01b0316145b90508061120757604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03841661122e57604051633a954ecd60e21b815260040160405180910390fd5b61123a60008487611110565b6001600160a01b038581166000908152600660209081526040808320805467ffffffffffffffff198082166001600160401b0392831660001901831617909255898616808652838620805493841693831660019081018416949094179055898652600590945282852080546001600160e01b031916909417600160a01b4290921691909102178355870180845292208054919390911661130e57600154821461130e57805460208601516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038a16171781555b50505082846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b5050505050565b60408051606081018252600080825260208201819052918101919091528160015481101561145b57600081815260056020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff161515918101829052906114595780516001600160a01b0316156113f0579392505050565b5060001901600081815260056020908152604091829020825160608101845290546001600160a01b038116808352600160a01b82046001600160401b031693830193909352600160e01b900460ff1615159281019290925215611454579392505050565b6113f0565b505b604051636f96cda160e11b815260040160405180910390fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6114de82826040518060200160405280600081525061176d565b5050565b8034101561152b5760405162461bcd60e51b81526020600482015260166024820152752732b2b2103a379039b2b7321036b7b9329022aa241760511b6044820152606401610876565b803411156110e157336108fc6115418334611e13565b6040518115909202916000818181858888f193505050501580156114de573d6000803e3d6000fd5b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a029061159e903390899088908890600401611d43565b602060405180830381600087803b1580156115b857600080fd5b505af19250505080156115e8575060408051601f3d908101601f191682019092526115e591810190611bdc565b60015b611643573d808015611616576040519150601f19603f3d011682016040523d82523d6000602084013e61161b565b606091505b50805161163b576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b6060600b80546106ec90611e56565b6060816116945750506040805180820190915260018152600360fc1b602082015290565b8160005b81156116be57806116a881611e91565b91506116b79050600a83611de0565b9150611698565b6000816001600160401b038111156116d8576116d8611f02565b6040519080825280601f01601f191660200182016040528015611702576020820181803683370190505b5090505b841561165957611717600183611e13565b9150611724600a86611eac565b61172f906030611dc8565b60f81b81838151811061174457611744611eec565b60200101906001600160f81b031916908160001a905350611766600a86611de0565b9450611706565b61083c838383600180546001600160a01b03851661179d57604051622e076360e81b815260040160405180910390fd5b836117bb5760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038516600081815260066020908152604080832080546fffffffffffffffffffffffffffffffff1981166001600160401b038083168c018116918217600160401b67ffffffffffffffff1990941690921783900481168c01811690920217909155858452600590925290912080546001600160e01b031916909217600160a01b42909216919091021790558080850183801561186757506001600160a01b0387163b15155b156118f0575b60405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46118b86000888480600101955088611569565b6118d5576040516368d2bf6b60e11b815260040160405180910390fd5b8082141561186d5782600154146118eb57600080fd5b611936565b5b6040516001830192906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4808214156118f1575b50600155611353565b82805461194b90611e56565b90600052602060002090601f01602090048101928261196d57600085556119b3565b82601f106119865782800160ff198235161785556119b3565b828001600101855582156119b3579182015b828111156119b3578235825591602001919060010190611998565b506119bf9291506119c3565b5090565b5b808211156119bf57600081556001016119c4565b80356001600160a01b03811681146119ef57600080fd5b919050565b600060208284031215611a0657600080fd5b6109e9826119d8565b60008060408385031215611a2257600080fd5b611a2b836119d8565b9150611a39602084016119d8565b90509250929050565b600080600060608486031215611a5757600080fd5b611a60846119d8565b9250611a6e602085016119d8565b9150604084013590509250925092565b60008060008060808587031215611a9457600080fd5b611a9d856119d8565b9350611aab602086016119d8565b92506040850135915060608501356001600160401b0380821115611ace57600080fd5b818701915087601f830112611ae257600080fd5b813581811115611af457611af4611f02565b604051601f8201601f19908116603f01168101908382118183101715611b1c57611b1c611f02565b816040528281528a6020848701011115611b3557600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215611b6c57600080fd5b611b75836119d8565b915060208301358015158114611b8a57600080fd5b809150509250929050565b60008060408385031215611ba857600080fd5b611bb1836119d8565b946020939093013593505050565b600060208284031215611bd157600080fd5b81356109e981611f18565b600060208284031215611bee57600080fd5b81516109e981611f18565b60008060208385031215611c0c57600080fd5b82356001600160401b0380821115611c2357600080fd5b818501915085601f830112611c3757600080fd5b813581811115611c4657600080fd5b866020828501011115611c5857600080fd5b60209290920196919550909350505050565b600060208284031215611c7c57600080fd5b5035919050565b60008060408385031215611c9657600080fd5b50508035926020909101359150565b60008060408385031215611cb857600080fd5b823563ffffffff81168114611ccc57600080fd5b915060208301356001600160401b0381168114611b8a57600080fd5b60008151808452611d00816020860160208601611e2a565b601f01601f19169290920160200192915050565b60008351611d26818460208801611e2a565b835190830190611d3a818360208801611e2a565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611d7690830184611ce8565b9695505050505050565b6020815260006109e96020830184611ce8565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115611ddb57611ddb611ec0565b500190565b600082611def57611def611ed6565b500490565b6000816000190483118215151615611e0e57611e0e611ec0565b500290565b600082821015611e2557611e25611ec0565b500390565b60005b83811015611e45578181015183820152602001611e2d565b83811115610e4e5750506000910152565b600181811c90821680611e6a57607f821691505b60208210811415611e8b57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611ea557611ea5611ec0565b5060010190565b600082611ebb57611ebb611ed6565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146110e157600080fdfea264697066735822122062d46a1245ece0e86c782b4a3fb404bd7f2986d436cd1466245cfabd23cece8464736f6c63430008070033