0x608060405234801561001057600080fd5b50600436106101215760003560e01c806370a08231116100ad578063a457c2d711610071578063a457c2d714610265578063a9059cbb14610278578063dd62ed3e1461028b578063f242ab41146102c4578063f2fde38b146102d757600080fd5b806370a0823114610206578063715018a61461022f5780637fff2b90146102395780638da5cb5b1461024c57806395d89b411461025d57600080fd5b80631a026c96116100f45780631a026c96146101a45780632033de93146101b757806323b872dd146101cb578063313ce567146101de57806339509351146101f357600080fd5b806306fdde03146101265780630758d92414610144578063095ea7b31461016f57806318160ddd14610192575b600080fd5b61012e6102ea565b60405161013b9190610bbe565b60405180910390f35b600354610157906001600160a01b031681565b6040516001600160a01b03909116815260200161013b565b61018261017d366004610c2f565b61037c565b604051901515815260200161013b565b6008545b60405190815260200161013b565b600954610157906001600160a01b031681565b60095461018290600160a01b900460ff1681565b6101826101d9366004610c59565b610393565b60075460405160ff909116815260200161013b565b610182610201366004610c2f565b61043f565b610196610214366004610c95565b6001600160a01b031660009081526001602052604090205490565b61023761047b565b005b610237610247366004610cb0565b6104ef565b6000546001600160a01b0316610157565b61012e610537565b610182610273366004610c2f565b610546565b610182610286366004610c2f565b6105dc565b610196610299366004610cd2565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600454610157906001600160a01b031681565b6102376102e5366004610c95565b6105e9565b6060600580546102f990610d05565b80601f016020809104026020016040519081016040528092919081815260200182805461032590610d05565b80156103725780601f1061034757610100808354040283529160200191610372565b820191906000526020600020905b81548152906001019060200180831161035557829003601f168201915b5050505050905090565b600061038933848461079b565b5060015b92915050565b60006103a08484846108bf565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156104275760405162461bcd60e51b815260206004820152602560248201527f57453a207472616e7366657220616d6f756e74206578636565647320616c6c6f60448201526477616e636560d81b60648201526084015b60405180910390fd5b610434853385840361079b565b506001949350505050565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610389918590610476908690610d56565b61079b565b6000546001600160a01b031633146104a55760405162461bcd60e51b815260040161041e90610d6e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146105195760405162461bcd60e51b815260040161041e90610d6e565b60098054911515600160a01b0260ff60a01b19909216919091179055565b6060600680546102f990610d05565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156105c55760405162461bcd60e51b815260206004820152602260248201527f57453a2064656372656173656420616c6c6f77616e63652062656c6f77207a65604482015261726f60f01b606482015260840161041e565b6105d2338585840361079b565b5060019392505050565b60006103893384846108bf565b6000546001600160a01b031633146106135760405162461bcd60e51b815260040161041e90610d6e565b6001600160a01b0381166106785760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161041e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000826106e25750600061038d565b60006106ee8385610da3565b9050826106fb8583610dc2565b146107525760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161041e565b9392505050565b600061075283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610b87565b6001600160a01b0383166107fd5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161041e565b6001600160a01b03821661085e5760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161041e565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109205760405162461bcd60e51b815260206004820152602260248201527f57453a207472616e736665722066726f6d20746865207a65726f206164647265604482015261737360f01b606482015260840161041e565b6001600160a01b0382166109765760405162461bcd60e51b815260206004820181905260248201527f57453a207472616e7366657220746f20746865207a65726f2061646472657373604482015260640161041e565b600081116109dc5760405162461bcd60e51b815260206004820152602d60248201527f57453a205472616e7366657220616d6f756e74206d757374206265206772656160448201526c746572207468616e207a65726f60981b606482015260840161041e565b600954600160a01b900460ff16158015610a0457506000546001600160a01b03848116911614155b8015610a1e57506000546001600160a01b03838116911614155b15610a81576004546001600160a01b0383811691161415610a815760405162461bcd60e51b815260206004820152601c60248201527f2057453a616e74757768616c65206973206e6f7420656e61626c656400000000604482015260640161041e565b6001600160a01b03831660009081526001602052604090205481811015610af65760405162461bcd60e51b815260206004820152602360248201527f57453a207472616e7366657220616d6f756e7420657863656564732062616c616044820152626e636560e81b606482015260840161041e565b6001600160a01b03808516600090815260016020526040808220858503905591851681529081208054849290610b2d908490610d56565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b7991815260200190565b60405180910390a350505050565b60008183610ba85760405162461bcd60e51b815260040161041e9190610bbe565b506000610bb58486610dc2565b95945050505050565b600060208083528351808285015260005b81811015610beb57858101830151858201604001528201610bcf565b81811115610bfd576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610c2a57600080fd5b919050565b60008060408385031215610c4257600080fd5b610c4b83610c13565b946020939093013593505050565b600080600060608486031215610c6e57600080fd5b610c7784610c13565b9250610c8560208501610c13565b9150604084013590509250925092565b600060208284031215610ca757600080fd5b61075282610c13565b600060208284031215610cc257600080fd5b8135801515811461075257600080fd5b60008060408385031215610ce557600080fd5b610cee83610c13565b9150610cfc60208401610c13565b90509250929050565b600181811c90821680610d1957607f821691505b60208210811415610d3a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610d6957610d69610d40565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000816000190483118215151615610dbd57610dbd610d40565b500290565b600082610ddf57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220215ccb8a7d5e4c493035d35cc6ab3335ed973117791b175e954dfbc242dc456164736f6c63430008090033
0x60806040526009805460ff60a01b1916600160a01b1790553480156200002457600080fd5b506040516200156e3803806200156e833981016040819052620000479162000613565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360408051808201909152600f8082526e293cb7b9b43490283932b230ba37b960891b6020909201918252620000be916005916200056d565b50604080518082019091526003808252620524f560ec1b6020909201918252620000eb916006916200056d565b5060078054600960ff19909116811790915569d3c21bcecced65653600600881905581546001600160a01b0319166001600160a01b038416179091556200015e906103e8906200014a9061032062000453602090811b620006d317901c565b620004e760201b620007591790919060201c565b60016000620001756000546001600160a01b031690565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550620001bd6103e86200014a60c86008546200045360201b620006d31790919060201c565b6009546001600160a01b031660009081526001602090815260409182902092909255805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a01559260048083019392829003018186803b1580156200022757600080fd5b505afa1580156200023c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000262919062000613565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002ab57600080fd5b505afa158015620002c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e6919062000613565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200032f57600080fd5b505af115801562000344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036a919062000613565b600480546001600160a01b03199081166001600160a01b039384161790915560038054909116838316179055600054166001600160a01b0316306001600160a01b03166000805160206200154e833981519152620003e26103e86200014a6103206008546200045360201b620006d31790919060201c565b60405190815260200160405180910390a36009546008546001600160a01b039091169030906000805160206200154e833981519152906200043a906103e8906200014a9060c862000453602090811b620006d317901c565b60405190815260200160405180910390a3505062000724565b6000826200046457506000620004e1565b60006200047283856200063e565b9050826200048185836200066c565b14620004de5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b6000620004de83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200053160201b60201c565b60008183620005555760405162461bcd60e51b8152600401620004d591906200068f565b5060006200056484866200066c565b95945050505050565b8280546200057b90620006e7565b90600052602060002090601f0160209004810192826200059f5760008555620005ea565b82601f10620005ba57805160ff1916838001178555620005ea565b82800160010185558215620005ea579182015b82811115620005ea578251825591602001919060010190620005cd565b50620005f8929150620005fc565b5090565b5b80821115620005f85760008155600101620005fd565b6000602082840312156200062657600080fd5b81516001600160a01b0381168114620004de57600080fd5b60008160001904831182151516156200066757634e487b7160e01b600052601160045260246000fd5b500290565b6000826200068a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b81811015620006be57858101830151858201604001528201620006a0565b81811115620006d1576000604083870101525b50601f01601f1916929092016040019392505050565b600181811c90821680620006fc57607f821691505b602082108114156200071e57634e487b7160e01b600052602260045260246000fd5b50919050565b610e1a80620007346000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806370a08231116100ad578063a457c2d711610071578063a457c2d714610265578063a9059cbb14610278578063dd62ed3e1461028b578063f242ab41146102c4578063f2fde38b146102d757600080fd5b806370a0823114610206578063715018a61461022f5780637fff2b90146102395780638da5cb5b1461024c57806395d89b411461025d57600080fd5b80631a026c96116100f45780631a026c96146101a45780632033de93146101b757806323b872dd146101cb578063313ce567146101de57806339509351146101f357600080fd5b806306fdde03146101265780630758d92414610144578063095ea7b31461016f57806318160ddd14610192575b600080fd5b61012e6102ea565b60405161013b9190610bbe565b60405180910390f35b600354610157906001600160a01b031681565b6040516001600160a01b03909116815260200161013b565b61018261017d366004610c2f565b61037c565b604051901515815260200161013b565b6008545b60405190815260200161013b565b600954610157906001600160a01b031681565b60095461018290600160a01b900460ff1681565b6101826101d9366004610c59565b610393565b60075460405160ff909116815260200161013b565b610182610201366004610c2f565b61043f565b610196610214366004610c95565b6001600160a01b031660009081526001602052604090205490565b61023761047b565b005b610237610247366004610cb0565b6104ef565b6000546001600160a01b0316610157565b61012e610537565b610182610273366004610c2f565b610546565b610182610286366004610c2f565b6105dc565b610196610299366004610cd2565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600454610157906001600160a01b031681565b6102376102e5366004610c95565b6105e9565b6060600580546102f990610d05565b80601f016020809104026020016040519081016040528092919081815260200182805461032590610d05565b80156103725780601f1061034757610100808354040283529160200191610372565b820191906000526020600020905b81548152906001019060200180831161035557829003601f168201915b5050505050905090565b600061038933848461079b565b5060015b92915050565b60006103a08484846108bf565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156104275760405162461bcd60e51b815260206004820152602560248201527f57453a207472616e7366657220616d6f756e74206578636565647320616c6c6f60448201526477616e636560d81b60648201526084015b60405180910390fd5b610434853385840361079b565b506001949350505050565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610389918590610476908690610d56565b61079b565b6000546001600160a01b031633146104a55760405162461bcd60e51b815260040161041e90610d6e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146105195760405162461bcd60e51b815260040161041e90610d6e565b60098054911515600160a01b0260ff60a01b19909216919091179055565b6060600680546102f990610d05565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156105c55760405162461bcd60e51b815260206004820152602260248201527f57453a2064656372656173656420616c6c6f77616e63652062656c6f77207a65604482015261726f60f01b606482015260840161041e565b6105d2338585840361079b565b5060019392505050565b60006103893384846108bf565b6000546001600160a01b031633146106135760405162461bcd60e51b815260040161041e90610d6e565b6001600160a01b0381166106785760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161041e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000826106e25750600061038d565b60006106ee8385610da3565b9050826106fb8583610dc2565b146107525760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161041e565b9392505050565b600061075283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610b87565b6001600160a01b0383166107fd5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161041e565b6001600160a01b03821661085e5760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161041e565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109205760405162461bcd60e51b815260206004820152602260248201527f57453a207472616e736665722066726f6d20746865207a65726f206164647265604482015261737360f01b606482015260840161041e565b6001600160a01b0382166109765760405162461bcd60e51b815260206004820181905260248201527f57453a207472616e7366657220746f20746865207a65726f2061646472657373604482015260640161041e565b600081116109dc5760405162461bcd60e51b815260206004820152602d60248201527f57453a205472616e7366657220616d6f756e74206d757374206265206772656160448201526c746572207468616e207a65726f60981b606482015260840161041e565b600954600160a01b900460ff16158015610a0457506000546001600160a01b03848116911614155b8015610a1e57506000546001600160a01b03838116911614155b15610a81576004546001600160a01b0383811691161415610a815760405162461bcd60e51b815260206004820152601c60248201527f2057453a616e74757768616c65206973206e6f7420656e61626c656400000000604482015260640161041e565b6001600160a01b03831660009081526001602052604090205481811015610af65760405162461bcd60e51b815260206004820152602360248201527f57453a207472616e7366657220616d6f756e7420657863656564732062616c616044820152626e636560e81b606482015260840161041e565b6001600160a01b03808516600090815260016020526040808220858503905591851681529081208054849290610b2d908490610d56565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b7991815260200190565b60405180910390a350505050565b60008183610ba85760405162461bcd60e51b815260040161041e9190610bbe565b506000610bb58486610dc2565b95945050505050565b600060208083528351808285015260005b81811015610beb57858101830151858201604001528201610bcf565b81811115610bfd576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610c2a57600080fd5b919050565b60008060408385031215610c4257600080fd5b610c4b83610c13565b946020939093013593505050565b600080600060608486031215610c6e57600080fd5b610c7784610c13565b9250610c8560208501610c13565b9150604084013590509250925092565b600060208284031215610ca757600080fd5b61075282610c13565b600060208284031215610cc257600080fd5b8135801515811461075257600080fd5b60008060408385031215610ce557600080fd5b610cee83610c13565b9150610cfc60208401610c13565b90509250929050565b600181811c90821680610d1957607f821691505b60208210811415610d3a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610d6957610d69610d40565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000816000190483118215151615610dbd57610dbd610d40565b500290565b600082610ddf57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220215ccb8a7d5e4c493035d35cc6ab3335ed973117791b175e954dfbc242dc456164736f6c63430008090033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000a71d0588eaf47f12b13cf8ec750430d21df04974