60a060405234801561001057600080fd5b5060405161163b38038061163b8339818101604052604081101561003357600080fd5b508051602090910151600061004f6001600160e01b036100cc16565b600280546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060609190911b6001600160601b03191660805260045560038054336001600160a01b03199091161790556100d0565b3390565b60805160601c6115496100f2600039806108e75280610e0852506115496000f3fe608060405234801561001057600080fd5b50600436106101ad5760003560e01c806380faa57d116100ee578063cd3daf9d11610097578063ebe2b12b11610071578063ebe2b12b14610367578063f2fde38b1461036f578063fafd267814610395578063fc7e286d1461039d576101ad565b8063cd3daf9d1461034f578063df136d6514610357578063e9fad8ee1461035f576101ad565b80638da5cb5b116100c85780638da5cb5b14610322578063a694fc3a1461032a578063c8f33c9114610347576101ad565b806380faa57d146102ec5780638b876347146102f45780638da588971461031a576101ad565b80632e1a7d4d1161015b5780633e413bee116101355780633e413bee146102ae57806370a08231146102b6578063715018a6146102dc5780637b0a47ee146102e4576101ad565b80632e1a7d4d1461026c5780633c6b16ab146102895780633d18b912146102a6576101ad565b8063101114cf1161018c578063101114cf1461023857806318160ddd1461025c5780631be0528914610264576101ad565b80628cc262146101b25780630700037d146101ea5780630d68b76114610210575b600080fd5b6101d8600480360360208110156101c857600080fd5b50356001600160a01b03166103c3565b60408051918252519081900360200190f35b6101d86004803603602081101561020057600080fd5b50356001600160a01b0316610449565b6102366004803603602081101561022657600080fd5b50356001600160a01b031661045b565b005b6102406104f1565b604080516001600160a01b039092168252519081900360200190f35b6101d8610500565b6101d8610507565b6102366004803603602081101561028257600080fd5b503561050e565b6102366004803603602081101561029f57600080fd5b503561061b565b61023661080c565b610240610956565b6101d8600480360360208110156102cc57600080fd5b50356001600160a01b031661096e565b610236610989565b6101d8610a47565b6101d8610a4d565b6101d86004803603602081101561030a57600080fd5b50356001600160a01b0316610a60565b6101d8610a72565b610240610a78565b6102366004803603602081101561034057600080fd5b5035610a87565b6101d8610c70565b6101d8610c76565b6101d8610cca565b610236610cd0565b6101d8610ceb565b6102366004803603602081101561038557600080fd5b50356001600160a01b0316610cf1565b610240610e06565b6101d8600480360360208110156103b357600080fd5b50356001600160a01b0316610e2a565b6001600160a01b0381166000908152600a60209081526040808320546009909252822054610443919061043790670de0b6b3a76400009061042b906104169061040a610c76565b9063ffffffff610e3c16565b61041f8861096e565b9063ffffffff610e9916565b9063ffffffff610ef916565b9063ffffffff610f6016565b92915050565b600a6020526000908152604090205481565b610463610fba565b6001600160a01b0316610474610a78565b6001600160a01b0316146104cf576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031681565b6000545b90565b620d2f0081565b33610517610c76565b600855610522610a4d565b6007556001600160a01b038116156105695761053d816103c3565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b600082116105a85760405162461bcd60e51b815260040180806020018281038252602281526020018061143a6022913960400191505060405180910390fd5b336000908152600b60205260409020546105c8908363ffffffff610e3c16565b336000908152600b60205260409020556105e182610fbe565b60408051838152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a25050565b6003546001600160a01b031661062f610fba565b6001600160a01b0316146106745760405162461bcd60e51b81526004018080602001828103825260218152602001806114c96021913960400191505060405180910390fd5b600061067e610c76565b600855610689610a4d565b6007556001600160a01b038116156106d0576106a4816103c3565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b6004544211156107a05760055442106106fe576106f682620d2f0063ffffffff610ef916565b60065561074c565b600554600090610714904263ffffffff610e3c16565b9050600061072d60065483610e9990919063ffffffff16565b9050610746620d2f0061042b868463ffffffff610f6016565b60065550505b42600781905561076590620d2f0063ffffffff610f6016565b6005556040805183815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a1610808565b6107b382620d2f0063ffffffff610ef916565b60065560045460078190556107d190620d2f0063ffffffff610f6016565b6005556040805183815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a15b5050565b33610815610c76565b600855610820610a4d565b6007556001600160a01b038116156108675761083b816103c3565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b6004544210156108be576040805162461bcd60e51b815260206004820152601a60248201527f47656e6573697357657468506f6f6c3a206e6f74207374617274000000000000604482015290519081900360640190fd5b60006108c9336103c3565b9050801561080857336000818152600a602052604081205561091c907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908363ffffffff61102f16565b60408051828152905133917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a25050565b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b6001600160a01b031660009081526001602052604090205490565b610991610fba565b6001600160a01b03166109a2610a78565b6001600160a01b0316146109fd576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6002546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600280546001600160a01b0319169055565b60065481565b6000610a5b42600554611086565b905090565b60096020526000908152604090205481565b60045481565b6002546001600160a01b031690565b33610a90610c76565b600855610a9b610a4d565b6007556001600160a01b03811615610ae257610ab6816103c3565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b600454421015610b39576040805162461bcd60e51b815260206004820152601a60248201527f47656e6573697357657468506f6f6c3a206e6f74207374617274000000000000604482015290519081900360640190fd5b60008211610b8e576040805162461bcd60e51b815260206004820152601f60248201527f47656e6573697357657468506f6f6c3a2043616e6e6f74207374616b65203000604482015290519081900360640190fd5b6000610ba76103e861042b85600663ffffffff610e9916565b9050610be373a0b86991c6218b36c1d19d4a2e9eb0ce3606eb483373d0da67f38ea511e795f8f8be97da7b3eca47b3c58463ffffffff61109c16565b610bf3838263ffffffff610e3c16565b336000908152600b602052604081205491945090610c17908563ffffffff610f6016565b336000908152600b602052604090208190559050610c34846110fc565b60408051858152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a250505050565b60075481565b6000610c80610500565b610c8d5750600854610504565b610a5b610cbb610c9b610500565b61042b670de0b6b3a764000061041f60065461041f60075461040a610a4d565b6008549063ffffffff610f6016565b60085481565b610ce1610cdc3361096e565b61050e565b610ce961080c565b565b60055481565b610cf9610fba565b6001600160a01b0316610d0a610a78565b6001600160a01b031614610d65576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610daa5760405162461bcd60e51b815260040180806020018281038252602681526020018061145c6026913960400191505060405180910390fd5b6002546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600280546001600160a01b0319166001600160a01b0392909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b6020526000908152604090205481565b600082821115610e93576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082610ea857506000610443565b82820282848281610eb557fe5b0414610ef25760405162461bcd60e51b81526004018080602001828103825260218152602001806114a86021913960400191505060405180910390fd5b9392505050565b6000808211610f4f576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610f5857fe5b049392505050565b600082820183811015610ef2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3390565b600054610fd1908263ffffffff610e3c16565b600090815533815260016020526040902054610ff3908263ffffffff610e3c16565b3360008181526001602052604090209190915561102c9073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48908363ffffffff61102f16565b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108190849061116b565b505050565b60008183106110955781610ef2565b5090919050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526110f690859061116b565b50505050565b60005461110f908263ffffffff610f6016565b600090815533815260016020526040902054611131908263ffffffff610f6016565b3360008181526001602052604090209190915561102c9073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4890308463ffffffff61109c16565b60606111c0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661121c9092919063ffffffff16565b805190915015611081578080602001905160208110156111df57600080fd5b50516110815760405162461bcd60e51b815260040180806020018281038252602a8152602001806114ea602a913960400191505060405180910390fd5b606061122b8484600085611233565b949350505050565b6060824710156112745760405162461bcd60e51b81526004018080602001828103825260268152602001806114826026913960400191505060405180910390fd5b61127d8561138f565b6112ce576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b6020831061130d5780518252601f1990920191602091820191016112ee565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461136f576040519150601f19603f3d011682016040523d82523d6000602084013e611374565b606091505b5091509150611384828286611395565b979650505050505050565b3b151590565b606083156113a4575081610ef2565b8251156113b45782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113fe5781810151838201526020016113e6565b50505050905090810190601f16801561142b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe47656e6573697357657468506f6f6c3a2043616e6e6f7420776974686472617720304f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743616c6c6572206973206e6f742072657761726420646973747269627574696f6e5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122046981fb8ea46b5c9de3a258ff96f8c17f6ae04af46c147d070cf3a2a14cfc1ad64736f6c634300060600330000000000000000000000004c44f9183d99df69b1b5fa2484bec6efcffa5c980000000000000000000000000000000000000000000000000000000060630bb8