6080604052600680546001600160a81b03191690553480156200002157600080fd5b50600080546001600160a01b03191633179055620000426009600a62000164565b62000052906305f5e10062000232565b600080546001600160a01b03168152600160205260409020556003805460ff19169055620000836009600a62000164565b62000093906305f5e10062000232565b600455620000a46009600a62000164565b620000b4906305f5e10062000232565b600555600080546001600160a01b0316907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620000f46009600a62000164565b62000104906305f5e10062000232565b60405190815260200160405180910390a36200026a565b600181815b808511156200015c57816000190482111562000140576200014062000254565b808516156200014e57918102915b93841c939080029062000120565b509250929050565b60006200017560ff8416836200017c565b9392505050565b6000826200018d575060016200022c565b816200019c575060006200022c565b8160018114620001b55760028114620001c057620001e0565b60019150506200022c565b60ff841115620001d457620001d462000254565b50506001821b6200022c565b5060208310610133831016604e8410600b841016171562000205575081810a6200022c565b6200021183836200011b565b806000190482111562000228576200022862000254565b0290505b92915050565b60008160001904831182151516156200024f576200024f62000254565b500290565b634e487b7160e01b600052601160045260246000fd5b6110d3806200027a6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806388e77621116100b8578063aa4bde281161007c578063aa4bde28146102c6578063b1421803146102cf578063c9567bf9146102e2578063dd62ed3e146102ea578063f2fde38b14610323578063ffb54a991461033657600080fd5b806388e7762114610267578063893d20e81461026f5780638c0b5e221461028a57806395d89b4114610293578063a9059cbb146102b357600080fd5b80632f54bf6e1161010a5780632f54bf6e146101df578063313ce56714610201578063571ac8b01461021057806370a0823114610223578063715018a61461024c5780637a351a1d1461025457600080fd5b806304cb876d1461014757806306fdde0314610151578063095ea7b31461019357806318160ddd146101b657806323b872dd146101cc575b600080fd5b61014f610343565b005b6040805180820190915260148152732632ba399023b790213930b73237b71021b7b4b760611b60208201525b60405161018a9190610e76565b60405180910390f35b6101a66101a1366004610e19565b610452565b604051901515815260200161018a565b6101be6104bf565b60405190815260200161018a565b6101a66101da366004610dd9565b6104e0565b6101a66101ed366004610d85565b6000546001600160a01b0391821691161490565b6040516009815260200161018a565b6101a661021e366004610d85565b6105f0565b6101be610231366004610d85565b6001600160a01b031660009081526001602052604090205490565b61014f6105fe565b61014f610262366004610d85565b61066d565b61014f610723565b6000546040516001600160a01b03909116815260200161018a565b6101be60045481565b6040805180820190915260048152634c47424360e01b602082015261017d565b6101a66102c1366004610e19565b610789565b6101be60055481565b61014f6102dd366004610e44565b6107eb565b61014f61095e565b6101be6102f8366004610da1565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61014f610331366004610d85565b610992565b6003546101a69060ff1681565b6000546001600160a01b031633146103765760405162461bcd60e51b815260040161036d90610ec9565b60405180910390fd5b600654600160a01b900460ff16156103d05760405162461bcd60e51b815260206004820181905260248201527f546865204c50206164647265737320697320616c7265616479206c6f636b6564604482015260640161036d565b6006546001600160a01b031661043d5760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f74206c6f636b204c50206164647265737320756e74696c2069742060448201526b1a185cc81899595b881cd95d60a21b606482015260840161036d565b6006805460ff60a01b1916600160a01b179055565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ad9086815260200190565b60405180910390a35060015b92915050565b60006104cd6009600a610f8e565b6104db906305f5e100611039565b905090565b60006104ea610a10565b6105305760405162461bcd60e51b8152602060048201526017602482015276151c98591a5b99c81a5cc81b9bdd081bdc195b881e595d604a1b604482015260640161036d565b6001600160a01b0384166000908152600260209081526040808320338452909152902054600019146105dd576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526002825283812033825290915291909120546105b8918490610a49565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b6105e8848484610a83565b949350505050565b60006104b982600019610452565b6000546001600160a01b031633146106285760405162461bcd60e51b815260040161036d90610ec9565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b031633146106975760405162461bcd60e51b815260040161036d90610ec9565b600654600160a01b900460ff16156107015760405162461bcd60e51b815260206004820152602760248201527f546865204c5020616464726573732063616e206e6f206c6f6e6765722062652060448201526618da185b99d95960ca1b606482015260840161036d565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461074d5760405162461bcd60e51b815260040161036d90610ec9565b6107596009600a610f8e565b610767906305f5e100611039565b6004556107766009600a610f8e565b610784906305f5e100611039565b600555565b6000610793610a10565b6107d95760405162461bcd60e51b8152602060048201526017602482015276151c98591a5b99c81a5cc81b9bdd081bdc195b881e595d604a1b604482015260640161036d565b6107e4338484610a83565b9392505050565b6000546001600160a01b031633146108155760405162461bcd60e51b815260040161036d90610ec9565b600061ffff8316606461082a6009600a610f8e565b610838906305f5e100611039565b6108429190610f2b565b61084c9190611039565b90506004548110156108b15760405162461bcd60e51b815260206004820152602860248201527f4e6577205458206c696d6974206973206c6f776572207468616e2063757272656044820152671b9d081b1a5b5a5d60c21b606482015260840161036d565b6004819055600061ffff831660646108cb6009600a610f8e565b6108d9906305f5e100611039565b6108e39190610f2b565b6108ed9190611039565b90506005548110156109565760405162461bcd60e51b815260206004820152602c60248201527f4e65772077616c6c6574206c696d6974206973206c6f776572207468616e206360448201526b1d5c9c995b9d081b1a5b5a5d60a21b606482015260840161036d565b600555505050565b6000546001600160a01b031633146109885760405162461bcd60e51b815260040161036d90610ec9565b610990610bd7565b565b6000546001600160a01b031633146109bc5760405162461bcd60e51b815260040161036d90610ec9565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b600354600090819060ff16151560011415610a2d57506001919050565b6000546001600160a01b0316321415610a44575060015b919050565b60008184841115610a6d5760405162461bcd60e51b815260040161036d9190610e76565b506000610a7a8486611058565b95945050505050565b6000610a8f8383610c38565b610af05760405162461bcd60e51b815260206004820152602c60248201527f5472616e73616374696f6e20657863656564732063757272656e742054582f7760448201526b616c6c6574206c696d69747360a01b606482015260840161036d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260019091529190912054610b42918490610a49565b6001600160a01b038086166000908152600160205260408082209390935590851681522054610b719083610caf565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610bc59086815260200190565b60405180910390a35060019392505050565b60035460ff1615610c215760405162461bcd60e51b81526020600482015260146024820152732a3930b234b7339030b63932b0b23c9037b832b760611b604482015260640161036d565b610c29610d0e565b6003805460ff19166001179055565b60035460009060019060ff1615158114156107e457600454831115610c5f575060006107e4565b6006546001600160a01b03858116911614801590610ca057506005546001600160a01b038516600090815260016020526040902054610c9e9085610caf565b115b156107e4575060009392505050565b600080610cbc8385610f13565b9050838110156107e45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161036d565b6064610d1c6009600a610f8e565b610d2a906305f5e100611039565b610d349190610f2b565b610d3f906002611039565b6004556064610d506009600a610f8e565b610d5e906305f5e100611039565b610d689190610f2b565b610784906002611039565b803561ffff81168114610a4457600080fd5b600060208284031215610d96578081fd5b81356107e481611085565b60008060408385031215610db3578081fd5b8235610dbe81611085565b91506020830135610dce81611085565b809150509250929050565b600080600060608486031215610ded578081fd5b8335610df881611085565b92506020840135610e0881611085565b929592945050506040919091013590565b60008060408385031215610e2b578182fd5b8235610e3681611085565b946020939093013593505050565b60008060408385031215610e56578182fd5b610e5f83610d73565b9150610e6d60208401610d73565b90509250929050565b6000602080835283518082850152825b81811015610ea257858101830151858201604001528201610e86565b81811115610eb35783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602a908201527f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c207468696040820152693990333ab731ba34b7b760b11b606082015260800190565b60008219821115610f2657610f2661106f565b500190565b600082610f4657634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115610f86578160001904821115610f6c57610f6c61106f565b80851615610f7957918102915b93841c9390800290610f50565b509250929050565b60006107e460ff841683600082610fa7575060016104b9565b81610fb4575060006104b9565b8160018114610fca5760028114610fd457610ff0565b60019150506104b9565b60ff841115610fe557610fe561106f565b50506001821b6104b9565b5060208310610133831016604e8410600b8410161715611013575081810a6104b9565b61101d8383610f4b565b80600019048211156110315761103161106f565b029392505050565b60008160001904831182151516156110535761105361106f565b500290565b60008282101561106a5761106a61106f565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461109a57600080fd5b5056fea2646970667358221220d8042f90390b05b50f3000b87d6b9cf08a7a96ce0bcf6f15d94fa9826af38ec864736f6c63430008040033