//
0x60806040523480156200001157600080fd5b5060405162000f2938038062000f29833981810160405260408110156200003757600080fd5b8151602083018051604051929492938301929190846401000000008211156200005f57600080fd5b9083019060208201858111156200007557600080fd5b82516401000000008111828201881017156200009057600080fd5b82525081516020918201929091019080838360005b83811015620000bf578181015183820152602001620000a5565b50505050905090810190601f168015620000ed5780820380516001836020036101000a031916815260200191505b506040819052600080546001600160a01b03191633178082556001600160a01b0316945092507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091508290a36003805460ff191660ff841617905580516200015d90600490602084019062000166565b5050506200020b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001a957805160ff1916838001178555620001d9565b82800160010185558215620001d9579182015b82811115620001d9578251825591602001919060010190620001bc565b50620001e7929150620001eb565b5090565b6200020891905b80821115620001e75760008155600101620001f2565b90565b610d0e806200021b6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80637afaf03311610097578063a93f21c411610066578063a93f21c4146102f6578063f2fde38b14610323578063f9120af614610349578063feaf968c1461036f576100f5565b80637afaf0331461024b5780638da5cb5b146102705780638f32d59b146102785780639a6fc8f514610294576100f5565b8063313ce567116100d3578063313ce5671461017a57806354fd4d50146101985780637284e416146101a0578063777541361461021d576100f5565b806311a8f413146100fa57806313e7c9d81461011e578063245a7bfc14610156575b600080fd5b610102610377565b604080516001600160501b039092168252519081900360200190f35b6101446004803603602081101561013457600080fd5b50356001600160a01b0316610386565b60408051918252519081900360200190f35b61015e610398565b604080516001600160a01b039092168252519081900360200190f35b6101826103a7565b6040805160ff9092168252519081900360200190f35b610144610436565b6101a861048c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101e25781810151838201526020016101ca565b50505050905090810190601f16801561020f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102496004803603604081101561023357600080fd5b506001600160a01b038135169060200135610660565b005b61025361070d565b6040805167ffffffffffffffff9092168252519081900360200190f35b61015e610724565b610280610733565b604080519115158252519081900360200190f35b6102ba600480360360208110156102aa57600080fd5b50356001600160501b0316610744565b604080516001600160501b0396871681526020810195909552848101939093526060840191909152909216608082015290519081900360a00190f35b6102496004803603604081101561030c57600080fd5b508035906020013567ffffffffffffffff166108eb565b6102496004803603602081101561033957600080fd5b50356001600160a01b0316610a2d565b6102496004803603602081101561035f57600080fd5b50356001600160a01b0316610a92565b6102ba610b0d565b6005546001600160501b031681565b60026020526000908152604090205481565b6001546001600160a01b031681565b6001546000906001600160a01b0316801561042a57806001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156103f557600080fd5b505afa158015610409573d6000803e3d6000fd5b505050506040513d602081101561041f57600080fd5b505191506104339050565b505060035460ff165b90565b6001546000906001600160a01b0316801561048457806001600160a01b03166354fd4d506040518163ffffffff1660e01b815260040160206040518083038186803b1580156103f557600080fd5b600491505090565b6001546060906001600160a01b031680156105cf57806001600160a01b0316637284e4166040518163ffffffff1660e01b815260040160006040518083038186803b1580156104da57600080fd5b505afa1580156104ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561051757600080fd5b810190808051604051939291908464010000000082111561053757600080fd5b90830190602082018581111561054c57600080fd5b825164010000000081118282018810171561056657600080fd5b82525081516020918201929091019080838360005b8381101561059357818101518382015260200161057b565b50505050905090810190601f1680156105c05780820380516001836020036101000a031916815260200191505b50604052505050915050610433565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106555780601f1061062a57610100808354040283529160200191610655565b820191906000526020600020905b81548152906001019060200180831161063857829003601f168201915b505050505091505090565b610668610733565b6106b9576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020849055815184815291517f504a149e57ef37c8a8e97616b5ea72e3b18a9f066fda25307204b5d00ac6c6289281900390910190a25050565b600554600160501b900467ffffffffffffffff1681565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b60015460009081908190819081906001600160a01b031680156108065760408051639a6fc8f560e01b81526001600160501b038916600482015290516001600160a01b03831691639a6fc8f59160248083019260a0929190829003018186803b1580156107b057600080fd5b505afa1580156107c4573d6000803e3d6000fd5b505050506040513d60a08110156107da57600080fd5b508051602082015160408301516060840151608090940151929950909750955090935091506108e29050565b61080e610c81565b5067ffffffffffffffff87166000908152600660209081526040918290208251608081018452815481526001820154928101929092526002810154928201929092526003909101546001600160501b0316606082018190521580159061087d57506001600160501b0388811611155b6108c0576040805162461bcd60e51b815260206004820152600f60248201526e139bc819185d18481c1c995cd95b9d608a1b604482015290519081900360640190fd5b8781600001518260200151836040015184606001519650965096509650965050505b91939590929450565b33600090815260026020526040902054431061093e576040805162461bcd60e51b815260206004820152600d60248201526c3737903832b936b4b9b9b4b7b760991b604482015290519081900360640190fd5b428167ffffffffffffffff1610801561096d575060055467ffffffffffffffff600160501b9091048116908216115b6109ad576040805162461bcd60e51b815260206004820152600c60248201526b39ba30b6329030b739bbb2b960a11b604482015290519081900360640190fd5b6005805460016001600160501b03918216810190911660008181526006602052604090209485554291850182905560028501919091556003909301805469ffffffffffffffffffff19908116851790915581541690921767ffffffffffffffff60501b1916600160501b67ffffffffffffffff9290921691909102179055565b610a35610733565b610a86576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610a8f81610be1565b50565b610a9a610733565b610aeb576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60015460009081908190819081906001600160a01b03168015610bb957806001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b158015610b6357600080fd5b505afa158015610b77573d6000803e3d6000fd5b505050506040513d60a0811015610b8d57600080fd5b50805160208201516040830151606084015160809094015192995090975095509093509150610bda9050565b600554610bce906001600160501b0316610744565b95509550955095509550505b9091929394565b6001600160a01b038116610c265760405162461bcd60e51b8152600401808060200182810382526026815260200180610cb36026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b604051806080016040528060008152602001600081526020016000815260200160006001600160501b03168152509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220c3d816125822d6c43c45101fec5a5429ab051d3415b595819c9941ea71eca2f664736f6c6343000606003300000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000a494f5458202f2055534400000000000000000000000000000000000000000000