60806040526005805460ff1916600190811790915560026006819055600460075560089190915560095561012c600a818155600b919091556207a120600c556000600d55620000519060129062000495565b62000061906305f5e100620004ad565b600e55620000726012600a62000495565b62000082906377359400620004ad565b600f55620000936012600a62000495565b620000a29062989680620004ad565b601055620000b36012600a62000495565b620000c3906302faf080620004ad565b6011556013805461ffff60a81b19169055348015620000e157600080fd5b50600080546001600160a01b0319168155604051819081907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060058054610100600160a81b0319166101003302179055620001446012600a62000495565b620001549063fa56ea00620004ad565b3360009081526001602081905260408220929092556003906200017f6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260039093528183208054851660019081179091556005546101009004909116835291208054909216179055620001e562000248565b620001ef620002e2565b3360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002216012600a62000495565b620002319063fa56ea00620004ad565b60405190815260200160405180910390a3620004c7565b601354600160a01b900460ff1615620002a75760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640160405180910390fd5b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556013805460ff60a01b1916600160a01b179055565b620002f06012600a62000495565b620003009063fa56ea00620004ad565b600e55620003116012600a62000495565b620003219063fa56ea00620004ad565b600f556005805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6200035d6012600a62000495565b6200036d9063fa56ea00620004ad565b60405190815260200160405180910390a1565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003d7578160001904821115620003bb57620003bb62000380565b80851615620003c957918102915b93841c93908002906200039b565b509250929050565b600082620003f0575060016200048f565b81620003ff575060006200048f565b8160018114620004185760028114620004235762000443565b60019150506200048f565b60ff84111562000437576200043762000380565b50506001821b6200048f565b5060208310610133831016604e8410600b841016171562000468575081810a6200048f565b62000474838362000396565b80600019048211156200048b576200048b62000380565b0290505b92915050565b6000620004a660ff841683620003df565b9392505050565b80820281158282048414176200048f576200048f62000380565b61155680620004d76000396000f3fe6080604052600436106101185760003560e01c80637d1db4a5116100a0578063a9059cbb11610064578063a9059cbb14610310578063bf474bed14610330578063c876d0b914610346578063c9567bf914610360578063dd62ed3e1461037557600080fd5b80637d1db4a5146102785780638da5cb5b1461028e5780638f9a55c0146102b657806395d89b41146102cc578063a1780c18146102fb57600080fd5b806323b872dd116100e757806323b872dd146101da578063313ce567146101fa57806370a0823114610216578063715018a61461024c578063751039fc1461026357600080fd5b806306fdde0314610124578063095ea7b3146101715780630faee56f146101a157806318160ddd146101c557600080fd5b3661011f57005b600080fd5b34801561013057600080fd5b5060408051808201909152601281527129ba30b73632bc903a343290213ab3b6b0b760711b60208201525b6040516101689190611191565b60405180910390f35b34801561017d57600080fd5b5061019161018c3660046111f7565b6103bb565b6040519015158152602001610168565b3480156101ad57600080fd5b506101b760115481565b604051908152602001610168565b3480156101d157600080fd5b506101b76103d2565b3480156101e657600080fd5b506101916101f5366004611223565b6103f3565b34801561020657600080fd5b5060405160128152602001610168565b34801561022257600080fd5b506101b7610231366004611264565b6001600160a01b031660009081526001602052604090205490565b34801561025857600080fd5b5061026161045c565b005b34801561026f57600080fd5b50610261610505565b34801561028457600080fd5b506101b7600e5481565b34801561029a57600080fd5b506000546040516001600160a01b039091168152602001610168565b3480156102c257600080fd5b506101b7600f5481565b3480156102d857600080fd5b50604080518082019091526006815265212aa3a6a0a760d11b602082015261015b565b34801561030757600080fd5b50610261610597565b34801561031c57600080fd5b5061019161032b3660046111f7565b6105f9565b34801561033c57600080fd5b506101b760105481565b34801561035257600080fd5b506005546101919060ff1681565b34801561036c57600080fd5b50610261610606565b34801561038157600080fd5b506101b7610390366004611281565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b60006103c833848461069b565b5060015b92915050565b60006103e06012600a6113b4565b6103ee9063fa56ea006113c3565b905090565b60006104008484846107bf565b610452843361044d856040518060600160405280602881526020016114f9602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610df0565b61069b565b5060019392505050565b6000546001600160a01b031633146104bb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6105116012600a6113b4565b61051f9063fa56ea006113c3565b600e5561052e6012600a6113b4565b61053c9063fa56ea006113c3565b600f556005805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6105766012600a6113b4565b6105849063fa56ea006113c3565b60405190815260200160405180910390a1565b60055461010090046001600160a01b0316336001600160a01b0316146105bc57600080fd5b3060009081526001602052604090205480156105db576105db81610e2a565b476729a2241af62c00008111156105f5576105f581610fa4565b5050565b60006103c83384846107bf565b601354600160a01b900460ff16156106605760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104b2565b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556013805460ff60a01b1916600160a01b179055565b6001600160a01b0383166106fd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104b2565b6001600160a01b03821661075e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104b2565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166108235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104b2565b6001600160a01b0382166108855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104b2565b600081116108e75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104b2565b600080546001600160a01b0385811691161480159061091457506000546001600160a01b03848116911614155b15610c5f57610945606461093f600a54600d541161093457600654610938565b6008545b8590610fe2565b9061106b565b60055490915060ff1615610a2d576012546001600160a01b0384811691161480159061097f57506013546001600160a01b03848116911614155b15610a2d57326000908152600460205260409020544311610a1a5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a4016104b2565b3260009081526004602052604090204390555b6013546001600160a01b038581169116148015610a5857506012546001600160a01b03848116911614155b8015610a7d57506001600160a01b03831660009081526003602052604090205460ff16155b15610b6557600e54821115610ad45760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016104b2565b600f5482610af7856001600160a01b031660009081526001602052604090205490565b610b0191906113da565b1115610b4f5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016104b2565b600d8054906000610b5f836113ed565b91905055505b6013546001600160a01b038481169116148015610b8b57506001600160a01b0384163014155b15610bb857610bb5606461093f600b54600d5411610bab57600754610938565b6009548590610fe2565b90505b30600090815260016020526040902054601354600160a81b900460ff16158015610bef57506013546001600160a01b038581169116145b8015610c045750601354600160b01b900460ff165b8015610c11575060105481115b8015610c205750600c54600d54115b15610c5d57610c42610c3d84610c38846011546110ad565b6110ad565b610e2a565b4766b1a2bc2ec50000811115610c5b57610c5b47610fa4565b505b505b8015610d2757506040516370a0823160e01b81526001600160a01b038416600482015260009073551464e900de90428cd53d51c8d6fbba13abedac90829082906370a08231906024016020604051808303816000875af1158015610cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ceb9190611406565b9050610cf7818461141f565b30600090815260016020526040902054909350610d1490846110c2565b3060009081526001602052604090205550505b6001600160a01b038416600090815260016020526040902054610d4a9083611121565b6001600160a01b038516600090815260016020526040902055610d8f610d708383611121565b6001600160a01b038516600090815260016020526040902054906110c2565b6001600160a01b0380851660008181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610dd98585611121565b60405190815260200160405180910390a350505050565b60008184841115610e145760405162461bcd60e51b81526004016104b29190611191565b506000610e21848661141f565b95945050505050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610e7257610e72611432565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ecb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eef9190611448565b81600181518110610f0257610f02611432565b6001600160a01b039283166020918202929092010152601254610f28913091168461069b565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790610f61908590600090869030904290600401611465565b600060405180830381600087803b158015610f7b57600080fd5b505af1158015610f8f573d6000803e3d6000fd5b50506013805460ff60a81b1916905550505050565b6005546040516101009091046001600160a01b0316906108fc8315029083906000818181858888f193505050501580156105f5573d6000803e3d6000fd5b600082600003610ff4575060006103cc565b600061100083856113c3565b90508261100d85836114d6565b146110645760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104b2565b9392505050565b600061106483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611163565b60008183116110bc5782611064565b50919050565b6000806110cf83856113da565b9050838110156110645760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104b2565b600061106483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610df0565b600081836111845760405162461bcd60e51b81526004016104b29190611191565b506000610e2184866114d6565b600060208083528351808285015260005b818110156111be578581018301518582016040015282016111a2565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146111f457600080fd5b50565b6000806040838503121561120a57600080fd5b8235611215816111df565b946020939093013593505050565b60008060006060848603121561123857600080fd5b8335611243816111df565b92506020840135611253816111df565b929592945050506040919091013590565b60006020828403121561127657600080fd5b8135611064816111df565b6000806040838503121561129457600080fd5b823561129f816111df565b915060208301356112af816111df565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561130b5781600019048211156112f1576112f16112ba565b808516156112fe57918102915b93841c93908002906112d5565b509250929050565b600082611322575060016103cc565b8161132f575060006103cc565b8160018114611345576002811461134f5761136b565b60019150506103cc565b60ff841115611360576113606112ba565b50506001821b6103cc565b5060208310610133831016604e8410600b841016171561138e575081810a6103cc565b61139883836112d0565b80600019048211156113ac576113ac6112ba565b029392505050565b600061106460ff841683611313565b80820281158282048414176103cc576103cc6112ba565b808201808211156103cc576103cc6112ba565b6000600182016113ff576113ff6112ba565b5060010190565b60006020828403121561141857600080fd5b5051919050565b818103818111156103cc576103cc6112ba565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561145a57600080fd5b8151611064816111df565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156114b55784516001600160a01b031683529383019391830191600101611490565b50506001600160a01b03969096166060850152505050608001529392505050565b6000826114f357634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d7ea542edec2a5e85204334ea73080e13b785f3c6d0893ea5b241e6605bc465064736f6c63430008130033