0x60806040523480156200001157600080fd5b5060405162001dca38038062001dca833981810160405260a08110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b50604081815260208301519201805192949193919284640100000000821115620001c157600080fd5b908301906020820185811115620001d757600080fd5b8251640100000000811182820188101715620001f257600080fd5b82525081516020918201929091019080838360005b838110156200022157818101518382015260200162000207565b50505050905090810190601f1680156200024f5780820380516001836020036101000a031916815260200191505b5060405260200151915085905084846000620002736001600160e01b036200032316565b600080546001600160a01b0319166001600160a01b03831690811782556040519293509160008051602062001daa833981519152908290a3508251620002c190600490602086019062000464565b508151620002d790600590602085019062000464565b506006805460ff191660ff92909216919091179055505081516200030390600890602085019062000464565b5062000318816001600160e01b036200032816565b505050505062000506565b335b90565b6200033b6001600160e01b03620003a416565b6200038d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b620003a1816001600160e01b03620003d316565b50565b600080546001600160a01b0316620003c46001600160e01b036200032316565b6001600160a01b031614905090565b6001600160a01b0381166200041a5760405162461bcd60e51b815260040180806020018281038252602681526020018062001d846026913960400191505060405180910390fd5b600080546040516001600160a01b038085169392169160008051602062001daa83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004a757805160ff1916838001178555620004d7565b82800160010185558215620004d7579182015b82811115620004d7578251825591602001919060010190620004ba565b50620004e5929150620004e9565b5090565b6200032591905b80821115620004e55760008155600101620004f0565b61186e80620005166000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80637284e416116100ad578063a9059cbb11610071578063a9059cbb1461049d578063d3fc9864146104c9578063dd62ed3e14610582578063f12e3100146105b0578063f2fde38b146106545761012c565b80637284e416146104355780638da5cb5b1461043d5780638f32d59b1461046157806395d89b4114610469578063a457c2d7146104715761012c565b8063313ce567116100f4578063313ce567146102f75780633950935114610315578063698051f31461034157806370a0823114610405578063715018a61461042b5761012c565b806306fdde0314610131578063095ea7b3146101ae57806315f570dc146101ee57806318160ddd146102a757806323b872dd146102c1575b600080fd5b61013961067a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017357818101518382015260200161015b565b50505050905090810190601f1680156101a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360408110156101c457600080fd5b506001600160a01b038135169060200135610710565b604080519115158252519081900360200190f35b6101da6004803603606081101561020457600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561023357600080fd5b82018360208201111561024557600080fd5b803590602001918460018302840111600160201b8311171561026657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061072d945050505050565b6102af610967565b60408051918252519081900360200190f35b6101da600480360360608110156102d757600080fd5b506001600160a01b0381358116916020810135909116906040013561096d565b6102ff6109fa565b6040805160ff9092168252519081900360200190f35b6101da6004803603604081101561032b57600080fd5b506001600160a01b038135169060200135610a03565b6101da6004803603608081101561035757600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561039157600080fd5b8201836020820111156103a357600080fd5b803590602001918460018302840111600160201b831117156103c457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a57945050505050565b6102af6004803603602081101561041b57600080fd5b50356001600160a01b0316610bbc565b610433610bd7565b005b610139610c7a565b610445610d08565b604080516001600160a01b039092168252519081900360200190f35b6101da610d17565b610139610d3b565b6101da6004803603604081101561048757600080fd5b506001600160a01b038135169060200135610d9c565b6101da600480360360408110156104b357600080fd5b506001600160a01b038135169060200135610e0a565b6101da600480360360608110156104df57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561050e57600080fd5b82018360208201111561052057600080fd5b803590602001918460018302840111600160201b8311171561054157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e1e945050505050565b6102af6004803603604081101561059857600080fd5b506001600160a01b038135811691602001351661100c565b6102af600480360360208110156105c657600080fd5b810190602081018135600160201b8111156105e057600080fd5b8201836020820111156105f257600080fd5b803590602001918460018302840111600160201b8311171561061357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611037945050505050565b6104336004803603602081101561066a57600080fd5b50356001600160a01b0316611054565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107065780601f106106db57610100808354040283529160200191610706565b820191906000526020600020905b8154815290600101906020018083116106e957829003601f168201915b5050505050905090565b600061072461071d6110b9565b84846110bd565b50600192915050565b600080610738610d08565b9050336001600160a01b03821614806107bd5750806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561078557600080fd5b505afa158015610799573d6000803e3d6000fd5b505050506040513d60208110156107af57600080fd5b50516001600160a01b031633145b6107c657600080fd5b60008411801561083a5750836007846040518082805190602001908083835b602083106108045780518252601f1990920191602091820191016107e5565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054145b61084357600080fd5b6007836040518082805190602001908083835b602083106108755780518252601f199092019160209182019101610856565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922060009055506108b1905085856111a9565b846001600160a01b03167f47e772fda56eb54ab211642ce5421882c49fc2b7033455982af14588ae4207ff85856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610921578181015183820152602001610909565b50505050905090810190601f16801561094e5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2506001949350505050565b60035490565b600061097a8484846112a5565b6109f0846109866110b9565b6109eb85604051806060016040528060288152602001611783602891396001600160a01b038a166000908152600260205260408120906109c46110b9565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61140316565b6110bd565b5060019392505050565b60065460ff1690565b6000610724610a106110b9565b846109eb8560026000610a216110b9565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61149a16565b600080610a62610d08565b9050336001600160a01b0382161480610ae75750806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610aaf57600080fd5b505afa158015610ac3573d6000803e3d6000fd5b505050506040513d6020811015610ad957600080fd5b50516001600160a01b031633145b610af057600080fd5b610afb8686866112a5565b846001600160a01b0316866001600160a01b03167faa33e55d9dac4834bf1a11cd5422403ab3b40bbfcdb8f4636dfd0785941fe85286866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610b75578181015183820152602001610b5d565b50505050905090810190601f168015610ba25780820380516001836020036101000a031916815260200191505b50935050505060405180910390a350600195945050505050565b6001600160a01b031660009081526001602052604090205490565b610bdf610d17565b610c30576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6008805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d005780601f10610cd557610100808354040283529160200191610d00565b820191906000526020600020905b815481529060010190602001808311610ce357829003601f168201915b505050505081565b6000546001600160a01b031690565b600080546001600160a01b0316610d2c6110b9565b6001600160a01b031614905090565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107065780601f106106db57610100808354040283529160200191610706565b6000610724610da96110b9565b846109eb856040518060600160405280602581526020016118156025913960026000610dd36110b9565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61140316565b6000610724610e176110b9565b84846112a5565b600080610e29610d08565b9050336001600160a01b0382161480610eae5750806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e7657600080fd5b505afa158015610e8a573d6000803e3d6000fd5b505050506040513d6020811015610ea057600080fd5b50516001600160a01b031633145b610eb757600080fd5b600084118015610f2557506007836040518082805190602001908083835b60208310610ef45780518252601f199092019160209182019101610ed5565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922054159150505b610f2e57600080fd5b836007846040518082805190602001908083835b60208310610f615780518252601f199092019160209182019101610f42565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092209290925550610f9d905085856114fb565b846001600160a01b03167f85a66b9141978db9980f7e0ce3b468cebf4f7999f32b23091c5c03e798b1ba7a858560405180838152602001806020018281038252838181518152602001915080519060200190808383600083811015610921578181015183820152602001610909565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b805160208183018101805160078252928201919093012091525481565b61105c610d17565b6110ad576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6110b6816115ed565b50565b3390565b6001600160a01b0383166111025760405162461bcd60e51b81526004018080602001828103825260248152602001806117f16024913960400191505060405180910390fd5b6001600160a01b0382166111475760405162461bcd60e51b815260040180806020018281038252602281526020018061173b6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0382166111ee5760405162461bcd60e51b81526004018080602001828103825260218152602001806117ab6021913960400191505060405180910390fd5b611231816040518060600160405280602281526020016116f3602291396001600160a01b038516600090815260016020526040902054919063ffffffff61140316565b6001600160a01b03831660009081526001602052604090205560035461125d908263ffffffff61168d16565b6003556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6001600160a01b0383166112ea5760405162461bcd60e51b81526004018080602001828103825260258152602001806117cc6025913960400191505060405180910390fd5b6001600160a01b03821661132f5760405162461bcd60e51b81526004018080602001828103825260238152602001806116d06023913960400191505060405180910390fd5b6113728160405180606001604052806026815260200161175d602691396001600160a01b038616600090815260016020526040902054919063ffffffff61140316565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546113a7908263ffffffff61149a16565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156114925760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561145757818101518382015260200161143f565b50505050905090810190601f1680156114845780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156114f4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216611556576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600354611569908263ffffffff61149a16565b6003556001600160a01b038216600090815260016020526040902054611595908263ffffffff61149a16565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b0381166116325760405162461bcd60e51b81526004018080602001828103825260268152602001806117156026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006114f483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061140356fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820901a5386326908c331e064b2dc2af9b1922f349d94e2721b3e0fe5cd5d0783ea64736f6c634300051000324f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573738be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000638305b41538efe91e5c8b8ed0ee3a0c74dd99f4000000000000000000000000000000000000000000000000000000000000002050726f76696465204d65616c20616e642048796769656e652050617263656c7300000000000000000000000000000000000000000000000000000000000000065049504d48500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003b312070617263656c206f6620666f6f642c2068796769656e65206d6174657269616c732c20616e64206d61736b7320666f7220612066616d696c790000000000