0x60806040526004361061037a5760003560e01c80635d54c0af116101d157806395d89b4111610102578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610a38578063f3b1e83b14610a58578063fabb0b4f14610a6e578063ffb54a9914610a8457600080fd5b8063dd62ed3e14610992578063ea2f0b37146109d8578063eafb5a3c146109f8578063f259c57b14610a1857600080fd5b8063a9059cbb116100dc578063a9059cbb14610926578063bf56b37114610946578063d3f6a1571461095c578063dc44b6a01461097c57600080fd5b806395d89b41146108d1578063a0c5efc2146108e6578063a457c2d71461090657600080fd5b80637598f8bc1161016f57806388790a681161014957806388790a681461084457806388f820201461085a5780638da5cb5b146108935780638f4590d2146108b157600080fd5b80637598f8bc146107f857806378109e541461080e57806384530c461461082457600080fd5b8063715018a6116101ab578063715018a61461078d57806371b9189c146107a257806372fdf6ee146107c2578063743942b6146107d857600080fd5b80635d54c0af1461072d5780636ce37fa01461074d57806370a082311461076d57600080fd5b80632d4103d6116102ab5780633bd5d173116102495780634549b039116102235780634549b039146106ad57806349bd5a5e146106cd5780634b01547f146106ed57806352390c021461070d57600080fd5b80633bd5d173146106575780633ddf65ab14610677578063401aa5c01461069757600080fd5b8063313ce56711610285578063313ce567146105cb578063335f6a43146105f75780633685d41914610617578063395093511461063757600080fd5b80632d4103d61461056b5780632d8381191461058b5780632dd5efe7146105ab57600080fd5b806313114a9d116103185780631ca0a28d116102f25780631ca0a28d146104ea57806323b872dd1461050a57806325b86edf1461052a5780632691bc801461054a57600080fd5b806313114a9d146104885780631694505e1461049d57806318160ddd146104d557600080fd5b806309302dc61161035457806309302dc6146103e7578063095ea7b3146104095780630b8e4dab146104395780630f3a325f1461044f57600080fd5b80630445b6671461038657806306fdde03146103af57806307279d54146103d157600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c60275481565b6040519081526020015b60405180910390f35b3480156103bb57600080fd5b506103c4610aa5565b6040516103a69190613a11565b3480156103dd57600080fd5b5061039c601d5481565b3480156103f357600080fd5b506104076104023660046138fb565b610b37565b005b34801561041557600080fd5b506104296104243660046137d4565b610b91565b60405190151581526020016103a6565b34801561044557600080fd5b5061039c60195481565b34801561045b57600080fd5b5061042961046a36600461364a565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561049457600080fd5b5060145461039c565b3480156104a957600080fd5b506028546104bd906001600160a01b031681565b6040516001600160a01b0390911681526020016103a6565b3480156104e157600080fd5b5060125461039c565b3480156104f657600080fd5b506104076105053660046136fa565b610ba8565b34801561051657600080fd5b506104296105253660046136ba565b610e12565b34801561053657600080fd5b506104076105453660046138e9565b610e7b565b34801561055657600080fd5b5060295461042990600160b01b900460ff1681565b34801561057757600080fd5b506104076105863660046138cc565b610fab565b34801561059757600080fd5b5061039c6105a63660046138fb565b611036565b3480156105b757600080fd5b506104076105c636600461364a565b6110ba565b3480156105d757600080fd5b50601154600160a01b900460ff1660405160ff90911681526020016103a6565b34801561060357600080fd5b5061040761061236600461377a565b611108565b34801561062357600080fd5b5061040761063236600461364a565b6112a5565b34801561064357600080fd5b506104296106523660046137d4565b611490565b34801561066357600080fd5b506104076106723660046138fb565b6114c6565b34801561068357600080fd5b50610407610692366004613894565b6115b0565b3480156106a357600080fd5b5061039c601b5481565b3480156106b957600080fd5b5061039c6106c836600461392b565b6115f8565b3480156106d957600080fd5b506029546104bd906001600160a01b031681565b3480156106f957600080fd5b50610407610708366004613894565b611685565b34801561071957600080fd5b5061040761072836600461364a565b6116cd565b34801561073957600080fd5b5061040761074836600461383f565b6117b7565b34801561075957600080fd5b5061040761076836600461399d565b6118b9565b34801561077957600080fd5b5061039c61078836600461364a565b6118f4565b34801561079957600080fd5b50610407611953565b3480156107ae57600080fd5b506104076107bd3660046137ff565b6119c7565b3480156107ce57600080fd5b5061039c601a5481565b3480156107e457600080fd5b506104076107f336600461364a565b611a74565b34801561080457600080fd5b5061039c601f5481565b34801561081a57600080fd5b5061039c60175481565b34801561083057600080fd5b5061040761083f3660046137ff565b611ad3565b34801561085057600080fd5b5061039c601c5481565b34801561086657600080fd5b5061042961087536600461364a565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561089f57600080fd5b506000546001600160a01b03166104bd565b3480156108bd57600080fd5b506104076108cc36600461394f565b611b7b565b3480156108dd57600080fd5b506103c4611bc5565b3480156108f257600080fd5b5061040761090136600461399d565b611bd4565b34801561091257600080fd5b506104296109213660046137d4565b611c48565b34801561093257600080fd5b506104296109413660046137d4565b611c97565b34801561095257600080fd5b5061039c600b5481565b34801561096857600080fd5b50610407610977366004613682565b611ca4565b34801561098857600080fd5b5061039c60185481565b34801561099e57600080fd5b5061039c6109ad366004613682565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156109e457600080fd5b506104076109f336600461364a565b611cfc565b348015610a0457600080fd5b50610407610a1336600461364a565b611d47565b348015610a2457600080fd5b50610407610a3336600461364a565b6120cd565b348015610a4457600080fd5b50610407610a5336600461364a565b61211b565b348015610a6457600080fd5b5061039c601e5481565b348015610a7a57600080fd5b5061039c600a5481565b348015610a9057600080fd5b5060295461042990600160a81b900460ff1681565b606060158054610ab490613c52565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae090613c52565b8015610b2d5780601f10610b0257610100808354040283529160200191610b2d565b820191906000526020600020905b815481529060010190602001808311610b1057829003601f168201915b5050505050905090565b6000546001600160a01b03163314610b6a5760405162461bcd60e51b8152600401610b6190613a64565b60405180910390fd5b610b8b81610b856103e860125461220590919063ffffffff16565b90612247565b60175550565b6000610b9e338484612325565b5060015b92915050565b6000546001600160a01b03163314610bd25760405162461bcd60e51b8152600401610b6190613a64565b6103218310610c395760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610b61565b828114610c995760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610b61565b6000805b84811015610d0c57601154610cbd90600160a01b900460ff16600a613b71565b848483818110610cdd57634e487b7160e01b600052603260045260246000fd5b90506020020135610cee9190613c1c565b610cf89083613af6565b915080610d0481613c8d565b915050610c9d565b5080610d17876118f4565b1015610d655760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610b61565b60005b84811015610e0957610df787878784818110610d9457634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610da9919061364a565b601154610dc190600160a01b900460ff16600a613b71565b878786818110610de157634e487b7160e01b600052603260045260246000fd5b90506020020135610df29190613c1c565b612449565b80610e0181613c8d565b915050610d68565b50505050505050565b6000610e1f848484612449565b610e718433610e6c85604051806060016040528060288152602001613ce5602891396001600160a01b038a16600090815260086020908152604080832033845290915290205491906129c9565b612325565b5060019392505050565b6000546001600160a01b03163314610ea55760405162461bcd60e51b8152600401610b6190613a64565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b158015610ee757600080fd5b505afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190613913565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b158015610f6d57600080fd5b505af1158015610f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa591906138b0565b50505050565b6000546001600160a01b03163314610fd55760405162461bcd60e51b8152600401610b6190613a64565b6029805460ff60a81b1916600160a81b84151502179055610ff5306116cd565b60295461100a906001600160a01b03166116cd565b602954600160a81b900460ff1680156110235750600b54155b156110325743600b55600a8190555b5050565b600060135482111561109d5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b61565b60006110a7612a03565b90506110b38382612205565b9392505050565b6000546001600160a01b031633146110e45760405162461bcd60e51b8152600401610b6190613a64565b6001600160a01b03166000908152600d60205260409020805460ff19166001179055565b6000546001600160a01b031633146111325760405162461bcd60e51b8152600401610b6190613a64565b6107d1821061119a5760405162461bcd60e51b815260206004820152602e60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526d323030302061646472657373657360901b6064820152608401610b61565b60115460009083906111b790600160a01b900460ff16600a613b71565b6111c19084613c1c565b6111cb9190613c1c565b9050806111d7866118f4565b10156112255760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610b61565b60005b8381101561129d5761128b8686868481811061125457634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611269919061364a565b60115461128190600160a01b900460ff16600a613b71565b610df29087613c1c565b8061129581613c8d565b915050611228565b505050505050565b6000546001600160a01b031633146112cf5760405162461bcd60e51b8152600401610b6190613a64565b6001600160a01b0381166000908152600e602052604090205460ff166113375760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b61565b60005b60105481101561103257816001600160a01b03166010828154811061136f57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561147e576010805461139a90600190613c3b565b815481106113b857634e487b7160e01b600052603260045260246000fd5b600091825260209091200154601080546001600160a01b0390921691839081106113f257634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600782526040808220829055600e90925220805460ff19169055601080548061145857634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061148881613c8d565b91505061133a565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610b9e918590610e6c90866122c6565b336000818152600e602052604090205460ff161561153b5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610b61565b600061154683612a26565b505050506001600160a01b03841660009081526006602052604090205491925061157291905082612a75565b6001600160a01b0383166000908152600660205260409020556013546115989082612a75565b6013556014546115a890846122c6565b601455505050565b6000546001600160a01b031633146115da5760405162461bcd60e51b8152600401610b6190613a64565b60298054911515600160b81b0260ff60b81b19909216919091179055565b600060125483111561164c5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b61565b8161166b57600061165c84612a26565b50939550610ba2945050505050565b600061167684612a26565b50929550610ba2945050505050565b6000546001600160a01b031633146116af5760405162461bcd60e51b8152600401610b6190613a64565b60298054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146116f75760405162461bcd60e51b8152600401610b6190613a64565b6001600160a01b03811660009081526006602052604090205415611751576001600160a01b03811660009081526006602052604090205461173790611036565b6001600160a01b0382166000908152600760205260409020555b6001600160a01b03166000818152600e60205260408120805460ff191660019081179091556010805491820181559091527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720180546001600160a01b0319169091179055565b6000546001600160a01b031633146117e15760405162461bcd60e51b8152600401610b6190613a64565b60005b82811015610fa557600f600085858481811061181057634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611825919061364a565b6001600160a01b0316815260208101919091526040016000205460ff166118a957816009600086868581811061186b57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611880919061364a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b6118b281613c8d565b90506117e4565b6000546001600160a01b031633146118e35760405162461bcd60e51b8152600401610b6190613a64565b601c92909255601d55601e55601f55565b6001600160a01b0381166000908152600e602052604081205460ff161561193157506001600160a01b031660009081526007602052604090205490565b6001600160a01b038216600090815260066020526040902054610ba290611036565b6000546001600160a01b0316331461197d5760405162461bcd60e51b8152600401610b6190613a64565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146119f15760405162461bcd60e51b8152600401610b6190613a64565b60005b81811015611a6f576001600c6000858585818110611a2257634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611a37919061364a565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611a6881613c8d565b90506119f4565b505050565b6000546001600160a01b03163314611a9e5760405162461bcd60e51b8152600401610b6190613a64565b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015611032573d6000803e3d6000fd5b6000546001600160a01b03163314611afd5760405162461bcd60e51b8152600401610b6190613a64565b60005b81811015611a6f576001600f6000858585818110611b2e57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611b43919061364a565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611b7481613c8d565b9050611b00565b6000546001600160a01b03163314611ba55760405162461bcd60e51b8152600401610b6190613a64565b8082601254611bb49190613c1c565b611bbe9190613b0e565b6027555050565b606060168054610ab490613c52565b6000546001600160a01b03163314611bfe5760405162461bcd60e51b8152600401610b6190613a64565b60188390556019829055601a819055601b8490556024849055602183905560238190556022829055602054611c3f90611c39838187876122c6565b906122c6565b60255550505050565b6000610b9e3384610e6c85604051806060016040528060258152602001613d0d602591393360009081526008602090815260408083206001600160a01b038d16845290915290205491906129c9565b6000610b9e338484612449565b6000546001600160a01b03163314611cce5760405162461bcd60e51b8152600401610b6190613a64565b600380546001600160a01b039384166001600160a01b03199182161790915560058054929093169116179055565b6000546001600160a01b03163314611d265760405162461bcd60e51b8152600401610b6190613a64565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b6000546001600160a01b03163314611d715760405162461bcd60e51b8152600401610b6190613a64565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611db157600080fd5b505afa158015611dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de99190613666565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611e3157600080fd5b505afa158015611e45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e699190613666565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b158015611eaf57600080fd5b505afa158015611ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee79190613666565b90506001600160a01b03811661208d57816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611f3057600080fd5b505afa158015611f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f689190613666565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611fb057600080fd5b505afa158015611fc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe89190613666565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561203057600080fd5b505af1158015612044573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120689190613666565b602980546001600160a01b0319166001600160a01b03929092169190911790556120a9565b602980546001600160a01b0319166001600160a01b0383161790555b50602880546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b031633146120f75760405162461bcd60e51b8152600401610b6190613a64565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b6000546001600160a01b031633146121455760405162461bcd60e51b8152600401610b6190613a64565b6001600160a01b0381166121aa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b61565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006110b383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ab7565b60008261225657506000610ba2565b60006122628385613c1c565b90508261226f8583613b0e565b146110b35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b61565b6000806122d38385613af6565b9050838110156110b35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b61565b6001600160a01b0383166123875760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b61565b6001600160a01b0382166123e85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b61565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166124ad5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b61565b6001600160a01b03821661250f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b61565b600081116125715760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b61565b6001600160a01b03821660009081526009602052604090205460ff16156125d45760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610b61565b6001600160a01b03831660009081526009602052604090205460ff16156126375760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610b61565b6000546001600160a01b0384811691161480159061266357506000546001600160a01b03838116911614155b156126c157602954600160a81b900460ff166126c15760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610b61565b6029546000906001600160a01b03858116911614806126ed57506029546001600160a01b038481169116145b801561273557506001600160a01b0384166000908152600c602052604090205460ff168061273357506001600160a01b0383166000908152600c602052604090205460ff165b155b1561273e575060015b6000600b5411801561278257506001600160a01b0383166000908152600d602052604090205460ff1615801561278257506000546001600160a01b03858116911614155b801561279d575043600a54600b5461279a9190613af6565b11155b15612811576017546127ae846118f4565b6127b89084613af6565b11156128115760405162461bcd60e51b815260206004820152602260248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d6974604482015261195960f21b6064820152608401610b61565b602554602655601b54602455602954600160a81b900460ff16801561284357506029546001600160a01b038481169116145b1561286f57612865601e54611c39601d54601c546122c690919063ffffffff16565b602655601f546024555b6000600b5411801561288f575043600a54600b5461288d9190613af6565b115b156128b8576001600160a01b0383166000908152600960205260409020805460ff191660011790555b6000600b541180156128d857506000546001600160a01b03858116911614155b80156128f35750600a54600b546128ef9190613af6565b4310155b80156129085750602954600160b81b900460ff165b15612914576103846026555b602954600160b01b900460ff161561295757602954600160a81b900460ff16801561294c57506029546001600160a01b038581169116145b156129575760006026555b602954600160a01b900460ff1615801561297a5750602954600160a81b900460ff165b801561299357506029546001600160a01b038481169116145b156129bd5760006129a3306118f4565b905060275481106129bb57506027546129bb81612ae5565b505b610fa584848484612c44565b600081848411156129ed5760405162461bcd60e51b8152600401610b619190613a11565b5060006129fa8486613c3b565b95945050505050565b6000806000612a10612d70565b9092509050612a1f8282612205565b9250505090565b6000806000806000806000806000612a3d8a612f2a565b9250925092506000806000612a5b8d8686612a56612a03565b612f6c565b919f909e50909c50959a5093985091965092945050505050565b60006110b383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129c9565b60008183612ad85760405162461bcd60e51b8152600401610b619190613a11565b5060006129fa8486613b0e565b6029805460ff60a01b1916600160a01b179055602554602154600091612b1b91600291612b159182908790612247565b90612205565b90506000612b298383612a75565b9050612b3481612fbc565b6021544790600090612b5490612b4b906002612205565b60255490612a75565b90506000612b766002612b1584612b156021548861224790919063ffffffff16565b90506000612b9383612b156023548761224790919063ffffffff16565b90506000612bb084612b156022548861224790919063ffffffff16565b90506000612bcd85612b156020548961224790919063ffffffff16565b9050478015612c1b57600354612bed9084906001600160a01b031661317a565b600454612c049083906001600160a01b031661317a565b600554612c1b9085906001600160a01b031661317a565b8815612c2b57612c2b89866131b0565b50506029805460ff60a01b191690555050505050505050565b60245460265482612c5a57600060248190556026555b6001600160a01b0386166000908152600e602052604090205460ff168015612c9b57506001600160a01b0385166000908152600e602052604090205460ff16155b15612cb057612cab868686613294565b612d5c565b6001600160a01b0386166000908152600e602052604090205460ff16158015612cf157506001600160a01b0385166000908152600e602052604090205460ff165b15612d0157612cab8686866133ba565b6001600160a01b0386166000908152600e602052604090205460ff168015612d4157506001600160a01b0385166000908152600e602052604090205460ff165b15612d5157612cab868686613463565b612d5c8686866134d6565b8261129d5760249190915560265550505050565b6013546012546000918291825b601054811015612efa57826006600060108481548110612dad57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612e265750816007600060108481548110612dff57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612e3c57601354601254945094505050509091565b612e906006600060108481548110612e6457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612a75565b9250612ee66007600060108481548110612eba57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612a75565b915080612ef281613c8d565b915050612d7d565b50601254601354612f0a91612205565b821015612f21576013546012549350935050509091565b90939092509050565b600080600080612f398561351a565b90506000612f4686613537565b90506000612f5e82612f588986612a75565b90612a75565b979296509094509092505050565b6000808080612f7b8886612247565b90506000612f898887612247565b90506000612f978888612247565b90506000612fa982612f588686612a75565b939b939a50919850919650505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612fff57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561305357600080fd5b505afa158015613067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308b9190613666565b816001815181106130ac57634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526028546130d29130911684612325565b60285460405163791ac94760e01b81526001600160a01b039091169063791ac9479061310b908590600090869030904290600401613aba565b600060405180830381600087803b15801561312557600080fd5b505af1158015613139573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161316e929190613a99565b60405180910390a15050565b6040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015611a6f573d6000803e3d6000fd5b6028546131c89030906001600160a01b031684612325565b6028546001600160a01b031663f305d7198230856000806131f16000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561325457600080fd5b505af1158015613268573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061328d9190613970565b5050505050565b6000806000806000806132a687612a26565b6001600160a01b038f16600090815260076020526040902054959b509399509197509550935091506132d89088612a75565b6001600160a01b038a166000908152600760209081526040808320939093556006905220546133079087612a75565b6001600160a01b03808b1660009081526006602052604080822093909355908a168152205461333690866122c6565b6001600160a01b03891660009081526006602052604090205561335881613554565b61336284836135dc565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516133a791815260200190565b60405180910390a3505050505050505050565b6000806000806000806133cc87612a26565b6001600160a01b038f16600090815260066020526040902054959b509399509197509550935091506133fe9087612a75565b6001600160a01b03808b16600090815260066020908152604080832094909455918b1681526007909152205461343490846122c6565b6001600160a01b03891660009081526007602090815260408083209390935560069052205461333690866122c6565b60008060008060008061347587612a26565b6001600160a01b038f16600090815260076020526040902054959b509399509197509550935091506134a79088612a75565b6001600160a01b038a166000908152600760209081526040808320939093556006905220546133fe9087612a75565b6000806000806000806134e887612a26565b6001600160a01b038f16600090815260066020526040902054959b509399509197509550935091506133079087612a75565b6000610ba26103e8612b156024548561224790919063ffffffff16565b6000610ba26103e8612b156026548561224790919063ffffffff16565b600061355e612a03565b9050600061356c8383612247565b3060009081526006602052604090205490915061358990826122c6565b30600090815260066020908152604080832093909355600e9052205460ff1615611a6f57306000908152600760205260409020546135c790846122c6565b30600090815260076020526040902055505050565b6013546135e99083612a75565b6013556014546135f990826122c6565b6014555050565b60008083601f840112613611578182fd5b50813567ffffffffffffffff811115613628578182fd5b6020830191508360208260051b850101111561364357600080fd5b9250929050565b60006020828403121561365b578081fd5b81356110b381613cbe565b600060208284031215613677578081fd5b81516110b381613cbe565b60008060408385031215613694578081fd5b823561369f81613cbe565b915060208301356136af81613cbe565b809150509250929050565b6000806000606084860312156136ce578081fd5b83356136d981613cbe565b925060208401356136e981613cbe565b929592945050506040919091013590565b600080600080600060608688031215613711578081fd5b853561371c81613cbe565b9450602086013567ffffffffffffffff80821115613738578283fd5b61374489838a01613600565b9096509450604088013591508082111561375c578283fd5b5061376988828901613600565b969995985093965092949392505050565b6000806000806060858703121561378f578384fd5b843561379a81613cbe565b9350602085013567ffffffffffffffff8111156137b5578384fd5b6137c187828801613600565b9598909750949560400135949350505050565b600080604083850312156137e6578182fd5b82356137f181613cbe565b946020939093013593505050565b60008060208385031215613811578182fd5b823567ffffffffffffffff811115613827578283fd5b61383385828601613600565b90969095509350505050565b600080600060408486031215613853578283fd5b833567ffffffffffffffff811115613869578384fd5b61387586828701613600565b909450925050602084013561388981613cd6565b809150509250925092565b6000602082840312156138a5578081fd5b81356110b381613cd6565b6000602082840312156138c1578081fd5b81516110b381613cd6565b600080604083850312156138de578182fd5b82356137f181613cd6565b60008060408385031215613694578182fd5b60006020828403121561390c578081fd5b5035919050565b600060208284031215613924578081fd5b5051919050565b6000806040838503121561393d578182fd5b8235915060208301356136af81613cd6565b60008060408385031215613961578182fd5b50508035926020909101359150565b600080600060608486031215613984578081fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156139b2578182fd5b5050823594602084013594506040840135936060013592509050565b6000815180845260208085019450808401835b83811015613a065781516001600160a01b0316875295820195908201906001016139e1565b509495945050505050565b6000602080835283518082850152825b81811015613a3d57858101830151858201604001528201613a21565b81811115613a4e5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000613ab260408301846139ce565b949350505050565b85815284602082015260a060408201526000613ad960a08301866139ce565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115613b0957613b09613ca8565b500190565b600082613b2957634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115613b69578160001904821115613b4f57613b4f613ca8565b80851615613b5c57918102915b93841c9390800290613b33565b509250929050565b60006110b360ff841683600082613b8a57506001610ba2565b81613b9757506000610ba2565b8160018114613bad5760028114613bb757613bd3565b6001915050610ba2565b60ff841115613bc857613bc8613ca8565b50506001821b610ba2565b5060208310610133831016604e8410600b8410161715613bf6575081810a610ba2565b613c008383613b2e565b8060001904821115613c1457613c14613ca8565b029392505050565b6000816000190483118215151615613c3657613c36613ca8565b500290565b600082821015613c4d57613c4d613ca8565b500390565b600181811c90821680613c6657607f821691505b60208210811415613c8757634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613ca157613ca1613ca8565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114613cd357600080fd5b50565b8015158114613cd357600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220dbf773cf140de84023006cd585fe5928abada0d1d69ae29f24667fb64dbb111064736f6c63430008040033
0x6080604052600380546001600160a01b031990811673ae0dd915d588b546d09c60ca94b5c279911bb4861790915560048054821673a5ff75b62c069dee4dc697c47ec696b31b2edeef17905560058054909116737be92353274c0a30a5e8f66db610f4eb0e67f1411790556002600a9081556000600b55601180547409000000000000000000000000000000000000dead6001600160a81b03199091161790819055620000b891600160a01b90910460ff169062000931565b620000c890633b9aca00620009f0565b6012819055620000db9060001962000a69565b620000e99060001962000a12565b60135560408051808201909152600c8082526b44696e6e657273526561647960a01b6020909201918252620001219160159162000791565b50604080518082019091526006808252652224a72722a960d11b6020909201918252620001519160169162000791565b506200018a600a620001766103e86012546200061460201b620022051790919060201c565b6200066760201b620022471790919060201c565b601755600a601855600a601955600a601a556000601b55600a601c55600a601d55600a601e556000601f556000602055601854602155601954602255601a54602355601b5460245562000212602054620001fe602354620001fe602254602154620006f260201b620022c61790919060201c565b620006f260201b620022c61790919060201c565b6025556025546026556200023f6014620001766127106012546200061460201b620022051790919060201c565b6027556029805462ffffff60a81b1916600160b81b1790553480156200026457600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506013543360009081526006602090815260409182902092909255805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a01559260048083019392829003018186803b1580156200030857600080fd5b505afa1580156200031d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000343919062000837565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038c57600080fd5b505afa158015620003a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c7919062000837565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200041057600080fd5b505af115801562000425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044b919062000837565b602980546001600160a01b03199081166001600160a01b0393841617909155602880549091169183169190911790556001600c6000620004936000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600c909252812080549092166001908117909255600d90620004ec6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600d909352818320805485166001908117909155602954821684528284208054861682179055601154909116835290822080549093168117909255600f906200056e6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556029549091168152600f909252902080549091166001179055620005bd3390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012546040516200060591815260200190565b60405180910390a35062000aac565b60006200065e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200075560201b60201c565b90505b92915050565b600082620006785750600062000661565b6000620006868385620009f0565b905082620006958583620008d1565b146200065e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b600080620007018385620008b6565b9050838110156200065e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620006e9565b60008183620007795760405162461bcd60e51b8152600401620006e9919062000860565b506000620007888486620008d1565b95945050505050565b8280546200079f9062000a2c565b90600052602060002090601f016020900481019282620007c357600085556200080e565b82601f10620007de57805160ff19168380011785556200080e565b828001600101855582156200080e579182015b828111156200080e578251825591602001919060010190620007f1565b506200081c92915062000820565b5090565b5b808211156200081c576000815560010162000821565b60006020828403121562000849578081fd5b81516001600160a01b03811681146200065e578182fd5b6000602080835283518082850152825b818110156200088e5785810183015185820160400152820162000870565b81811115620008a05783604083870101525b50601f01601f1916929092016040019392505050565b60008219821115620008cc57620008cc62000a80565b500190565b600082620008e357620008e362000a96565b500490565b600181815b80851115620009295781600019048211156200090d576200090d62000a80565b808516156200091b57918102915b93841c9390800290620008ed565b509250929050565b60006200065e60ff8416836000826200094d5750600162000661565b816200095c5750600062000661565b81600181146200097557600281146200098057620009a0565b600191505062000661565b60ff84111562000994576200099462000a80565b50506001821b62000661565b5060208310610133831016604e8410600b8410161715620009c5575081810a62000661565b620009d18383620008e8565b8060001904821115620009e857620009e862000a80565b029392505050565b600081600019048311821515161562000a0d5762000a0d62000a80565b500290565b60008282101562000a275762000a2762000a80565b500390565b600181811c9082168062000a4157607f821691505b6020821081141562000a6357634e487b7160e01b600052602260045260246000fd5b50919050565b60008262000a7b5762000a7b62000a96565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b613d678062000abc6000396000f3fe60806040526004361061037a5760003560e01c80635d54c0af116101d157806395d89b4111610102578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610a38578063f3b1e83b14610a58578063fabb0b4f14610a6e578063ffb54a9914610a8457600080fd5b8063dd62ed3e14610992578063ea2f0b37146109d8578063eafb5a3c146109f8578063f259c57b14610a1857600080fd5b8063a9059cbb116100dc578063a9059cbb14610926578063bf56b37114610946578063d3f6a1571461095c578063dc44b6a01461097c57600080fd5b806395d89b41146108d1578063a0c5efc2146108e6578063a457c2d71461090657600080fd5b80637598f8bc1161016f57806388790a681161014957806388790a681461084457806388f820201461085a5780638da5cb5b146108935780638f4590d2146108b157600080fd5b80637598f8bc146107f857806378109e541461080e57806384530c461461082457600080fd5b8063715018a6116101ab578063715018a61461078d57806371b9189c146107a257806372fdf6ee146107c2578063743942b6146107d857600080fd5b80635d54c0af1461072d5780636ce37fa01461074d57806370a082311461076d57600080fd5b80632d4103d6116102ab5780633bd5d173116102495780634549b039116102235780634549b039146106ad57806349bd5a5e146106cd5780634b01547f146106ed57806352390c021461070d57600080fd5b80633bd5d173146106575780633ddf65ab14610677578063401aa5c01461069757600080fd5b8063313ce56711610285578063313ce567146105cb578063335f6a43146105f75780633685d41914610617578063395093511461063757600080fd5b80632d4103d61461056b5780632d8381191461058b5780632dd5efe7146105ab57600080fd5b806313114a9d116103185780631ca0a28d116102f25780631ca0a28d146104ea57806323b872dd1461050a57806325b86edf1461052a5780632691bc801461054a57600080fd5b806313114a9d146104885780631694505e1461049d57806318160ddd146104d557600080fd5b806309302dc61161035457806309302dc6146103e7578063095ea7b3146104095780630b8e4dab146104395780630f3a325f1461044f57600080fd5b80630445b6671461038657806306fdde03146103af57806307279d54146103d157600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c60275481565b6040519081526020015b60405180910390f35b3480156103bb57600080fd5b506103c4610aa5565b6040516103a69190613a11565b3480156103dd57600080fd5b5061039c601d5481565b3480156103f357600080fd5b506104076104023660046138fb565b610b37565b005b34801561041557600080fd5b506104296104243660046137d4565b610b91565b60405190151581526020016103a6565b34801561044557600080fd5b5061039c60195481565b34801561045b57600080fd5b5061042961046a36600461364a565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561049457600080fd5b5060145461039c565b3480156104a957600080fd5b506028546104bd906001600160a01b031681565b6040516001600160a01b0390911681526020016103a6565b3480156104e157600080fd5b5060125461039c565b3480156104f657600080fd5b506104076105053660046136fa565b610ba8565b34801561051657600080fd5b506104296105253660046136ba565b610e12565b34801561053657600080fd5b506104076105453660046138e9565b610e7b565b34801561055657600080fd5b5060295461042990600160b01b900460ff1681565b34801561057757600080fd5b506104076105863660046138cc565b610fab565b34801561059757600080fd5b5061039c6105a63660046138fb565b611036565b3480156105b757600080fd5b506104076105c636600461364a565b6110ba565b3480156105d757600080fd5b50601154600160a01b900460ff1660405160ff90911681526020016103a6565b34801561060357600080fd5b5061040761061236600461377a565b611108565b34801561062357600080fd5b5061040761063236600461364a565b6112a5565b34801561064357600080fd5b506104296106523660046137d4565b611490565b34801561066357600080fd5b506104076106723660046138fb565b6114c6565b34801561068357600080fd5b50610407610692366004613894565b6115b0565b3480156106a357600080fd5b5061039c601b5481565b3480156106b957600080fd5b5061039c6106c836600461392b565b6115f8565b3480156106d957600080fd5b506029546104bd906001600160a01b031681565b3480156106f957600080fd5b50610407610708366004613894565b611685565b34801561071957600080fd5b5061040761072836600461364a565b6116cd565b34801561073957600080fd5b5061040761074836600461383f565b6117b7565b34801561075957600080fd5b5061040761076836600461399d565b6118b9565b34801561077957600080fd5b5061039c61078836600461364a565b6118f4565b34801561079957600080fd5b50610407611953565b3480156107ae57600080fd5b506104076107bd3660046137ff565b6119c7565b3480156107ce57600080fd5b5061039c601a5481565b3480156107e457600080fd5b506104076107f336600461364a565b611a74565b34801561080457600080fd5b5061039c601f5481565b34801561081a57600080fd5b5061039c60175481565b34801561083057600080fd5b5061040761083f3660046137ff565b611ad3565b34801561085057600080fd5b5061039c601c5481565b34801561086657600080fd5b5061042961087536600461364a565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561089f57600080fd5b506000546001600160a01b03166104bd565b3480156108bd57600080fd5b506104076108cc36600461394f565b611b7b565b3480156108dd57600080fd5b506103c4611bc5565b3480156108f257600080fd5b5061040761090136600461399d565b611bd4565b34801561091257600080fd5b506104296109213660046137d4565b611c48565b34801561093257600080fd5b506104296109413660046137d4565b611c97565b34801561095257600080fd5b5061039c600b5481565b34801561096857600080fd5b50610407610977366004613682565b611ca4565b34801561098857600080fd5b5061039c60185481565b34801561099e57600080fd5b5061039c6109ad366004613682565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156109e457600080fd5b506104076109f336600461364a565b611cfc565b348015610a0457600080fd5b50610407610a1336600461364a565b611d47565b348015610a2457600080fd5b50610407610a3336600461364a565b6120cd565b348015610a4457600080fd5b50610407610a5336600461364a565b61211b565b348015610a6457600080fd5b5061039c601e5481565b348015610a7a57600080fd5b5061039c600a5481565b348015610a9057600080fd5b5060295461042990600160a81b900460ff1681565b606060158054610ab490613c52565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae090613c52565b8015610b2d5780601f10610b0257610100808354040283529160200191610b2d565b820191906000526020600020905b815481529060010190602001808311610b1057829003601f168201915b5050505050905090565b6000546001600160a01b03163314610b6a5760405162461bcd60e51b8152600401610b6190613a64565b60405180910390fd5b610b8b81610b856103e860125461220590919063ffffffff16565b90612247565b60175550565b6000610b9e338484612325565b5060015b92915050565b6000546001600160a01b03163314610bd25760405162461bcd60e51b8152600401610b6190613a64565b6103218310610c395760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610b61565b828114610c995760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610b61565b6000805b84811015610d0c57601154610cbd90600160a01b900460ff16600a613b71565b848483818110610cdd57634e487b7160e01b600052603260045260246000fd5b90506020020135610cee9190613c1c565b610cf89083613af6565b915080610d0481613c8d565b915050610c9d565b5080610d17876118f4565b1015610d655760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610b61565b60005b84811015610e0957610df787878784818110610d9457634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610da9919061364a565b601154610dc190600160a01b900460ff16600a613b71565b878786818110610de157634e487b7160e01b600052603260045260246000fd5b90506020020135610df29190613c1c565b612449565b80610e0181613c8d565b915050610d68565b50505050505050565b6000610e1f848484612449565b610e718433610e6c85604051806060016040528060288152602001613ce5602891396001600160a01b038a16600090815260086020908152604080832033845290915290205491906129c9565b612325565b5060019392505050565b6000546001600160a01b03163314610ea55760405162461bcd60e51b8152600401610b6190613a64565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b158015610ee757600080fd5b505afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f9190613913565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b158015610f6d57600080fd5b505af1158015610f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa591906138b0565b50505050565b6000546001600160a01b03163314610fd55760405162461bcd60e51b8152600401610b6190613a64565b6029805460ff60a81b1916600160a81b84151502179055610ff5306116cd565b60295461100a906001600160a01b03166116cd565b602954600160a81b900460ff1680156110235750600b54155b156110325743600b55600a8190555b5050565b600060135482111561109d5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b61565b60006110a7612a03565b90506110b38382612205565b9392505050565b6000546001600160a01b031633146110e45760405162461bcd60e51b8152600401610b6190613a64565b6001600160a01b03166000908152600d60205260409020805460ff19166001179055565b6000546001600160a01b031633146111325760405162461bcd60e51b8152600401610b6190613a64565b6107d1821061119a5760405162461bcd60e51b815260206004820152602e60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526d323030302061646472657373657360901b6064820152608401610b61565b60115460009083906111b790600160a01b900460ff16600a613b71565b6111c19084613c1c565b6111cb9190613c1c565b9050806111d7866118f4565b10156112255760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610b61565b60005b8381101561129d5761128b8686868481811061125457634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611269919061364a565b60115461128190600160a01b900460ff16600a613b71565b610df29087613c1c565b8061129581613c8d565b915050611228565b505050505050565b6000546001600160a01b031633146112cf5760405162461bcd60e51b8152600401610b6190613a64565b6001600160a01b0381166000908152600e602052604090205460ff166113375760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b61565b60005b60105481101561103257816001600160a01b03166010828154811061136f57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561147e576010805461139a90600190613c3b565b815481106113b857634e487b7160e01b600052603260045260246000fd5b600091825260209091200154601080546001600160a01b0390921691839081106113f257634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600782526040808220829055600e90925220805460ff19169055601080548061145857634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061148881613c8d565b91505061133a565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610b9e918590610e6c90866122c6565b336000818152600e602052604090205460ff161561153b5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610b61565b600061154683612a26565b505050506001600160a01b03841660009081526006602052604090205491925061157291905082612a75565b6001600160a01b0383166000908152600660205260409020556013546115989082612a75565b6013556014546115a890846122c6565b601455505050565b6000546001600160a01b031633146115da5760405162461bcd60e51b8152600401610b6190613a64565b60298054911515600160b81b0260ff60b81b19909216919091179055565b600060125483111561164c5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b61565b8161166b57600061165c84612a26565b50939550610ba2945050505050565b600061167684612a26565b50929550610ba2945050505050565b6000546001600160a01b031633146116af5760405162461bcd60e51b8152600401610b6190613a64565b60298054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146116f75760405162461bcd60e51b8152600401610b6190613a64565b6001600160a01b03811660009081526006602052604090205415611751576001600160a01b03811660009081526006602052604090205461173790611036565b6001600160a01b0382166000908152600760205260409020555b6001600160a01b03166000818152600e60205260408120805460ff191660019081179091556010805491820181559091527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720180546001600160a01b0319169091179055565b6000546001600160a01b031633146117e15760405162461bcd60e51b8152600401610b6190613a64565b60005b82811015610fa557600f600085858481811061181057634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611825919061364a565b6001600160a01b0316815260208101919091526040016000205460ff166118a957816009600086868581811061186b57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611880919061364a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b6118b281613c8d565b90506117e4565b6000546001600160a01b031633146118e35760405162461bcd60e51b8152600401610b6190613a64565b601c92909255601d55601e55601f55565b6001600160a01b0381166000908152600e602052604081205460ff161561193157506001600160a01b031660009081526007602052604090205490565b6001600160a01b038216600090815260066020526040902054610ba290611036565b6000546001600160a01b0316331461197d5760405162461bcd60e51b8152600401610b6190613a64565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146119f15760405162461bcd60e51b8152600401610b6190613a64565b60005b81811015611a6f576001600c6000858585818110611a2257634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611a37919061364a565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611a6881613c8d565b90506119f4565b505050565b6000546001600160a01b03163314611a9e5760405162461bcd60e51b8152600401610b6190613a64565b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015611032573d6000803e3d6000fd5b6000546001600160a01b03163314611afd5760405162461bcd60e51b8152600401610b6190613a64565b60005b81811015611a6f576001600f6000858585818110611b2e57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611b43919061364a565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611b7481613c8d565b9050611b00565b6000546001600160a01b03163314611ba55760405162461bcd60e51b8152600401610b6190613a64565b8082601254611bb49190613c1c565b611bbe9190613b0e565b6027555050565b606060168054610ab490613c52565b6000546001600160a01b03163314611bfe5760405162461bcd60e51b8152600401610b6190613a64565b60188390556019829055601a819055601b8490556024849055602183905560238190556022829055602054611c3f90611c39838187876122c6565b906122c6565b60255550505050565b6000610b9e3384610e6c85604051806060016040528060258152602001613d0d602591393360009081526008602090815260408083206001600160a01b038d16845290915290205491906129c9565b6000610b9e338484612449565b6000546001600160a01b03163314611cce5760405162461bcd60e51b8152600401610b6190613a64565b600380546001600160a01b039384166001600160a01b03199182161790915560058054929093169116179055565b6000546001600160a01b03163314611d265760405162461bcd60e51b8152600401610b6190613a64565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b6000546001600160a01b03163314611d715760405162461bcd60e51b8152600401610b6190613a64565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611db157600080fd5b505afa158015611dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de99190613666565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611e3157600080fd5b505afa158015611e45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e699190613666565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b158015611eaf57600080fd5b505afa158015611ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee79190613666565b90506001600160a01b03811661208d57816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611f3057600080fd5b505afa158015611f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f689190613666565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611fb057600080fd5b505afa158015611fc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe89190613666565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561203057600080fd5b505af1158015612044573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120689190613666565b602980546001600160a01b0319166001600160a01b03929092169190911790556120a9565b602980546001600160a01b0319166001600160a01b0383161790555b50602880546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b031633146120f75760405162461bcd60e51b8152600401610b6190613a64565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b6000546001600160a01b031633146121455760405162461bcd60e51b8152600401610b6190613a64565b6001600160a01b0381166121aa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b61565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006110b383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ab7565b60008261225657506000610ba2565b60006122628385613c1c565b90508261226f8583613b0e565b146110b35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b61565b6000806122d38385613af6565b9050838110156110b35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b61565b6001600160a01b0383166123875760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b61565b6001600160a01b0382166123e85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b61565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166124ad5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b61565b6001600160a01b03821661250f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b61565b600081116125715760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b61565b6001600160a01b03821660009081526009602052604090205460ff16156125d45760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610b61565b6001600160a01b03831660009081526009602052604090205460ff16156126375760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610b61565b6000546001600160a01b0384811691161480159061266357506000546001600160a01b03838116911614155b156126c157602954600160a81b900460ff166126c15760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610b61565b6029546000906001600160a01b03858116911614806126ed57506029546001600160a01b038481169116145b801561273557506001600160a01b0384166000908152600c602052604090205460ff168061273357506001600160a01b0383166000908152600c602052604090205460ff165b155b1561273e575060015b6000600b5411801561278257506001600160a01b0383166000908152600d602052604090205460ff1615801561278257506000546001600160a01b03858116911614155b801561279d575043600a54600b5461279a9190613af6565b11155b15612811576017546127ae846118f4565b6127b89084613af6565b11156128115760405162461bcd60e51b815260206004820152602260248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d6974604482015261195960f21b6064820152608401610b61565b602554602655601b54602455602954600160a81b900460ff16801561284357506029546001600160a01b038481169116145b1561286f57612865601e54611c39601d54601c546122c690919063ffffffff16565b602655601f546024555b6000600b5411801561288f575043600a54600b5461288d9190613af6565b115b156128b8576001600160a01b0383166000908152600960205260409020805460ff191660011790555b6000600b541180156128d857506000546001600160a01b03858116911614155b80156128f35750600a54600b546128ef9190613af6565b4310155b80156129085750602954600160b81b900460ff165b15612914576103846026555b602954600160b01b900460ff161561295757602954600160a81b900460ff16801561294c57506029546001600160a01b038581169116145b156129575760006026555b602954600160a01b900460ff1615801561297a5750602954600160a81b900460ff165b801561299357506029546001600160a01b038481169116145b156129bd5760006129a3306118f4565b905060275481106129bb57506027546129bb81612ae5565b505b610fa584848484612c44565b600081848411156129ed5760405162461bcd60e51b8152600401610b619190613a11565b5060006129fa8486613c3b565b95945050505050565b6000806000612a10612d70565b9092509050612a1f8282612205565b9250505090565b6000806000806000806000806000612a3d8a612f2a565b9250925092506000806000612a5b8d8686612a56612a03565b612f6c565b919f909e50909c50959a5093985091965092945050505050565b60006110b383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129c9565b60008183612ad85760405162461bcd60e51b8152600401610b619190613a11565b5060006129fa8486613b0e565b6029805460ff60a01b1916600160a01b179055602554602154600091612b1b91600291612b159182908790612247565b90612205565b90506000612b298383612a75565b9050612b3481612fbc565b6021544790600090612b5490612b4b906002612205565b60255490612a75565b90506000612b766002612b1584612b156021548861224790919063ffffffff16565b90506000612b9383612b156023548761224790919063ffffffff16565b90506000612bb084612b156022548861224790919063ffffffff16565b90506000612bcd85612b156020548961224790919063ffffffff16565b9050478015612c1b57600354612bed9084906001600160a01b031661317a565b600454612c049083906001600160a01b031661317a565b600554612c1b9085906001600160a01b031661317a565b8815612c2b57612c2b89866131b0565b50506029805460ff60a01b191690555050505050505050565b60245460265482612c5a57600060248190556026555b6001600160a01b0386166000908152600e602052604090205460ff168015612c9b57506001600160a01b0385166000908152600e602052604090205460ff16155b15612cb057612cab868686613294565b612d5c565b6001600160a01b0386166000908152600e602052604090205460ff16158015612cf157506001600160a01b0385166000908152600e602052604090205460ff165b15612d0157612cab8686866133ba565b6001600160a01b0386166000908152600e602052604090205460ff168015612d4157506001600160a01b0385166000908152600e602052604090205460ff165b15612d5157612cab868686613463565b612d5c8686866134d6565b8261129d5760249190915560265550505050565b6013546012546000918291825b601054811015612efa57826006600060108481548110612dad57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612e265750816007600060108481548110612dff57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612e3c57601354601254945094505050509091565b612e906006600060108481548110612e6457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612a75565b9250612ee66007600060108481548110612eba57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612a75565b915080612ef281613c8d565b915050612d7d565b50601254601354612f0a91612205565b821015612f21576013546012549350935050509091565b90939092509050565b600080600080612f398561351a565b90506000612f4686613537565b90506000612f5e82612f588986612a75565b90612a75565b979296509094509092505050565b6000808080612f7b8886612247565b90506000612f898887612247565b90506000612f978888612247565b90506000612fa982612f588686612a75565b939b939a50919850919650505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612fff57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561305357600080fd5b505afa158015613067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308b9190613666565b816001815181106130ac57634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526028546130d29130911684612325565b60285460405163791ac94760e01b81526001600160a01b039091169063791ac9479061310b908590600090869030904290600401613aba565b600060405180830381600087803b15801561312557600080fd5b505af1158015613139573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161316e929190613a99565b60405180910390a15050565b6040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015611a6f573d6000803e3d6000fd5b6028546131c89030906001600160a01b031684612325565b6028546001600160a01b031663f305d7198230856000806131f16000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561325457600080fd5b505af1158015613268573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061328d9190613970565b5050505050565b6000806000806000806132a687612a26565b6001600160a01b038f16600090815260076020526040902054959b509399509197509550935091506132d89088612a75565b6001600160a01b038a166000908152600760209081526040808320939093556006905220546133079087612a75565b6001600160a01b03808b1660009081526006602052604080822093909355908a168152205461333690866122c6565b6001600160a01b03891660009081526006602052604090205561335881613554565b61336284836135dc565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516133a791815260200190565b60405180910390a3505050505050505050565b6000806000806000806133cc87612a26565b6001600160a01b038f16600090815260066020526040902054959b509399509197509550935091506133fe9087612a75565b6001600160a01b03808b16600090815260066020908152604080832094909455918b1681526007909152205461343490846122c6565b6001600160a01b03891660009081526007602090815260408083209390935560069052205461333690866122c6565b60008060008060008061347587612a26565b6001600160a01b038f16600090815260076020526040902054959b509399509197509550935091506134a79088612a75565b6001600160a01b038a166000908152600760209081526040808320939093556006905220546133fe9087612a75565b6000806000806000806134e887612a26565b6001600160a01b038f16600090815260066020526040902054959b509399509197509550935091506133079087612a75565b6000610ba26103e8612b156024548561224790919063ffffffff16565b6000610ba26103e8612b156026548561224790919063ffffffff16565b600061355e612a03565b9050600061356c8383612247565b3060009081526006602052604090205490915061358990826122c6565b30600090815260066020908152604080832093909355600e9052205460ff1615611a6f57306000908152600760205260409020546135c790846122c6565b30600090815260076020526040902055505050565b6013546135e99083612a75565b6013556014546135f990826122c6565b6014555050565b60008083601f840112613611578182fd5b50813567ffffffffffffffff811115613628578182fd5b6020830191508360208260051b850101111561364357600080fd5b9250929050565b60006020828403121561365b578081fd5b81356110b381613cbe565b600060208284031215613677578081fd5b81516110b381613cbe565b60008060408385031215613694578081fd5b823561369f81613cbe565b915060208301356136af81613cbe565b809150509250929050565b6000806000606084860312156136ce578081fd5b83356136d981613cbe565b925060208401356136e981613cbe565b929592945050506040919091013590565b600080600080600060608688031215613711578081fd5b853561371c81613cbe565b9450602086013567ffffffffffffffff80821115613738578283fd5b61374489838a01613600565b9096509450604088013591508082111561375c578283fd5b5061376988828901613600565b969995985093965092949392505050565b6000806000806060858703121561378f578384fd5b843561379a81613cbe565b9350602085013567ffffffffffffffff8111156137b5578384fd5b6137c187828801613600565b9598909750949560400135949350505050565b600080604083850312156137e6578182fd5b82356137f181613cbe565b946020939093013593505050565b60008060208385031215613811578182fd5b823567ffffffffffffffff811115613827578283fd5b61383385828601613600565b90969095509350505050565b600080600060408486031215613853578283fd5b833567ffffffffffffffff811115613869578384fd5b61387586828701613600565b909450925050602084013561388981613cd6565b809150509250925092565b6000602082840312156138a5578081fd5b81356110b381613cd6565b6000602082840312156138c1578081fd5b81516110b381613cd6565b600080604083850312156138de578182fd5b82356137f181613cd6565b60008060408385031215613694578182fd5b60006020828403121561390c578081fd5b5035919050565b600060208284031215613924578081fd5b5051919050565b6000806040838503121561393d578182fd5b8235915060208301356136af81613cd6565b60008060408385031215613961578182fd5b50508035926020909101359150565b600080600060608486031215613984578081fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156139b2578182fd5b5050823594602084013594506040840135936060013592509050565b6000815180845260208085019450808401835b83811015613a065781516001600160a01b0316875295820195908201906001016139e1565b509495945050505050565b6000602080835283518082850152825b81811015613a3d57858101830151858201604001528201613a21565b81811115613a4e5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000613ab260408301846139ce565b949350505050565b85815284602082015260a060408201526000613ad960a08301866139ce565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115613b0957613b09613ca8565b500190565b600082613b2957634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115613b69578160001904821115613b4f57613b4f613ca8565b80851615613b5c57918102915b93841c9390800290613b33565b509250929050565b60006110b360ff841683600082613b8a57506001610ba2565b81613b9757506000610ba2565b8160018114613bad5760028114613bb757613bd3565b6001915050610ba2565b60ff841115613bc857613bc8613ca8565b50506001821b610ba2565b5060208310610133831016604e8410600b8410161715613bf6575081810a610ba2565b613c008383613b2e565b8060001904821115613c1457613c14613ca8565b029392505050565b6000816000190483118215151615613c3657613c36613ca8565b500290565b600082821015613c4d57613c4d613ca8565b500390565b600181811c90821680613c6657607f821691505b60208210811415613c8757634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613ca157613ca1613ca8565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114613cd357600080fd5b50565b8015158114613cd357600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220dbf773cf140de84023006cd585fe5928abada0d1d69ae29f24667fb64dbb111064736f6c63430008040033