0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a457c2d711610066578063a457c2d7146101f4578063a9059cbb14610207578063da1919b31461021a578063dd62ed3e1461022d57600080fd5b806342966c681461019b57806370a08231146101b057806379cc6790146101d957806395d89b41146101ec57600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461017557806340c10f191461018857600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b610102610266565b60405161010f9190610a09565b60405180910390f35b61012b610126366004610a7a565b6102f8565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b366004610aa4565b61030e565b60055460405160ff909116815260200161010f565b61012b610183366004610a7a565b610388565b61012b610196366004610a7a565b6103be565b6101ae6101a9366004610ae0565b6103ca565b005b61013f6101be366004610af9565b6001600160a01b031660009081526020819052604090205490565b6101ae6101e7366004610a7a565b6103d7565b6101026103e5565b61012b610202366004610a7a565b6103f4565b61012b610215366004610a7a565b610443565b6101ae610228366004610a7a565b610450565b61013f61023b366004610b14565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60606003805461027590610b47565b80601f01602080910402602001604051908101604052809291908181526020018280546102a190610b47565b80156102ee5780601f106102c3576101008083540402835291602001916102ee565b820191906000526020600020905b8154815290600101906020018083116102d157829003601f168201915b5050505050905090565b600061030533848461045a565b50600192915050565b600061031b848484610583565b61037e843361037985604051806060016040528060278152602001610c30602791396001600160a01b038a16600090815260016020526040812090335b6001600160a01b031681526020810191909152604001600020549190610703565b61045a565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610305918590610379908661073d565b600061030583836107a3565b6103d43382610882565b50565b6103e1828261097c565b5050565b60606004805461027590610b47565b6000610305338461037985604051806060016040528060248152602001610c0c602491393360009081526001602090815260408083206001600160a01b038d1684529091529020549190610703565b6000610305338484610583565b6103e182826107a3565b6001600160a01b0383166104c15760405162461bcd60e51b815260206004820152602360248201527f4b4950373a20617070726f76652066726f6d20746865207a65726f206164647260448201526265737360e81b60648201526084015b60405180910390fd5b6001600160a01b0382166105215760405162461bcd60e51b815260206004820152602160248201527f4b4950373a20617070726f766520746f20746865207a65726f206164647265736044820152607360f81b60648201526084016104b8565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166105e55760405162461bcd60e51b8152602060048201526024808201527f4b4950373a207472616e736665722066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104b8565b6001600160a01b0382166106465760405162461bcd60e51b815260206004820152602260248201527f4b4950373a207472616e7366657220746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104b8565b61068381604051806060016040528060258152602001610c57602591396001600160a01b0386166000908152602081905260409020549190610703565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546106b2908261073d565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610576565b600081848411156107275760405162461bcd60e51b81526004016104b89190610a09565b5060006107348486610b98565b95945050505050565b60008061074a8385610baf565b90508381101561079c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104b8565b9392505050565b6001600160a01b0382166107f95760405162461bcd60e51b815260206004820152601e60248201527f4b4950373a206d696e7420746f20746865207a65726f2061646472657373000060448201526064016104b8565b600254610806908261073d565b6002556001600160a01b03821660009081526020819052604090205461082c908261073d565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b6001600160a01b0382166108d85760405162461bcd60e51b815260206004820181905260248201527f4b4950373a206275726e2066726f6d20746865207a65726f206164647265737360448201526064016104b8565b61091581604051806060016040528060218152602001610bc8602191396001600160a01b0385166000908152602081905260409020549190610703565b6001600160a01b03831660009081526020819052604090205560025461093b90826109c7565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610876565b6109868282610882565b6103e1823361037984604051806060016040528060238152602001610be9602391396001600160a01b03881660009081526001602052604081209033610358565b600061079c83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250610703565b600060208083528351808285015260005b81811015610a3657858101830151858201604001528201610a1a565b81811115610a48576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610a7557600080fd5b919050565b60008060408385031215610a8d57600080fd5b610a9683610a5e565b946020939093013593505050565b600080600060608486031215610ab957600080fd5b610ac284610a5e565b9250610ad060208501610a5e565b9150604084013590509250925092565b600060208284031215610af257600080fd5b5035919050565b600060208284031215610b0b57600080fd5b61079c82610a5e565b60008060408385031215610b2757600080fd5b610b3083610a5e565b9150610b3e60208401610a5e565b90509250929050565b600181811c90821680610b5b57607f821691505b60208210811415610b7c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015610baa57610baa610b82565b500390565b60008219821115610bc257610bc2610b82565b50019056fe4b4950373a206275726e20616d6f756e7420657863656564732062616c616e63654b4950373a206275726e20616d6f756e74206578636565647320616c6c6f77616e63654b4950373a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4b4950373a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654b4950373a207472616e7366657220616d6f756e7420657863656564732062616c616e6365a2646970667358221220389361b1a257a03fe699668755975a527fb72bb5657087e2bab105b3236c9eba64736f6c634300080b0033