6080604052662386f26fc10000600655660e3d2cfe61ffff1960075534801561002757600080fd5b5060006100326100ff565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506007546001600061008b6100ff565b6001600160a01b031681526020810191909152604001600020556100ad6100ff565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040518082815260200191505060405180910390a3610103565b3390565b611c0c80620001136000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063715018a6116100b8578063c018f5791161007c578063c018f579146103a4578063cba0e996146103c1578063dd62ed3e146103e7578063f2cc0c1814610415578063f2fde38b1461043b578063f84354f11461046157610142565b8063715018a6146103185780638da5cb5b1461032057806395d89b4114610344578063a457c2d71461034c578063a9059cbb1461037857610142565b806323b872dd1161010a57806323b872dd1461024b578063313ce56714610281578063395093511461029f5780633bd5d173146102cb5780633c9f861d146102ea57806370a08231146102f257610142565b806306fdde0314610147578063095ea7b3146101c45780630f8d89141461020457806313114a9d1461023b57806318160ddd14610243575b600080fd5b61014f610487565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610189578181015183820152602001610171565b50505050905090810190601f1680156101b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101f0600480360360408110156101da57600080fd5b506001600160a01b0381351690602001356104ad565b604080519115158252519081900360200190f35b6102296004803603604081101561021a57600080fd5b508035906020013515156104cb565b60408051918252519081900360200190f35b61022961055d565b610229610563565b6101f06004803603606081101561026157600080fd5b506001600160a01b03813581169160208101359091169060400135610569565b6102896105f0565b6040805160ff9092168252519081900360200190f35b6101f0600480360360408110156102b557600080fd5b506001600160a01b0381351690602001356105f5565b6102e8600480360360208110156102e157600080fd5b5035610643565b005b61022961071d565b6102296004803603602081101561030857600080fd5b50356001600160a01b0316610723565b6102e861078d565b61032861082f565b604080516001600160a01b039092168252519081900360200190f35b61014f61083e565b6101f06004803603604081101561036257600080fd5b506001600160a01b03813516906020013561085c565b6101f06004803603604081101561038e57600080fd5b506001600160a01b0381351690602001356108c4565b610229600480360360208110156103ba57600080fd5b50356108d8565b6101f0600480360360208110156103d757600080fd5b50356001600160a01b0316610938565b610229600480360360408110156103fd57600080fd5b506001600160a01b0381358116916020013516610956565b6102e86004803603602081101561042b57600080fd5b50356001600160a01b0316610981565b6102e86004803603602081101561045157600080fd5b50356001600160a01b0316610b63565b6102e86004803603602081101561047757600080fd5b50356001600160a01b0316610c5b565b60408051808201909152600c81526b20bb30a9b7b6b2aa37b5b2b760a11b602082015290565b60006104c16104ba610e1c565b8484610e20565b5060015b92915050565b6000600654831115610524576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b8161054357600061053484610f0c565b509395506104c5945050505050565b600061054e84610f0c565b509295506104c5945050505050565b60085490565b60065490565b6000610576848484610f66565b6105e684610582610e1c565b6105e185604051806060016040528060288152602001611a65602891396001600160a01b038a166000908152600360205260408120906105c0610e1c565b6001600160a01b031681526020810191909152604001600020549190611215565b610e20565b5060019392505050565b600990565b60006104c1610602610e1c565b846105e18560036000610613610e1c565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906112ac565b600061064d610e1c565b6001600160a01b03811660009081526004602052604090205490915060ff16156106a85760405162461bcd60e51b815260040180806020018281038252602c815260200180611b89602c913960400191505060405180910390fd5b60006106b383610f0c565b505050506001600160a01b0384166000908152600160205260409020549192506106df91905082611306565b6001600160a01b0383166000908152600160205260409020556007546107059082611306565b60075560085461071590846112ac565b600855505050565b60095490565b6001600160a01b03811660009081526004602052604081205460ff161561076357506001600160a01b038116600090815260026020526040902054610788565b6001600160a01b038216600090815260016020526040902054610785906108d8565b90505b919050565b610795610e1c565b6000546001600160a01b039081169116146107e5576040805162461bcd60e51b81526020600482018190526024820152600080516020611ad6833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6040805180820190915260048152634176615360e01b602082015290565b60006104c1610869610e1c565b846105e185604051806060016040528060258152602001611b426025913960036000610893610e1c565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611215565b60006104c16108d1610e1c565b8484610f66565b600060075482111561091b5760405162461bcd60e51b8152600401808060200182810382526029815260200180611a166029913960400191505060405180910390fd5b6000610925611348565b9050610931838261136b565b9392505050565b6001600160a01b031660009081526004602052604090205460ff1690565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b610989610e1c565b6000546001600160a01b039081169116146109d9576040805162461bcd60e51b81526020600482018190526024820152600080516020611ad6833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610a355760405162461bcd60e51b8152600401808060200182810382526022815260200180611b676022913960400191505060405180910390fd5b6001600160a01b03811660009081526004602052604090205460ff1615610aa3576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526001602052604090205415610afd576001600160a01b038116600090815260016020526040902054610ae3906108d8565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600460205260408120805460ff191660019081179091556005805491820181559091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319169091179055565b610b6b610e1c565b6000546001600160a01b03908116911614610bbb576040805162461bcd60e51b81526020600482018190526024820152600080516020611ad6833981519152604482015290519081900360640190fd5b6001600160a01b038116610c005760405162461bcd60e51b8152600401808060200182810382526026815260200180611a3f6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610c63610e1c565b6000546001600160a01b03908116911614610cb3576040805162461bcd60e51b81526020600482018190526024820152600080516020611ad6833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526004602052604090205460ff16610d20576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b600554811015610e1857816001600160a01b031660058281548110610d4457fe5b6000918252602090912001546001600160a01b03161415610e1057600580546000198101908110610d7157fe5b600091825260209091200154600580546001600160a01b039092169183908110610d9757fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600490925220805460ff191690556005805480610de957fe5b600082815260209020810160001990810180546001600160a01b0319169055019055610e18565b600101610d23565b5050565b3390565b6001600160a01b038316610e655760405162461bcd60e51b81526004018080602001828103825260248152602001806119f26024913960400191505060405180910390fd5b6001600160a01b038216610eaa5760405162461bcd60e51b8152600401808060200182810382526022815260200180611bb56022913960400191505060405180910390fd5b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000806000806000806000806000610f268a60c8806113ad565b9250925092506000610f36611348565b90506000806000610f498e878787611406565b919e509c509a509598509396509194505050505091939550919395565b6001600160a01b038316610fab5760405162461bcd60e51b81526004018080602001828103825260258152602001806119cd6025913960400191505060405180910390fd5b6001600160a01b038216610ff05760405162461bcd60e51b8152600401808060200182810382526023815260200180611b1f6023913960400191505060405180910390fd5b6000811161102f5760405162461bcd60e51b8152600401808060200182810382526029815260200180611af66029913960400191505060405180910390fd5b61103761082f565b6001600160a01b0316836001600160a01b031614158015611071575061105b61082f565b6001600160a01b0316826001600160a01b031614155b156110bc576601c6bf526340008111156110bc5760405162461bcd60e51b8152600401808060200182810382526028815260200180611a8d6028913960400191505060405180910390fd5b6001600160a01b03831660009081526004602052604090205460ff1680156110fd57506001600160a01b03821660009081526004602052604090205460ff16155b156111125761110d838383611456565b611210565b6001600160a01b03831660009081526004602052604090205460ff1615801561115357506001600160a01b03821660009081526004602052604090205460ff165b156111635761110d838383611596565b6001600160a01b03831660009081526004602052604090205460ff161580156111a557506001600160a01b03821660009081526004602052604090205460ff16155b156111b55761110d838383611660565b6001600160a01b03831660009081526004602052604090205460ff1680156111f557506001600160a01b03821660009081526004602052604090205460ff165b156112055761110d8383836116c5565b611210838383611660565b505050565b600081848411156112a45760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611269578181015183820152602001611251565b50505050905090810190601f1680156112965780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610931576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061093183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611215565b6000806000611355611759565b9092509050611364828261136b565b9250505090565b600061093183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118bc565b60008080806113c960646113c381818b8b611921565b9061136b565b905060006113de60646113c381818c8b611921565b905060006113f6826113f08b86611306565b90611306565b9992985090965090945050505050565b60008080806114158886611921565b905060006114238887611921565b905060006114318888611921565b90506000611443826113f08686611306565b939b939a50919850919650505050505050565b6000611460611348565b905060008060008060008061147488610f0c565b9550955095509550955095506000611495888361192190919063ffffffff16565b6001600160a01b038c166000908152600260205260409020549091506114bb908a611306565b6001600160a01b038c166000908152600260209081526040808320939093556001905220546114ea9088611306565b6001600160a01b03808d1660009081526001602052604080822093909355908c168152205461151990876112ac565b6001600160a01b038b1660009081526001602052604090205561153e8582858561197a565b896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a35050505050505050505050565b60006115a0611348565b90506000806000806000806115b488610f0c565b95509550955095509550955060006115d5888361192190919063ffffffff16565b6001600160a01b038c166000908152600160205260409020549091506115fb9088611306565b6001600160a01b03808d16600090815260016020908152604080832094909455918d1681526002909152205461163190856112ac565b6001600160a01b038b1660009081526002602090815260408083209390935560019052205461151990876112ac565b600061166a611348565b905060008060008060008061167e88610f0c565b955095509550955095509550600061169f888361192190919063ffffffff16565b6001600160a01b038c166000908152600160205260409020549091506114ea9088611306565b60006116cf611348565b90506000806000806000806116e388610f0c565b9550955095509550955095506000611704888361192190919063ffffffff16565b6001600160a01b038c1660009081526002602052604090205490915061172a908a611306565b6001600160a01b038c166000908152600260209081526040808320939093556001905220546115fb9088611306565b6007546006546000918291825b60055481101561188a5782600160006005848154811061178257fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806117e757508160026000600584815481106117c057fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156117fe57600754600654945094505050506118b8565b61183e600160006005848154811061181257fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611306565b9250611880600260006005848154811061185457fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611306565b9150600101611766565b5060065460075461189a9161136b565b8210156118b2576007546006549350935050506118b8565b90925090505b9091565b6000818361190b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611269578181015183820152602001611251565b50600083858161191757fe5b0495945050505050565b600082611930575060006104c5565b8282028284828161193d57fe5b04146109315760405162461bcd60e51b8152600401808060200182810382526021815260200180611ab56021913960400191505060405180910390fd5b611993836113f08660075461130690919063ffffffff16565b6007556008546119a390836112ac565b6008556009546119b390826112ac565b6009556006546119c39082611306565b6006555050505056fe42455032303a207472616e736665722066726f6d20746865207a65726f206164647265737342455032303a20617070726f76652066726f6d20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c206d61676e6574696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737342455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f42455032303a207472616e7366657220746f20746865207a65726f206164647265737342455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f57652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e42455032303a20617070726f766520746f20746865207a65726f2061646472657373a2646970667358221220bf35effcfbca991d37c23b0b2195ca2907b0d3e0bca444c1cbddc89a05f38a7064736f6c634300060c0033