6080604052600480546001600160a01b031990811661dead17909155600580549091169055620000326012600a620006bc565b62000042906305f5e1006200077d565b600655606460065462000056919062000650565b600755600e805460ff19166001908117909155600a601155601280546001600160a01b031916730e64003cb5581aa37678c7c5044bd5cf95f911b91790556014805461ffff60a01b1916600160a81b17905560065461138891620000bb91906200077d565b620000c7919062000650565b601555348015620000d757600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c464891600480820192602092909190829003018186803b1580156200017957600080fd5b505afa1580156200018e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b491906200061e565b600380546001600160a01b0319166001600160a01b039283161790556013546040805163c45a015560e01b81529051919092169163c45a0155916004808301926020929190829003018186803b1580156200020e57600080fd5b505afa15801562000223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024991906200061e565b6003546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b1580156200029657600080fd5b505af1158015620002ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d191906200061e565b601480546001600160a01b0319166001600160a01b03929092169182179055620002fd906001620003cf565b3060008181526009602090815260408083206013546001600160a01b039081168552908352818420600019905533808552600c8085528386208054600160ff199182168117909255600d8088528689208054831684179055988852918652848720805483168217905596855283862080548216881790556014549092168552828520805490921690951790556006548484526008835281842081905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000819565b6001600160a01b0382166000908152600b602052604090205460ff1615158115151415620004385760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b60448201526064015b60405180910390fd5b6001600160a01b0382166000908152600b60205260409020805460ff19168215801591909117909155620004b757600a80546001810182556000919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0384166001600160a01b03199091161790555050565b600a54600110620004fd5760405162461bcd60e51b815260206004820152600f60248201526e2932b8bab4b932b21018903830b4b960891b60448201526064016200042f565b60005b600a548110156200061957826001600160a01b0316600a82815481106200052b576200052b62000803565b6000918252602090912001546001600160a01b031614156200060457600a805462000559906001906200079f565b815481106200056c576200056c62000803565b600091825260209091200154600a80546001600160a01b0390921691839081106200059b576200059b62000803565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600a805480620005dd57620005dd620007ed565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b806200061081620007b9565b91505062000500565b505050565b6000602082840312156200063157600080fd5b81516001600160a01b03811681146200064957600080fd5b9392505050565b6000826200066e57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620006b4578160001904821115620006985762000698620007d7565b80851615620006a657918102915b93841c939080029062000678565b509250929050565b60006200064960ff841683600082620006d85750600162000777565b81620006e75750600062000777565b81600181146200070057600281146200070b576200072b565b600191505062000777565b60ff8411156200071f576200071f620007d7565b50506001821b62000777565b5060208310610133831016604e8410600b841016171562000750575081810a62000777565b6200075c838362000673565b8060001904821115620007735762000773620007d7565b0290505b92915050565b60008160001904831182151516156200079a576200079a620007d7565b500290565b600082821015620007b457620007b4620007d7565b500390565b6000600019821415620007d057620007d0620007d7565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b61190680620008296000396000f3fe6080604052600436106101e75760003560e01c806370a08231116101025780639d9241ec11610095578063d00efb2f11610064578063d00efb2f146105b0578063dd62ed3e146105c6578063e1d5584c1461060c578063f887ea401461062c57600080fd5b80639d9241ec1461052a578063a8aa1b3114610540578063a9059cbb14610560578063b62496f51461058057600080fd5b80638a8c523c116100d15780638a8c523c146104a95780638cd09d50146104be5780638da5cb5b146104de57806395d89b41146104fc57600080fd5b806370a082311461040c578063715018a614610442578063788cea1614610457578063893d20e81461047757600080fd5b8063313ce5671161017a57806359b107b91161014957806359b107b9146103a0578063683bdae3146103b55780636c0a24eb146103d55780636ddd1713146103eb57600080fd5b8063313ce567146103135780633f4218e01461032f5780634ada218b1461035f578063571ac8b01461038057600080fd5b80630bd11f8a116101b65780630bd11f8a1461029957806318160ddd146102c957806323b872dd146102de5780632b112e49146102fe57600080fd5b80630223aa69146101f35780630445b6671461020a57806306fdde0314610233578063095ea7b31461026957600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5061020861064c565b005b34801561021657600080fd5b5061022060155481565b6040519081526020015b60405180910390f35b34801561023f57600080fd5b506040805180820190915260048152631091549560e21b60208201525b60405161022a919061173d565b34801561027557600080fd5b5061028961028436600461161c565b6106b7565b604051901515815260200161022a565b3480156102a557600080fd5b506102896102b4366004611568565b600d6020526000908152604090205460ff1681565b3480156102d557600080fd5b50600654610220565b3480156102ea57600080fd5b506102896102f93660046115b6565b610724565b34801561030a57600080fd5b506102206107ed565b34801561031f57600080fd5b506040516012815260200161022a565b34801561033b57600080fd5b5061028961034a366004611568565b600c6020526000908152604090205460ff1681565b34801561036b57600080fd5b5060145461028990600160a01b900460ff1681565b34801561038c57600080fd5b5061028961039b366004611568565b61083f565b3480156103ac57600080fd5b50610220600081565b3480156103c157600080fd5b506102086103d0366004611646565b61084d565b3480156103e157600080fd5b5061022060075481565b3480156103f757600080fd5b5060145461028990600160a81b900460ff1681565b34801561041857600080fd5b50610220610427366004611568565b6001600160a01b031660009081526008602052604090205490565b34801561044e57600080fd5b50610208610915565b34801561046357600080fd5b506102086104723660046115f2565b6109c6565b34801561048357600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161022a565b3480156104b557600080fd5b50610208610a4b565b3480156104ca57600080fd5b506102086104d9366004611724565b610ac2565b3480156104ea57600080fd5b506000546001600160a01b0316610491565b34801561050857600080fd5b50604080518082019091526005815264091091549560da1b602082015261025c565b34801561053657600080fd5b5061022060115481565b34801561054c57600080fd5b50601454610491906001600160a01b031681565b34801561056c57600080fd5b5061028961057b36600461161c565b610b6f565b34801561058c57600080fd5b5061028961059b366004611568565b600b6020526000908152604090205460ff1681565b3480156105bc57600080fd5b5061022060025481565b3480156105d257600080fd5b506102206105e1366004611583565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b34801561061857600080fd5b50610491610627366004611724565b610b7c565b34801561063857600080fd5b50601354610491906001600160a01b031681565b6000546001600160a01b031633146106ab5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600e805460ff19169055565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107129086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383166000908152600960209081526040808320338452909152812054600019146107d857604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b03871660009081526009825283812033825290915291909120546107b3918490610ba6565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6107e3848484610be0565b90505b9392505050565b6005546001600160a01b031660009081526008602052604081205461083a906004546001600160a01b03166000908152600860205260409020546108349060065490610fdc565b90610fdc565b905090565b600061071e826000196106b7565b6000546001600160a01b031633146108a75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a2565b815160005b8181101561090f5782601060008684815181106108cb576108cb6118a4565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061090781611873565b9150506108ac565b50505050565b6000546001600160a01b0316331461096f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b6000546001600160a01b03163314610a205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a2565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610aa55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a2565b6014805460ff60a01b1916600160a01b1790554360025542600f55565b6000546001600160a01b03163314610b1c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a2565b8015610b6a5760405162461bcd60e51b815260206004820152601560248201527f43616e206f6e6c79207365742074617820746f2030000000000000000000000060448201526064016106a2565b601155565b60006107e6338484610be0565b600a8181548110610b8c57600080fd5b6000918252602090912001546001600160a01b0316905081565b60008184841115610bca5760405162461bcd60e51b81526004016106a2919061173d565b506000610bd7848661185c565b95945050505050565b60165460009060ff1615610c0057610bf984848461101e565b90506107e6565b6001600160a01b0384166000908152600c602052604090205460ff16158015610c4257506001600160a01b0383166000908152600c602052604090205460ff16155b15610ca057601454600160a01b900460ff16610ca05760405162461bcd60e51b815260206004820152601460248201527f54726164696e67206e6f74206f70656e2079657400000000000000000000000060448201526064016106a2565b610ca861110d565b15610cb557610cb5611165565b6001600160a01b0384166000908152600b6020526040902054829060ff1615610e14576001600160a01b0384166000908152600c602052604090205460ff16610e0f576007546001600160a01b038516600090815260086020526040902054610d1e9085611277565b111580610d4357506001600160a01b0384166000908152600d602052604090205460ff165b610d8f5760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d69742045786365656465640060448201526064016106a2565b600e5460ff1615610e02576001600160a01b03841660009081526010602052604090205460ff16610e025760405162461bcd60e51b815260206004820152600e60248201527f63616e2774206275792c2079657400000000000000000000000000000000000060448201526064016106a2565b610e0c85846112d6565b90505b610f23565b6001600160a01b0384166000908152600b602052604090205460ff1615610e5f576001600160a01b0385166000908152600c602052604090205460ff16610e0f57610e0c858461136f565b6001600160a01b0385166000908152600c602052604090205460ff16610f23576007546001600160a01b038516600090815260086020526040902054610ea59085611277565b111580610eca57506001600160a01b0384166000908152600d602052604090205460ff165b610f165760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d69742045786365656465640060448201526064016106a2565b610f208584611414565b90505b6001600160a01b038516600090815260086020526040902054610f469084610fdc565b6001600160a01b038087166000908152600860205260408082209390935590861681522054610f759082611277565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fc99085815260200190565b60405180910390a3506001949350505050565b60006107e683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ba6565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b0386166000908152600890915291822054611078918490610ba6565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546110a79083611277565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110fb9086815260200190565b60405180910390a35060019392505050565b336000908152600b602052604081205460ff16158015611130575060165460ff16155b80156111455750601454600160a81b900460ff165b801561083a57505060155430600090815260086020526040902054101590565b6016805460ff1916600117905560408051600280825260608201835260009260208301908036833701905050905030816000815181106111a7576111a76118a4565b6001600160a01b0392831660209182029290920101526003548251911690829060019081106111d8576111d86118a4565b6001600160a01b039283166020918202929092018101919091526013543060009081526008909252604080832054601254915163791ac94760e01b81529285169463791ac947946112389492939092889291909116904290600401611792565b600060405180830381600087803b15801561125257600080fd5b505af1158015611266573d6000803e3d6000fd5b50506016805460ff19169055505050565b6000806112848385611803565b9050838110156107e65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106a2565b600080806112ef60646112e98684611452565b906114d1565b3060009081526008602052604090205490915061130c9082611277565b30600081815260086020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061135d9085815260200190565b60405180910390a3610bd78482610fdc565b60008061138c60646112e96011548661145290919063ffffffff16565b306000908152600860205260409020549091506113a99082611277565b30600081815260086020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113fa9085815260200190565b60405180910390a361140c8382610fdc565b949350505050565b60008061142660646112e98584611452565b9050801561144857306000908152600860205260409020546113a99082611277565b61140c8382610fdc565b6000826114615750600061071e565b600061146d838561183d565b90508261147a858361181b565b146107e65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106a2565b60006107e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506000818361152f5760405162461bcd60e51b81526004016106a2919061173d565b506000610bd7848661181b565b80356001600160a01b038116811461155357600080fd5b919050565b8035801515811461155357600080fd5b60006020828403121561157a57600080fd5b6107e68261153c565b6000806040838503121561159657600080fd5b61159f8361153c565b91506115ad6020840161153c565b90509250929050565b6000806000606084860312156115cb57600080fd5b6115d48461153c565b92506115e26020850161153c565b9150604084013590509250925092565b6000806040838503121561160557600080fd5b61160e8361153c565b91506115ad60208401611558565b6000806040838503121561162f57600080fd5b6116388361153c565b946020939093013593505050565b6000806040838503121561165957600080fd5b823567ffffffffffffffff8082111561167157600080fd5b818501915085601f83011261168557600080fd5b8135602082821115611699576116996118ba565b8160051b604051601f19603f830116810181811086821117156116be576116be6118ba565b604052838152828101945085830182870184018b10156116dd57600080fd5b600096505b84871015611707576116f38161153c565b8652600196909601959483019483016116e2565b5096506117179050878201611558565b9450505050509250929050565b60006020828403121561173657600080fd5b5035919050565b600060208083528351808285015260005b8181101561176a5785810183015185820160400152820161174e565b8181111561177c576000604083870101525b50601f01601f1916929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117e25784516001600160a01b0316835293830193918301916001016117bd565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156118165761181661188e565b500190565b60008261183857634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156118575761185761188e565b500290565b60008282101561186e5761186e61188e565b500390565b60006000198214156118875761188761188e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212201708a81ee468ddeedf184b11403644c3a3ccaf63409f0845dbe31d779bb3cdbf64736f6c63430008070033