60806040526200001a670de0b6b3a76400006000196200038f565b6200002890600019620003bc565b6006556000600881905560016009819055600a829055600c82905560118054600d819055600e93909355600f92909255908190556012805473710eb5af57054c4fcb56d724c574635a2d06f7c46001600160a01b031991821681179092556013805490911690911790556015805461ffff60a81b19169055670de0b6b3a7640000601681905560178190556103e891620000c39190620003d8565b620000cf9190620003f2565b601855348015620000df57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506006543360009081526002602090815260409182902092909255601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa1580156200019d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c3919062000409565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000211573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000237919062000409565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000285573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ab919062000409565b601580546001600160a01b0319166001600160a01b03928316179055600080548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055601254851684528284208054821683179055601354909416835291208054909216179055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200036a91815260200190565b60405180910390a3506200043b565b634e487b7160e01b600052601260045260246000fd5b600082620003a157620003a162000379565b500690565b634e487b7160e01b600052601160045260246000fd5b81810381811115620003d257620003d2620003a6565b92915050565b8082028115828204841417620003d257620003d2620003a6565b60008262000404576200040462000379565b500490565b6000602082840312156200041c57600080fd5b81516001600160a01b03811681146200043457600080fd5b9392505050565b611b6a806200044b6000396000f3fe6080604052600436106101a05760003560e01c806374010ece116100ec578063a9059cbb1161008a578063dd62ed3e11610064578063dd62ed3e146104a2578063ea1644d5146104e8578063f2fde38b14610508578063f906da631461052857600080fd5b8063a9059cbb1461044d578063c3c8cd801461046d578063c492f0461461048257600080fd5b80638f70ccf7116100c65780638f70ccf7146103c75780638f9a55c0146103e757806395d89b41146103fd57806398a5c3151461042d57600080fd5b806374010ece146103735780637d1db4a5146103935780638da5cb5b146103a957600080fd5b80632fd689e3116101595780636d8aa8f8116101335780636d8aa8f8146103075780636fc3eaec1461032957806370a082311461033e578063715018a61461035e57600080fd5b80632fd689e3146102b5578063313ce567146102cb57806349bd5a5e146102e757600080fd5b806306fdde03146101ac578063095ea7b3146101ee57806313114a9d1461021e5780631694505e1461024257806318160ddd1461027a57806323b872dd1461029557600080fd5b366101a757005b600080fd5b3480156101b857600080fd5b5060408051808201909152600781526601026a2a4a927960cd1b60208201525b6040516101e591906116ab565b60405180910390f35b3480156101fa57600080fd5b5061020e61020936600461170e565b610548565b60405190151581526020016101e5565b34801561022a57600080fd5b50610234600b5481565b6040519081526020016101e5565b34801561024e57600080fd5b50601454610262906001600160a01b031681565b6040516001600160a01b0390911681526020016101e5565b34801561028657600080fd5b50670de0b6b3a7640000610234565b3480156102a157600080fd5b5061020e6102b036600461173a565b61055f565b3480156102c157600080fd5b5061023460185481565b3480156102d757600080fd5b50604051600981526020016101e5565b3480156102f357600080fd5b50601554610262906001600160a01b031681565b34801561031357600080fd5b50610327610322366004611790565b6105c8565b005b34801561033557600080fd5b50610327610619565b34801561034a57600080fd5b506102346103593660046117ab565b610664565b34801561036a57600080fd5b50610327610686565b34801561037f57600080fd5b5061032761038e3660046117c8565b6106fa565b34801561039f57600080fd5b5061023460165481565b3480156103b557600080fd5b506000546001600160a01b0316610262565b3480156103d357600080fd5b506103276103e2366004611790565b610729565b3480156103f357600080fd5b5061023460175481565b34801561040957600080fd5b506040805180820190915260078152665448454d415a4560c81b60208201526101d8565b34801561043957600080fd5b506103276104483660046117c8565b610771565b34801561045957600080fd5b5061020e61046836600461170e565b6107a0565b34801561047957600080fd5b506103276107ad565b34801561048e57600080fd5b5061032761049d3660046117e1565b610801565b3480156104ae57600080fd5b506102346104bd366004611865565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156104f457600080fd5b506103276105033660046117c8565b6108a2565b34801561051457600080fd5b506103276105233660046117ab565b6108d1565b34801561053457600080fd5b50610327610543366004611941565b6109bb565b60006105553384846109f0565b5060015b92915050565b600061056c848484610b14565b6105be84336105b985604051806060016040528060288152602001611b0d602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610f31565b6109f0565b5060019392505050565b6000546001600160a01b031633146105fb5760405162461bcd60e51b81526004016105f2906119a5565b60405180910390fd5b60158054911515600160b01b0260ff60b01b19909216919091179055565b6012546001600160a01b0316336001600160a01b0316148061064e57506013546001600160a01b0316336001600160a01b0316145b61065757600080fd5b4761066181610f6b565b50565b6001600160a01b03811660009081526002602052604081205461055990610ff4565b6000546001600160a01b031633146106b05760405162461bcd60e51b81526004016105f2906119a5565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146107245760405162461bcd60e51b81526004016105f2906119a5565b601655565b6000546001600160a01b031633146107535760405162461bcd60e51b81526004016105f2906119a5565b60158054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b0316331461079b5760405162461bcd60e51b81526004016105f2906119a5565b601855565b6000610555338484610b14565b6012546001600160a01b0316336001600160a01b031614806107e257506013546001600160a01b0316336001600160a01b0316145b6107eb57600080fd5b60006107f630610664565b905061066181611078565b6000546001600160a01b0316331461082b5760405162461bcd60e51b81526004016105f2906119a5565b60005b8281101561089c57816005600086868581811061084d5761084d6119da565b905060200201602081019061086291906117ab565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061089481611a06565b91505061082e565b50505050565b6000546001600160a01b031633146108cc5760405162461bcd60e51b81526004016105f2906119a5565b601755565b6000546001600160a01b031633146108fb5760405162461bcd60e51b81526004016105f2906119a5565b6001600160a01b0381166109605760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105f2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600a825110156109ca57600080fd5b815181516000816109dc84600a611a1f565b6109e69190611a36565b6011555050505050565b6001600160a01b038316610a525760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105f2565b6001600160a01b038216610ab35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105f2565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b785760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105f2565b6001600160a01b038216610bda5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105f2565b60008111610c3c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105f2565b6000546001600160a01b03848116911614801590610c6857506000546001600160a01b03838116911614155b15610e2a57601554600160a01b900460ff16610d01576000546001600160a01b03848116911614610d015760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016105f2565b601654811115610d535760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016105f2565b6000610d5e30610664565b601854601654919250821015908210610d775760165491505b808015610d8e5750601554600160a81b900460ff16155b8015610da857506015546001600160a01b03868116911614155b8015610dbd5750601554600160b01b900460ff165b8015610de257506001600160a01b03851660009081526005602052604090205460ff16155b8015610e0757506001600160a01b03841660009081526005602052604090205460ff16155b15610e2757610e1582611078565b478015610e2557610e2547610f6b565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610e6c57506001600160a01b03831660009081526005602052604090205460ff165b80610e9e57506015546001600160a01b03858116911614801590610e9e57506015546001600160a01b03848116911614155b15610eab57506000610f25565b6015546001600160a01b038581169116148015610ed657506014546001600160a01b03848116911614155b15610ee857600854600c55600954600d555b6015546001600160a01b038481169116148015610f1357506014546001600160a01b03858116911614155b15610f2557600a54600c55601154600d555b61089c848484846111f2565b60008184841115610f555760405162461bcd60e51b81526004016105f291906116ab565b506000610f628486611a49565b95945050505050565b6012546001600160a01b03166108fc610f85836002611220565b6040518115909202916000818181858888f19350505050158015610fad573d6000803e3d6000fd5b506013546001600160a01b03166108fc610fc8836002611220565b6040518115909202916000818181858888f19350505050158015610ff0573d6000803e3d6000fd5b5050565b600060065482111561105b5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105f2565b6000611065611262565b90506110718382611220565b9392505050565b6015805460ff60a81b1916600160a81b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106110c0576110c06119da565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113d9190611a5c565b81600181518110611150576111506119da565b6001600160a01b03928316602091820292909201015260145461117691309116846109f0565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac947906111af908590600090869030904290600401611a79565b600060405180830381600087803b1580156111c957600080fd5b505af11580156111dd573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b806111ff576111ff611285565b61120a8484846112b3565b8061089c5761089c600e54600c55600f54600d55565b600061107183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506113aa565b600080600061126f6113d8565b909250905061127e8282611220565b9250505090565b600c541580156112955750600d54155b1561129c57565b600c8054600e55600d8054600f5560009182905555565b6000806000806000806112c587611418565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506112f79087611475565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461132690866114b7565b6001600160a01b03891660009081526002602052604090205561134881611516565b6113528483611560565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161139791815260200190565b60405180910390a3505050505050505050565b600081836113cb5760405162461bcd60e51b81526004016105f291906116ab565b506000610f628486611aea565b6006546000908190670de0b6b3a76400006113f38282611220565b82101561140f57505060065492670de0b6b3a764000092509050565b90939092509050565b60008060008060008060008060006114358a600c54600d54611584565b9250925092506000611445611262565b905060008060006114588e8787876115d9565b919e509c509a509598509396509194505050505091939550919395565b600061107183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f31565b6000806114c48385611a36565b9050838110156110715760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105f2565b6000611520611262565b9050600061152e8383611629565b3060009081526002602052604090205490915061154b90826114b7565b30600090815260026020526040902055505050565b60065461156d9083611475565b60065560075461157d90826114b7565b6007555050565b600080808061159e60646115988989611629565b90611220565b905060006115b160646115988a89611629565b905060006115c9826115c38b86611475565b90611475565b9992985090965090945050505050565b60008080806115e88886611629565b905060006115f68887611629565b905060006116048888611629565b90506000611616826115c38686611475565b939b939a50919850919650505050505050565b60008260000361163b57506000610559565b60006116478385611a1f565b9050826116548583611aea565b146110715760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105f2565b600060208083528351808285015260005b818110156116d8578581018301518582016040015282016116bc565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461066157600080fd5b6000806040838503121561172157600080fd5b823561172c816116f9565b946020939093013593505050565b60008060006060848603121561174f57600080fd5b833561175a816116f9565b9250602084013561176a816116f9565b929592945050506040919091013590565b8035801515811461178b57600080fd5b919050565b6000602082840312156117a257600080fd5b6110718261177b565b6000602082840312156117bd57600080fd5b8135611071816116f9565b6000602082840312156117da57600080fd5b5035919050565b6000806000604084860312156117f657600080fd5b833567ffffffffffffffff8082111561180e57600080fd5b818601915086601f83011261182257600080fd5b81358181111561183157600080fd5b8760208260051b850101111561184657600080fd5b60209283019550935061185c918601905061177b565b90509250925092565b6000806040838503121561187857600080fd5b8235611883816116f9565b91506020830135611893816116f9565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126118c557600080fd5b813567ffffffffffffffff808211156118e0576118e061189e565b604051601f8301601f19908116603f011681019082821181831017156119085761190861189e565b8160405283815286602085880101111561192157600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561195457600080fd5b823567ffffffffffffffff8082111561196c57600080fd5b611978868387016118b4565b9350602085013591508082111561198e57600080fd5b5061199b858286016118b4565b9150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611a1857611a186119f0565b5060010190565b8082028115828204841417610559576105596119f0565b80820180821115610559576105596119f0565b81810381811115610559576105596119f0565b600060208284031215611a6e57600080fd5b8151611071816116f9565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ac95784516001600160a01b031683529383019391830191600101611aa4565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611b0757634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b8156ea437e74272e693ae446fa71b8586df3d543f2582b787d131b2b5a8424264736f6c63430008120033