60806040526064620000146012600a62000254565b62000025906402540be4006200026b565b62000031919062000285565b6001556005805460ff60a01b191690553480156200004d575f80fd5b505f80546001600160a01b031916339081178255815260046020526040808220805460ff199081166001908117909255308452918320805483168217905561dead9092527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd80549091169091179055620000ca6012600a62000254565b620000db906402540be4006200026b565b335f81815260026020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200011d6012600a62000254565b6200012e906402540be4006200026b565b60405190815260200160405180910390a3620002a5565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200019957815f19048211156200017d576200017d62000145565b808516156200018b57918102915b93841c93908002906200015e565b509250929050565b5f82620001b1575060016200024e565b81620001bf57505f6200024e565b8160018114620001d85760028114620001e35762000203565b60019150506200024e565b60ff841115620001f757620001f762000145565b50506001821b6200024e565b5060208310610133831016604e8410600b841016171562000228575081810a6200024e565b62000234838362000159565b805f19048211156200024a576200024a62000145565b0290505b92915050565b5f6200026460ff841683620001a1565b9392505050565b80820281158282048414176200024e576200024e62000145565b5f82620002a057634e487b7160e01b5f52601260045260245ffd5b500490565b610fbb80620002b35f395ff3fe60806040526004361061013f575f3560e01c8063715018a6116100b357806395d89b411161006d57806395d89b41146103c0578063a9059cbb146103f1578063c4d66de814610410578063dd62ed3e1461042f578063e2fa693714610473578063f429389014610492575f80fd5b8063715018a6146102e25780638220810c146102f657806382bf293c146103245780638427081214610343578063893d20e8146103715780638e2eee84146103a1575f80fd5b80632b112e49116101045780632b112e49146102255780632c28f579146102395780632f54bf6e1461024f578063313ce5671461027c5780636c0a24eb146102a257806370a08231146102b7575f80fd5b806306fdde031461014a578063095ea7b31461019557806311704f52146101c457806318160ddd146101e457806323b872dd14610206575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5061017f6040518060400160405280600a8152602001692237b935a330ba3432b960b11b81525081565b60405161018c9190610c30565b60405180910390f35b3480156101a0575f80fd5b506101b46101af366004610c96565b6104a6565b604051901515815260200161018c565b3480156101cf575f80fd5b506005546101b490600160a01b900460ff1681565b3480156101ef575f80fd5b506101f8610512565b60405190815260200161018c565b348015610211575f80fd5b506101b4610220366004610cbe565b610530565b348015610230575f80fd5b506101f86105ec565b348015610244575f80fd5b5061024d610673565b005b34801561025a575f80fd5b506101b4610269366004610cf7565b5f546001600160a01b0391821691161490565b348015610287575f80fd5b50610290601281565b60405160ff909116815260200161018c565b3480156102ad575f80fd5b506101f860015481565b3480156102c2575f80fd5b506101f86102d1366004610cf7565b60026020525f908152604090205481565b3480156102ed575f80fd5b5061024d610703565b348015610301575f80fd5b506101b4610310366004610cf7565b60066020525f908152604090205460ff1681565b34801561032f575f80fd5b5061024d61033e366004610d10565b61073d565b34801561034e575f80fd5b506101b461035d366004610cf7565b60046020525f908152604090205460ff1681565b34801561037c575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161018c565b3480156103ac575f80fd5b5061024d6103bb366004610d27565b6107ef565b3480156103cb575f80fd5b5061017f60405180604001604052806006815260200165122227a925a360d11b81525081565b3480156103fc575f80fd5b506101b461040b366004610c96565b61088a565b34801561041b575f80fd5b5061024d61042a366004610cf7565b61089d565b34801561043a575f80fd5b506101f8610449366004610daa565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561047e575f80fd5b50600554610389906001600160a01b031681565b34801561049d575f80fd5b5061024d6108e8565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105009086815260200190565b60405180910390a35060015b92915050565b61051e6012600a610ecf565b61052d906402540be400610edd565b81565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f19146105d9576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526003825283812033825290915291909120546105b591849061093d565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b6105e4848484610975565b949350505050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5490919061064b6012600a610ecf565b61065a906402540be400610edd565b6106649190610ef4565b61066e9190610ef4565b905090565b5f546001600160a01b031633146106a55760405162461bcd60e51b815260040161069c90610f07565b60405180910390fd5b600554600160a01b900460ff16156106ee5760405162461bcd60e51b815260206004820152600c60248201526b416c7265616479206c69766560a01b604482015260640161069c565b6005805460ff60a01b1916600160a01b179055565b5f546001600160a01b0316331461072c5760405162461bcd60e51b815260040161069c90610f07565b5f80546001600160a01b0319169055565b5f546001600160a01b031633146107665760405162461bcd60e51b815260040161069c90610f07565b60018110156107b75760405162461bcd60e51b815260206004820152601c60248201527f43616e7420736574206d61782077616c6c65742062656c6f7720312500000000604482015260640161069c565b6064816107c66012600a610ecf565b6107d5906402540be400610edd565b6107df9190610edd565b6107e99190610f27565b60015550565b5f546001600160a01b031633146108185760405162461bcd60e51b815260040161069c90610f07565b5f5b82811015610884578160065f86868581811061083857610838610f46565b905060200201602081019061084d9190610cf7565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905561087d81610f5a565b905061081a565b50505050565b5f610896338484610975565b9392505050565b5f546001600160a01b031633146108c65760405162461bcd60e51b815260040161069c90610f07565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146109115760405162461bcd60e51b815260040161069c90610f07565b60405133904780156108fc02915f818181858888f1935050505015801561093a573d5f803e3d5ffd5b50565b5f81848411156109605760405162461bcd60e51b815260040161069c9190610c30565b505f61096c8486610ef4565b95945050505050565b6001600160a01b0383165f9081526006602052604081205460ff16156109cb5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b604482015260640161069c565b6001600160a01b0384165f9081526004602052604090205460ff16158015610a0b57506001600160a01b0383165f9081526004602052604090205460ff16155b8015610a2557506005546001600160a01b03848116911614155b15610aee576001546001600160a01b0384165f90815260026020526040902054610a50908490610f72565b1115610a9e5760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d697420726561636865640000000000000000604482015260640161069c565b600554600160a01b900460ff16610aee5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161069c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260029091529190912054610b3f91849061093d565b6001600160a01b038086165f908152600260205260408082209390935590851681522054610b6d9083610bd2565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610bc09086815260200190565b60405180910390a35060019392505050565b5f80610bde8385610f72565b9050838110156108965760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161069c565b5f6020808352835180828501525f5b81811015610c5b57858101830151858201604001528201610c3f565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610c91575f80fd5b919050565b5f8060408385031215610ca7575f80fd5b610cb083610c7b565b946020939093013593505050565b5f805f60608486031215610cd0575f80fd5b610cd984610c7b565b9250610ce760208501610c7b565b9150604084013590509250925092565b5f60208284031215610d07575f80fd5b61089682610c7b565b5f60208284031215610d20575f80fd5b5035919050565b5f805f60408486031215610d39575f80fd5b833567ffffffffffffffff80821115610d50575f80fd5b818601915086601f830112610d63575f80fd5b813581811115610d71575f80fd5b8760208260051b8501011115610d85575f80fd5b602092830195509350508401358015158114610d9f575f80fd5b809150509250925092565b5f8060408385031215610dbb575f80fd5b610dc483610c7b565b9150610dd260208401610c7b565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115610e2957815f1904821115610e0f57610e0f610ddb565b80851615610e1c57918102915b93841c9390800290610df4565b509250929050565b5f82610e3f5750600161050c565b81610e4b57505f61050c565b8160018114610e615760028114610e6b57610e87565b600191505061050c565b60ff841115610e7c57610e7c610ddb565b50506001821b61050c565b5060208310610133831016604e8410600b8410161715610eaa575081810a61050c565b610eb48383610def565b805f1904821115610ec757610ec7610ddb565b029392505050565b5f61089660ff841683610e31565b808202811582820484141761050c5761050c610ddb565b8181038181111561050c5761050c610ddb565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f82610f4157634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60018201610f6b57610f6b610ddb565b5060010190565b8082018082111561050c5761050c610ddb56fea2646970667358221220705802e064c1bc0683636e1d95e0fee0b21e8f157fa969e30babc9ca829a185164736f6c63430008150033