6080604052620697806008556000600a556000600b5534801561002157600080fd5b5060405162001757380380620017578339818101604052608081101561004657600080fd5b50805160208201516040830151606090930151919290916000610067610115565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600780546001600160a01b03199081166001600160a01b03878116919091179092556000805482168684161790556009849055600e805490911691831691909117905561010c81610119602090811b610e1b17901c565b505050506101a5565b3390565b610121610115565b6005546001600160a01b03908116911614610183576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6115a280620001b56000396000f3fe608060405234801561001057600080fd5b50600436106101c35760003560e01c806380faa57d116100f9578063cd3daf9d11610097578063ebe2b12b11610071578063ebe2b12b14610393578063f2fde38b1461039b578063fc7e286d146103c1578063fd617b37146103e7576101c3565b8063cd3daf9d1461037b578063df136d6514610383578063e9fad8ee1461038b576101c3565b80638da58897116100d35780638da588971461035b5780638da5cb5b14610363578063961be3911461036b578063c8f33c9114610373576101c3565b806380faa57d14610325578063869890381461032d5780638b87634714610335576101c3565b80633d18b9121161016657806370a082311161014057806370a08231146102c3578063715018a6146102e95780637acb7757146102f15780637b0a47ee1461031d576101c3565b80633d18b912146102965780633e5564941461029e57806351ed6a30146102bb576101c3565b806318160ddd116101a257806318160ddd1461024a5780631be05289146102525780632e1a7d4d1461025a5780633c6b16ab14610279576101c3565b80628cc262146101c85780630700037d14610200578063101114cf14610226575b600080fd5b6101ee600480360360208110156101de57600080fd5b50356001600160a01b03166103ef565b60408051918252519081900360200190f35b6101ee6004803603602081101561021657600080fd5b50356001600160a01b031661045d565b61022e61046f565b604080516001600160a01b039092168252519081900360200190f35b6101ee61047e565b6101ee610485565b6102776004803603602081101561027057600080fd5b503561048b565b005b6102776004803603602081101561028f57600080fd5b50356105f6565b6102776107c6565b61022e600480360360208110156102b457600080fd5b50356108e5565b61022e61090c565b6101ee600480360360208110156102d957600080fd5b50356001600160a01b031661091b565b610277610936565b6102776004803603604081101561030757600080fd5b50803590602001356001600160a01b03166109ea565b6101ee610c1f565b6101ee610c25565b6101ee610c38565b6101ee6004803603602081101561034b57600080fd5b50356001600160a01b0316610c3e565b6101ee610c50565b61022e610c56565b61022e610c65565b6101ee610c74565b6101ee610c7a565b6101ee610cc8565b610277610cce565b6101ee610ce9565b610277600480360360208110156103b157600080fd5b50356001600160a01b0316610cef565b6101ee600480360360208110156103d757600080fd5b50356001600160a01b0316610dfa565b61022e610e0c565b6001600160a01b038116600090815260106020908152604080832054600f909252822054610457919061045190670de0b6b3a76400009061044b9061043c90610436610c7a565b90610ea7565b6104458861091b565b90610ef0565b90610f49565b90610f8b565b92915050565b60106020526000908152604090205481565b6006546001600160a01b031681565b6001545b90565b60085481565b33610494610c7a565b600d5561049f610c25565b600c556001600160a01b038116156104e6576104ba816103ef565b6001600160a01b038216600090815260106020908152604080832093909355600d54600f909152919020555b600954421015610534576040805162461bcd60e51b8152602060048201526014602482015273141bdbdb14dd185ad94e881b9bdd081cdd185c9d60621b604482015290519081900360640190fd5b60008211610589576040805162461bcd60e51b815260206004820152601c60248201527f506f6f6c5374616b653a2043616e6e6f74207769746864726177203000000000604482015290519081900360640190fd5b336000908152601160205260409020546105a39083610ea7565b336000908152601160205260409020556105bc82610fe5565b60408051838152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a25050565b6006546001600160a01b031661060a61103d565b6001600160a01b03161461064f5760405162461bcd60e51b81526004018080602001828103825260218152602001806115226021913960400191505060405180910390fd5b6000610659610c7a565b600d55610664610c25565b600c556001600160a01b038116156106ab5761067f816103ef565b6001600160a01b038216600090815260106020908152604080832093909355600d54600f909152919020555b60095442111561076557600a5442106106d4576008546106cc908390610f49565b600b55610717565b600a546000906106e49042610ea7565b905060006106fd600b5483610ef090919063ffffffff16565b6008549091506107119061044b8684610f8b565b600b5550505b42600c81905560085461072a9190610f8b565b600a556040805183815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a16107c2565b600854610773908390610f49565b600b55600954600c81905560085461078b9190610f8b565b600a556040805183815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a15b5050565b336107cf610c7a565b600d556107da610c25565b600c556001600160a01b03811615610821576107f5816103ef565b6001600160a01b038216600090815260106020908152604080832093909355600d54600f909152919020555b60095442101561086f576040805162461bcd60e51b8152602060048201526014602482015273141bdbdb14dd185ad94e881b9bdd081cdd185c9d60621b604482015290519081900360640190fd5b600061087a336103ef565b905080156107c257336000818152601060205260408120556007546108ab916001600160a01b039091169083611041565b60408051828152905133917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a25050565b600481815481106108f257fe5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031681565b6001600160a01b031660009081526002602052604090205490565b61093e61103d565b6005546001600160a01b039081169116146109a0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b806109f3610c7a565b600d556109fe610c25565b600c556001600160a01b03811615610a4557610a19816103ef565b6001600160a01b038216600090815260106020908152604080832093909355600d54600f909152919020555b600954421015610a93576040805162461bcd60e51b8152602060048201526014602482015273141bdbdb14dd185ad94e881b9bdd081cdd185c9d60621b604482015290519081900360640190fd5b600e546001600160a01b03163314610af2576040805162461bcd60e51b815260206004820152601e60248201527f506f6f6c5374616b653a2072657175697265207374616b6548656c7065720000604482015290519081900360640190fd5b60008311610b47576040805162461bcd60e51b815260206004820152601960248201527f506f6f6c5374616b653a2043616e6e6f74207374616b65203000000000000000604482015290519081900360640190fd5b6001600160a01b038216600090815260116020526040812054610b6a9085610f8b565b905069054b40b1f852bda00000811115610bb55760405162461bcd60e51b815260040180806020018281038252602f8152602001806114ac602f913960400191505060405180910390fd5b6001600160a01b0383166000908152601160205260409020819055610bda8484611098565b6040805185815290516001600160a01b038516917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a250505050565b600b5481565b6000610c3342600a5461115e565b905090565b60045490565b600f6020526000908152604090205481565b60095481565b6005546001600160a01b031690565b6007546001600160a01b031681565b600c5481565b6000610c8461047e565b610c915750600d54610482565b610c33610cbf610c9f61047e565b61044b670de0b6b3a7640000610445600b54610445600c54610436610c25565b600d5490610f8b565b600d5481565b610cdf610cda3361091b565b61048b565b610ce76107c6565b565b600a5481565b610cf761103d565b6005546001600160a01b03908116911614610d59576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610d9e5760405162461bcd60e51b81526004018080602001828103825260268152602001806114db6026913960400191505060405180910390fd5b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b60116020526000908152604090205481565b600e546001600160a01b031681565b610e2361103d565b6005546001600160a01b03908116911614610e85576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000610ee983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611174565b9392505050565b600082610eff57506000610457565b82820282848281610f0c57fe5b0414610ee95760405162461bcd60e51b81526004018080602001828103825260218152602001806115016021913960400191505060405180910390fd5b6000610ee983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061120b565b600082820183811015610ee9576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600154610ff29082610ea7565b6001553360009081526002602052604090205461100f9082610ea7565b33600081815260026020526040812092909255905461103a916001600160a01b039091169083611041565b50565b3390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611093908490611270565b505050565b6001546110a59083610f8b565b6001556001600160a01b0381166000908152600260205260409020546110cb9083610f8b565b6001600160a01b03821660009081526002602090815260408083209390935560039052205460ff166107c2576001600160a01b03166000818152600360205260408120805460ff191660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b031916909117905550565b600081831061116d5781610ee9565b5090919050565b600081848411156112035760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111c85781810151838201526020016111b0565b50505050905090810190601f1680156111f55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000818361125a5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156111c85781810151838201526020016111b0565b50600083858161126657fe5b0495945050505050565b60606112c5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166113219092919063ffffffff16565b805190915015611093578080602001905160208110156112e457600080fd5b50516110935760405162461bcd60e51b815260040180806020018281038252602a815260200180611543602a913960400191505060405180910390fd5b60606113308484600085611338565b949350505050565b6060611343856114a5565b611394576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106113d35780518252601f1990920191602091820191016113b4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611435576040519150601f19603f3d011682016040523d82523d6000602084013e61143a565b606091505b5091509150811561144e5791506113309050565b80511561145e5780518082602001fd5b60405162461bcd60e51b81526020600482018181528651602484015286518793919283926044019190850190808383600083156111c85781810151838201526020016111b0565b3b15159056fe506f6f6c5374616b653a206465706f73697420616d6f756e742065786365656473206d6178696d756d2032353030304f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743616c6c6572206973206e6f742072657761726420646973747269627574696f6e5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122006a71b0b58feebdb5e7ad44da3978ac6222307147dfde7fdab5a1174ab8d239064736f6c634300060c00330000000000000000000000001ee93098586035b32c8417ca2db396d1da63c86600000000000000000000000036f3fd68e7325a35eb768f1aedaae9ea0689d72300000000000000000000000000000000000000000000000000000000600d8b70000000000000000000000000e7668211d5b4003fb3556a47905e0c1538999358