0x6080604052600436106101025760003560e01c8063715018a611610095578063a9059cbb11610064578063a9059cbb146102c3578063c9567bf9146102e3578063dd62ed3e146102f8578063f2fde38b14610330578063ffb54a991461035057600080fd5b8063715018a61461025b57806379cc6790146102705780638da5cb5b1461029057806395d89b41146102ae57600080fd5b8063313ce567116100d1578063313ce567146101ad57806342966c68146101d457806349bd5a5e146101f657806370a082311461022e57600080fd5b806306fdde031461010e578063095ea7b31461013957806318160ddd1461016957806323b872dd1461018d57600080fd5b3661010957005b600080fd5b34801561011a57600080fd5b5061012361036a565b6040516101309190610d58565b60405180910390f35b34801561014557600080fd5b50610159610154366004610dbb565b6103f8565b6040519015158152602001610130565b34801561017557600080fd5b5061017f60025481565b604051908152602001610130565b34801561019957600080fd5b506101596101a8366004610de7565b610412565b3480156101b957600080fd5b506101c2601281565b60405160ff9091168152602001610130565b3480156101e057600080fd5b506101f46101ef366004610e28565b610436565b005b34801561020257600080fd5b50600854610216906001600160a01b031681565b6040516001600160a01b039091168152602001610130565b34801561023a57600080fd5b5061017f610249366004610e41565b60036020526000908152604090205481565b34801561026757600080fd5b506101f4610443565b34801561027c57600080fd5b506101f461028b366004610dbb565b610457565b34801561029c57600080fd5b50600b546001600160a01b0316610216565b3480156102ba57600080fd5b50610123610470565b3480156102cf57600080fd5b506101596102de366004610dbb565b61047d565b3480156102ef57600080fd5b506101f461048b565b34801561030457600080fd5b5061017f610313366004610e65565b600460209081526000928352604080842090915290825290205481565b34801561033c57600080fd5b506101f461034b366004610e41565b610869565b34801561035c57600080fd5b506005546101599060ff1681565b6000805461037790610e9e565b80601f01602080910402602001604051908101604052809291908181526020018280546103a390610e9e565b80156103f05780601f106103c5576101008083540402835291602001916103f0565b820191906000526020600020905b8154815290600101906020018083116103d357829003601f168201915b505050505081565b6000336104068185856108a4565b60019150505b92915050565b6000336104208582856108b6565b61042b858585610935565b506001949350505050565b6104403382610a4a565b50565b61044b610a80565b6104556000610aad565b565b6104628233836108b6565b61046c8282610a4a565b5050565b6001805461037790610e9e565b600033610406818585610935565b610493610a80565b60055460ff16156104eb5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479204f70656e00000000000000000060448201526064015b60405180910390fd5b600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600c546105229130916108a4565b600960009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610575573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105999190610ed8565b6001600160a01b031663c9c6539630600960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061f9190610ed8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561066c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106909190610ed8565b600880546001600160a01b0319166001600160a01b0392831690811790915560095460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b3906044016020604051808303816000875af11580156106f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071b9190610ef5565b506008546001600160a01b0390811660009081526006602052604090819020805460ff1916600117905560095490516370a0823160e01b81523060048201819052919092169163f305d71991479181906370a0823190602401602060405180830381865afa158015610791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b59190610f17565b6000806107ca600b546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610832573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108579190610f30565b50506005805460ff1916600117905550565b610871610a80565b6001600160a01b03811661089b57604051631e4fbdf760e01b8152600060048201526024016104e2565b61044081610aad565b6108b18383836001610aff565b505050565b6001600160a01b0380841660009081526004602090815260408083209386168352929052205460001981101561092f578181101561092057604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016104e2565b61092f84848484036000610aff565b50505050565b6001600160a01b03831661095f57604051634b637e8f60e11b8152600060048201526024016104e2565b6001600160a01b0382166109895760405163ec442f0560e01b8152600060048201526024016104e2565b6001600160a01b038316600090815260036020526040902054818110156109dc5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016104e2565b6001600160a01b0380851660008181526003602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a3c9086815260200190565b60405180910390a350505050565b6001600160a01b038216610a7457604051634b637e8f60e11b8152600060048201526024016104e2565b61046c82600083610bc6565b600b546001600160a01b031633146104555760405163118cdaa760e01b81523360048201526024016104e2565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038416610b295760405163e602df0560e01b8152600060048201526024016104e2565b6001600160a01b038316610b5357604051634a1406b160e11b8152600060048201526024016104e2565b6001600160a01b038085166000908152600460209081526040808320938716835292905220829055801561092f57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a3c91815260200190565b6001600160a01b038316610c34578060026000828254610be69190610f74565b90915550506001600160a01b0382166000908152600760205260408120805460019290610c1790849060ff16610f87565b92506101000a81548160ff021916908360ff160217905550610ccb565b6001600160a01b0383811660009081526003602090815260408083205460079092528083205493861683529091205460ff9283169216900381019082821015610ca95760405163391434e360e21b81526001600160a01b038616600482015260248101839052604481018490526064016104e2565b50506001600160a01b0383166000908152600360205260409020805482900390555b6001600160a01b038216610ce757600280548290039055610d06565b6001600160a01b03821660009081526003602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d4b91815260200190565b60405180910390a3505050565b602081526000825180602084015260005b81811015610d865760208186018101516040868401015201610d69565b506000604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461044057600080fd5b60008060408385031215610dce57600080fd5b8235610dd981610da6565b946020939093013593505050565b600080600060608486031215610dfc57600080fd5b8335610e0781610da6565b92506020840135610e1781610da6565b929592945050506040919091013590565b600060208284031215610e3a57600080fd5b5035919050565b600060208284031215610e5357600080fd5b8135610e5e81610da6565b9392505050565b60008060408385031215610e7857600080fd5b8235610e8381610da6565b91506020830135610e9381610da6565b809150509250929050565b600181811c90821680610eb257607f821691505b602082108103610ed257634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610eea57600080fd5b8151610e5e81610da6565b600060208284031215610f0757600080fd5b81518015158114610e5e57600080fd5b600060208284031215610f2957600080fd5b5051919050565b600080600060608486031215610f4557600080fd5b5050815160208301516040909301519094929350919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561040c5761040c610f5e565b60ff818116838216019081111561040c5761040c610f5e56fea2646970667358221220626627cf62e91a5c32c35c8f529f10bc25bd689d08155a5a5a18e86ca74ae2e364736f6c634300081c0033
0x60806040526005805460ff1916905534801561001a57600080fd5b50336040518060400160405280600681526020016508cd8c2e6d0b60d31b8152506040518060400160405280600681526020016508c9882a690b60d31b815250816000908161006991906103a0565b50600161007682826103a0565b5050506001600160a01b0381166100a857604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6100b1816100e3565b506a084595161401484a000000600c556100de6100d6600b546001600160a01b031690565b600c54610135565b6104a6565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661015f5760405163ec442f0560e01b81526000600482015260240161009f565b61016b6000838361016f565b5050565b6001600160a01b0383166101dd57806002600082825461018f9190610474565b90915550506001600160a01b03821660009081526007602052604081208054600192906101c090849060ff1661048d565b92506101000a81548160ff021916908360ff160217905550610274565b6001600160a01b0383811660009081526003602090815260408083205460079092528083205493861683529091205460ff92831692169003810190828210156102525760405163391434e360e21b81526001600160a01b0386166004820152602481018390526044810184905260640161009f565b50506001600160a01b0383166000908152600360205260409020805482900390555b6001600160a01b038216610290576002805482900390556102af565b6001600160a01b03821660009081526003602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516102f491815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061032b57607f821691505b60208210810361034b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561039b57806000526020600020601f840160051c810160208510156103785750805b601f840160051c820191505b818110156103985760008155600101610384565b50505b505050565b81516001600160401b038111156103b9576103b9610301565b6103cd816103c78454610317565b84610351565b6020601f82116001811461040157600083156103e95750848201515b600019600385901b1c1916600184901b178455610398565b600084815260208120601f198516915b828110156104315787850151825560209485019460019092019101610411565b508482101561044f5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b808201808211156104875761048761045e565b92915050565b60ff81811683821601908111156104875761048761045e565b610fd6806104b56000396000f3fe6080604052600436106101025760003560e01c8063715018a611610095578063a9059cbb11610064578063a9059cbb146102c3578063c9567bf9146102e3578063dd62ed3e146102f8578063f2fde38b14610330578063ffb54a991461035057600080fd5b8063715018a61461025b57806379cc6790146102705780638da5cb5b1461029057806395d89b41146102ae57600080fd5b8063313ce567116100d1578063313ce567146101ad57806342966c68146101d457806349bd5a5e146101f657806370a082311461022e57600080fd5b806306fdde031461010e578063095ea7b31461013957806318160ddd1461016957806323b872dd1461018d57600080fd5b3661010957005b600080fd5b34801561011a57600080fd5b5061012361036a565b6040516101309190610d58565b60405180910390f35b34801561014557600080fd5b50610159610154366004610dbb565b6103f8565b6040519015158152602001610130565b34801561017557600080fd5b5061017f60025481565b604051908152602001610130565b34801561019957600080fd5b506101596101a8366004610de7565b610412565b3480156101b957600080fd5b506101c2601281565b60405160ff9091168152602001610130565b3480156101e057600080fd5b506101f46101ef366004610e28565b610436565b005b34801561020257600080fd5b50600854610216906001600160a01b031681565b6040516001600160a01b039091168152602001610130565b34801561023a57600080fd5b5061017f610249366004610e41565b60036020526000908152604090205481565b34801561026757600080fd5b506101f4610443565b34801561027c57600080fd5b506101f461028b366004610dbb565b610457565b34801561029c57600080fd5b50600b546001600160a01b0316610216565b3480156102ba57600080fd5b50610123610470565b3480156102cf57600080fd5b506101596102de366004610dbb565b61047d565b3480156102ef57600080fd5b506101f461048b565b34801561030457600080fd5b5061017f610313366004610e65565b600460209081526000928352604080842090915290825290205481565b34801561033c57600080fd5b506101f461034b366004610e41565b610869565b34801561035c57600080fd5b506005546101599060ff1681565b6000805461037790610e9e565b80601f01602080910402602001604051908101604052809291908181526020018280546103a390610e9e565b80156103f05780601f106103c5576101008083540402835291602001916103f0565b820191906000526020600020905b8154815290600101906020018083116103d357829003601f168201915b505050505081565b6000336104068185856108a4565b60019150505b92915050565b6000336104208582856108b6565b61042b858585610935565b506001949350505050565b6104403382610a4a565b50565b61044b610a80565b6104556000610aad565b565b6104628233836108b6565b61046c8282610a4a565b5050565b6001805461037790610e9e565b600033610406818585610935565b610493610a80565b60055460ff16156104eb5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479204f70656e00000000000000000060448201526064015b60405180910390fd5b600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600c546105229130916108a4565b600960009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610575573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105999190610ed8565b6001600160a01b031663c9c6539630600960009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061f9190610ed8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561066c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106909190610ed8565b600880546001600160a01b0319166001600160a01b0392831690811790915560095460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b3906044016020604051808303816000875af11580156106f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071b9190610ef5565b506008546001600160a01b0390811660009081526006602052604090819020805460ff1916600117905560095490516370a0823160e01b81523060048201819052919092169163f305d71991479181906370a0823190602401602060405180830381865afa158015610791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b59190610f17565b6000806107ca600b546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610832573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108579190610f30565b50506005805460ff1916600117905550565b610871610a80565b6001600160a01b03811661089b57604051631e4fbdf760e01b8152600060048201526024016104e2565b61044081610aad565b6108b18383836001610aff565b505050565b6001600160a01b0380841660009081526004602090815260408083209386168352929052205460001981101561092f578181101561092057604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016104e2565b61092f84848484036000610aff565b50505050565b6001600160a01b03831661095f57604051634b637e8f60e11b8152600060048201526024016104e2565b6001600160a01b0382166109895760405163ec442f0560e01b8152600060048201526024016104e2565b6001600160a01b038316600090815260036020526040902054818110156109dc5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016104e2565b6001600160a01b0380851660008181526003602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a3c9086815260200190565b60405180910390a350505050565b6001600160a01b038216610a7457604051634b637e8f60e11b8152600060048201526024016104e2565b61046c82600083610bc6565b600b546001600160a01b031633146104555760405163118cdaa760e01b81523360048201526024016104e2565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038416610b295760405163e602df0560e01b8152600060048201526024016104e2565b6001600160a01b038316610b5357604051634a1406b160e11b8152600060048201526024016104e2565b6001600160a01b038085166000908152600460209081526040808320938716835292905220829055801561092f57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a3c91815260200190565b6001600160a01b038316610c34578060026000828254610be69190610f74565b90915550506001600160a01b0382166000908152600760205260408120805460019290610c1790849060ff16610f87565b92506101000a81548160ff021916908360ff160217905550610ccb565b6001600160a01b0383811660009081526003602090815260408083205460079092528083205493861683529091205460ff9283169216900381019082821015610ca95760405163391434e360e21b81526001600160a01b038616600482015260248101839052604481018490526064016104e2565b50506001600160a01b0383166000908152600360205260409020805482900390555b6001600160a01b038216610ce757600280548290039055610d06565b6001600160a01b03821660009081526003602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d4b91815260200190565b60405180910390a3505050565b602081526000825180602084015260005b81811015610d865760208186018101516040868401015201610d69565b506000604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461044057600080fd5b60008060408385031215610dce57600080fd5b8235610dd981610da6565b946020939093013593505050565b600080600060608486031215610dfc57600080fd5b8335610e0781610da6565b92506020840135610e1781610da6565b929592945050506040919091013590565b600060208284031215610e3a57600080fd5b5035919050565b600060208284031215610e5357600080fd5b8135610e5e81610da6565b9392505050565b60008060408385031215610e7857600080fd5b8235610e8381610da6565b91506020830135610e9381610da6565b809150509250929050565b600181811c90821680610eb257607f821691505b602082108103610ed257634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610eea57600080fd5b8151610e5e81610da6565b600060208284031215610f0757600080fd5b81518015158114610e5e57600080fd5b600060208284031215610f2957600080fd5b5051919050565b600080600060608486031215610f4557600080fd5b5050815160208301516040909301519094929350919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561040c5761040c610f5e565b60ff818116838216019081111561040c5761040c610f5e56fea2646970667358221220626627cf62e91a5c32c35c8f529f10bc25bd689d08155a5a5a18e86ca74ae2e364736f6c634300081c0033