60806040526005805460ff19166001908117909155600a6006819055600f6007556008829055600991825560148155601e600b55601f600c556000600d5562000049919062000353565b6200005890629896806200036b565b600e55620000696009600a62000353565b6200007890629896806200036b565b600f55620000896009600a62000353565b6200009890623d09006200036b565b601055620000a96009600a62000353565b620000b9906301312d006200036b565b6011556013805461ffff60a81b19169055348015620000d757600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060058054610100600160a81b03191661010033021790556200013e6009600a62000353565b6200014e90633b9aca006200036b565b336000908152600160208190526040822092909255600390620001796000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260039093528183208054851660019081179091556005546101009004909116835291208054909216179055620001dd3390565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002176009600a62000353565b6200022790633b9aca006200036b565b60405190815260200160405180910390a362000385565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002955781600019048211156200027957620002796200023e565b808516156200028757918102915b93841c939080029062000259565b509250929050565b600082620002ae575060016200034d565b81620002bd575060006200034d565b8160018114620002d65760028114620002e15762000301565b60019150506200034d565b60ff841115620002f557620002f56200023e565b50506001821b6200034d565b5060208310610133831016604e8410600b841016171562000326575081810a6200034d565b62000332838362000254565b80600019048211156200034957620003496200023e565b0290505b92915050565b60006200036460ff8416836200029d565b9392505050565b80820281158282048414176200034d576200034d6200023e565b611cfa80620003956000396000f3fe60806040526004361061012e5760003560e01c80637d1db4a5116100ab578063bf474bed1161006f578063bf474bed1461033f578063c876d0b914610355578063c9567bf91461036f578063dd62ed3e14610384578063ec1f3f63146103ca578063f1217fde146103ea57600080fd5b80637d1db4a51461029c5780638da5cb5b146102b25780638f9a55c0146102da57806395d89b41146102f0578063a9059cbb1461031f57600080fd5b8063313ce567116100f2578063313ce5671461020957806351bc3c851461022557806370a082311461023c578063715018a614610272578063751039fc1461028757600080fd5b806306fdde031461013a578063095ea7b3146101805780630faee56f146101b057806318160ddd146101d457806323b872dd146101e957600080fd5b3661013557005b600080fd5b34801561014657600080fd5b5060408051808201909152600b81526a466169727920416c70686160a81b60208201525b6040516101779190611844565b60405180910390f35b34801561018c57600080fd5b506101a061019b3660046118aa565b61040a565b6040519015158152602001610177565b3480156101bc57600080fd5b506101c660115481565b604051908152602001610177565b3480156101e057600080fd5b506101c6610421565b3480156101f557600080fd5b506101a06102043660046118d6565b610442565b34801561021557600080fd5b5060405160098152602001610177565b34801561023157600080fd5b5061023a6104ab565b005b34801561024857600080fd5b506101c6610257366004611917565b6001600160a01b031660009081526001602052604090205490565b34801561027e57600080fd5b5061023a610503565b34801561029357600080fd5b5061023a610580565b3480156102a857600080fd5b506101c6600e5481565b3480156102be57600080fd5b506000546040516001600160a01b039091168152602001610177565b3480156102e657600080fd5b506101c6600f5481565b3480156102fc57600080fd5b5060408051808201909152600681526546414c50484160d01b602082015261016a565b34801561032b57600080fd5b506101a061033a3660046118aa565b61063c565b34801561034b57600080fd5b506101c660105481565b34801561036157600080fd5b506005546101a09060ff1681565b34801561037b57600080fd5b5061023a610649565b34801561039057600080fd5b506101c661039f366004611934565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156103d657600080fd5b5061023a6103e536600461196d565b610a05565b3480156103f657600080fd5b5061023a61040536600461196d565b610a51565b6000610417338484610a86565b5060015b92915050565b600061042f6009600a611a80565b61043d90633b9aca00611a8f565b905090565b600061044f848484610baa565b6104a1843361049c85604051806060016040528060288152602001611c9d602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190611206565b610a86565b5060019392505050565b60055461010090046001600160a01b0316336001600160a01b0316146104d057600080fd5b3060009081526001602052604090205480156104ef576104ef81611240565b4780156104ff576104ff816113ba565b5050565b6000546001600160a01b031633146105365760405162461bcd60e51b815260040161052d90611aa6565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146105aa5760405162461bcd60e51b815260040161052d90611aa6565b6105b66009600a611a80565b6105c490633b9aca00611a8f565b600e556105d36009600a611a80565b6105e190633b9aca00611a8f565b600f556005805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61061b6009600a611a80565b61062990633b9aca00611a8f565b60405190815260200160405180910390a1565b6000610417338484610baa565b6000546001600160a01b031633146106735760405162461bcd60e51b815260040161052d90611aa6565b601354600160a01b900460ff16156106cd5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161052d565b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556107169030906107086009600a611a80565b61049c90633b9aca00611a8f565b601260009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610769573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078d9190611adb565b6001600160a01b031663c9c6539630601260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108139190611adb565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610860573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108849190611adb565b601380546001600160a01b039283166001600160a01b03199091161790556012541663f305d71947306108cc816001600160a01b031660009081526001602052604090205490565b6000806108e16000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610949573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061096e9190611af8565b505060135460125460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af11580156109c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109eb9190611b26565b506013805462ff00ff60a01b19166201000160a01b179055565b60055461010090046001600160a01b0316336001600160a01b031614610a2a57600080fd5b6008548111158015610a3e57506009548111155b610a4757600080fd5b6008819055600955565b6000546001600160a01b03163314610a7b5760405162461bcd60e51b815260040161052d90611aa6565b601455600019600c55565b6001600160a01b038316610ae85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161052d565b6001600160a01b038216610b495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161052d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c0e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161052d565b6001600160a01b038216610c705760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161052d565b60008111610cd25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161052d565b600080546001600160a01b03858116911614801590610cff57506000546001600160a01b03848116911614155b156110c357610d306064610d2a600a54600d5411610d1f57600654610d23565b6008545b85906113f8565b90611481565b60055490915060ff1615610e18576012546001600160a01b03848116911614801590610d6a57506013546001600160a01b03848116911614155b15610e1857326000908152600460205260409020544311610e055760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a40161052d565b3260009081526004602052604090204390555b6013546001600160a01b038581169116148015610e4357506012546001600160a01b03848116911614155b8015610e6857506001600160a01b03831660009081526003602052604090205460ff16155b15610f5057600e54821115610ebf5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161052d565b600f5482610ee2856001600160a01b031660009081526001602052604090205490565b610eec9190611b48565b1115610f3a5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161052d565b600d8054906000610f4a83611b5b565b91905055505b6013546001600160a01b038481169116148015610f7657506001600160a01b0384163014155b15610fa357610fa06064610d2a600b54600d5411610f9657600754610d23565b60095485906113f8565b90505b306000908152600160205260409020546013546001600160a01b038581169116148015610fd1575060145415155b1561103557610fe8610fe38385611b48565b6114c3565b156110355760405162461bcd60e51b815260206004820152601760248201527f53776170207468726573686f6c6420726561636865642e000000000000000000604482015260640161052d565b601354600160a81b900460ff1615801561105c57506013546001600160a01b038581169116145b80156110715750601354600160b01b900460ff165b801561107e575060105481115b801561108d5750600c54600d54115b156110c1576110af6110aa846110a58460115461151a565b61151a565b611240565b4780156110bf576110bf476113ba565b505b505b801561113d57306000908152600160205260409020546110e3908261152f565b30600081815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111349085815260200190565b60405180910390a35b6001600160a01b038416600090815260016020526040902054611160908361158e565b6001600160a01b0385166000908152600160205260409020556111a5611186838361158e565b6001600160a01b0385166000908152600160205260409020549061152f565b6001600160a01b0380851660008181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6111ef858561158e565b60405190815260200160405180910390a350505050565b6000818484111561122a5760405162461bcd60e51b815260040161052d9190611844565b5060006112378486611b74565b95945050505050565b6013805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061128857611288611b87565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156112e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113059190611adb565b8160018151811061131857611318611b87565b6001600160a01b03928316602091820292909201015260125461133e9130911684610a86565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790611377908590600090869030904290600401611b9d565b600060405180830381600087803b15801561139157600080fd5b505af11580156113a5573d6000803e3d6000fd5b50506013805460ff60a81b1916905550505050565b6005546040516101009091046001600160a01b0316906108fc8315029083906000818181858888f193505050501580156104ff573d6000803e3d6000fd5b60008260000361140a5750600061041b565b60006114168385611a8f565b9050826114238583611c0e565b1461147a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161052d565b9392505050565b600061147a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115d0565b601354600090819081906114df906001600160a01b03166115fe565b915091506114ee601454431090565b156114fd575060009392505050565b6115068161168c565b6115118383876116b2565b10949350505050565b6000818311611529578261147a565b50919050565b60008061153c8385611b48565b90508381101561147a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161052d565b600061147a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611206565b600081836115f15760405162461bcd60e51b815260040161052d9190611844565b5060006112378486611c0e565b6000806000839050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611647573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166b9190611c4c565b509150915060008061167d84846116e4565b90999098509650505050505050565b60006116a06702c68af0bb14000083611c0e565b61041b906702c68af0bb140000611a8f565b60006116be8483611807565b6116c8848461182b565b6116d29190611c0e565b6116dc9084611b74565b949350505050565b6013546040805163d21220a760e01b8152905160009283926001600160a01b0390911691829163d21220a79160048083019260209291908290030181865afa158015611734573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117589190611adb565b6001600160a01b0316601260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d89190611adb565b6001600160a01b0316146117ed5783856117f0565b84845b6001600160701b0391821697911695509350505050565b6000611815826103e5611a8f565b611821846103e8611a8f565b61147a9190611b48565b60008261183a836103e5611a8f565b61147a9190611a8f565b600060208083528351808285015260005b8181101561187157858101830151858201604001528201611855565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146118a757600080fd5b50565b600080604083850312156118bd57600080fd5b82356118c881611892565b946020939093013593505050565b6000806000606084860312156118eb57600080fd5b83356118f681611892565b9250602084013561190681611892565b929592945050506040919091013590565b60006020828403121561192957600080fd5b813561147a81611892565b6000806040838503121561194757600080fd5b823561195281611892565b9150602083013561196281611892565b809150509250929050565b60006020828403121561197f57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156119d75781600019048211156119bd576119bd611986565b808516156119ca57918102915b93841c93908002906119a1565b509250929050565b6000826119ee5750600161041b565b816119fb5750600061041b565b8160018114611a115760028114611a1b57611a37565b600191505061041b565b60ff841115611a2c57611a2c611986565b50506001821b61041b565b5060208310610133831016604e8410600b8410161715611a5a575081810a61041b565b611a64838361199c565b8060001904821115611a7857611a78611986565b029392505050565b600061147a60ff8416836119df565b808202811582820484141761041b5761041b611986565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611aed57600080fd5b815161147a81611892565b600080600060608486031215611b0d57600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215611b3857600080fd5b8151801515811461147a57600080fd5b8082018082111561041b5761041b611986565b600060018201611b6d57611b6d611986565b5060010190565b8181038181111561041b5761041b611986565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611bed5784516001600160a01b031683529383019391830191600101611bc8565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611c2b57634e487b7160e01b600052601260045260246000fd5b500490565b80516001600160701b0381168114611c4757600080fd5b919050565b600080600060608486031215611c6157600080fd5b611c6a84611c30565b9250611c7860208501611c30565b9150604084015163ffffffff81168114611c9157600080fd5b80915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208f445fadb4af9a9a5c77eab33eb74f83030436058d79ec13f75c24cd2917ceb264736f6c63430008110033