60c060405260046080908152634d55444960e01b60a05260019062000025908262000617565b506040805180820190915260048152634d55444960e01b602082015260029062000050908262000617565b506003805460ff191660099081179091556200006e90600a620007f0565b620000819066038d7ea4c6800062000800565b600d819055620000a2906064906200009b90600162000414565b90620004a7565b600e55600d54620000bd906064906200009b90600162000414565b600f55600d54620000d8906064906200009b90600162000414565b6010556011805463ffffffff60a01b1916630101010160a01b17905534801562000100575f80fd5b506200010c33620004f0565b601180546001600160a01b031916331790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a0155916004808201926020929091908290030181865afa15801562000170573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200019691906200081a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200020891906200081a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000253573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200027991906200081a565b601380546001600160a01b03199081166001600160a01b0393841617825560128054909116848416179055305f818152600860209081526040808320805460ff199081166001908117909255338086528386208054831684179055600a8552838620805483168417905586865283862080548316841790557f20677881080440a9b3c87e826370bb5d9c2f74efd4dede686d52d77a6a09f8bb80548316841790558754891686528386208054831684179055808652600c855283862080548316841790558686528386208054831684179055600b85527f44433eeeda1d04bdae79f62169cdb2ab0a6af287fa15706d3fafdbac5fac34158054831684179055808652838620805483168417905595855282852080548216831790558654909716845260098352818420805490971617909555605a60048190556005558354600160a81b60ff60a81b1990911617909355600d54828252600684528482208190559351938452909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620008b0565b5f825f036200042557505f620004a1565b5f62000432838562000800565b90508262000441858362000842565b146200049e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f6200049e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200053f60201b60201c565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f8183620005625760405162461bcd60e51b815260040162000495919062000862565b505f62000570848662000842565b95945050505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620005a257607f821691505b602082108103620005c157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200061257805f5260205f20601f840160051c81016020851015620005ee5750805b601f840160051c820191505b818110156200060f575f8155600101620005fa565b50505b505050565b81516001600160401b0381111562000633576200063362000579565b6200064b816200064484546200058d565b84620005c7565b602080601f83116001811462000681575f8415620006695750858301515b5f19600386901b1c1916600185901b178555620006db565b5f85815260208120601f198616915b82811015620006b15788860151825594840194600190910190840162000690565b5085821015620006cf57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200073757815f19048211156200071b576200071b620006e3565b808516156200072957918102915b93841c9390800290620006fc565b509250929050565b5f826200074f57506001620004a1565b816200075d57505f620004a1565b81600181146200077657600281146200078157620007a1565b6001915050620004a1565b60ff841115620007955762000795620006e3565b50506001821b620004a1565b5060208310610133831016604e8410600b8410161715620007c6575081810a620004a1565b620007d28383620006f7565b805f1904821115620007e857620007e8620006e3565b029392505050565b5f6200049e60ff8416836200073f565b8082028115828204841417620004a157620004a1620006e3565b5f602082840312156200082b575f80fd5b81516001600160a01b03811681146200049e575f80fd5b5f826200085d57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602080835283518060208501525f5b81811015620008905785810183015185820160400152820162000872565b505f604082860101526040601f19601f8301168501019250505092915050565b61205a80620008be5f395ff3fe60806040526004361061026d575f3560e01c8063715018a61161014a578063a9059cbb116100be578063df8408fe11610078578063df8408fe1461078f578063e6b2603b146107ae578063e9fd3394146107c2578063ea1ce5a8146107e2578063f242ab4114610802578063f2fde38b14610821575f80fd5b8063a9059cbb146106ab578063ae85ade6146106ca578063b94b0aef146106e9578063c867d60b14610708578063cc1776d314610736578063dd62ed3e1461074b575f80fd5b8063807c2d9c1161010f578063807c2d9c146105f95780638b42507f1461060e5780638da5cb5b1461063c57806395d89b411461065857806395fc8fdf1461066c5780639a2129431461068b575f80fd5b8063715018a61461057e578063728d41c914610592578063751039fc146105b157806375f0a874146105c55780637d1db4a5146105e4575f80fd5b80634f7041a5116101e15780635da0a467116101a65780635da0a4671461049e5780635e42358c146104cc578063651a8987146104ec578063667f65261461050b5780636ddd17131461052a57806370a082311461054a575f80fd5b80634f7041a5146103fe5780635342acb41461041357806357376198146104415780635c85974f146104605780635d098b381461047f575f80fd5b80631693e8d4116102325780631693e8d41461033d57806318160ddd1461035d578063230358521461037157806323b872dd14610390578063313ce567146103af5780633ecad271146103d0575f80fd5b806301339c21146102785780630445b6671461028e57806306fdde03146102b65780630758d924146102d7578063095ea7b31461030e575f80fd5b3661027457005b5f80fd5b348015610283575f80fd5b5061028c610840565b005b348015610299575f80fd5b506102a360105481565b6040519081526020015b60405180910390f35b3480156102c1575f80fd5b506102ca6108d2565b6040516102ad9190611c1b565b3480156102e2575f80fd5b506012546102f6906001600160a01b031681565b6040516001600160a01b0390911681526020016102ad565b348015610319575f80fd5b5061032d610328366004611c61565b610962565b60405190151581526020016102ad565b348015610348575f80fd5b5060135461032d90600160a01b900460ff1681565b348015610368575f80fd5b50600d546102a3565b34801561037c575f80fd5b5061028c61038b366004611c9f565b610978565b34801561039b575f80fd5b5061032d6103aa366004611cb8565b6109bf565b3480156103ba575f80fd5b5060035460405160ff90911681526020016102ad565b3480156103db575f80fd5b5061032d6103ea366004611cf6565b60096020525f908152604090205460ff1681565b348015610409575f80fd5b506102a360045481565b34801561041e575f80fd5b5061032d61042d366004611cf6565b60086020525f908152604090205460ff1681565b34801561044c575f80fd5b5061028c61045b366004611c61565b610a66565b34801561046b575f80fd5b5061028c61047a366004611d11565b610b94565b34801561048a575f80fd5b5061028c610499366004611cf6565b610bc2565b3480156104a9575f80fd5b5061032d6104b8366004611cf6565b600c6020525f908152604090205460ff1681565b3480156104d7575f80fd5b5060115461032d90600160b01b900460ff1681565b3480156104f7575f80fd5b5061028c610506366004611d28565b610c0d565b348015610516575f80fd5b5061028c610525366004611d5b565b610c60565b348015610535575f80fd5b5060115461032d90600160a01b900460ff1681565b348015610555575f80fd5b506102a3610564366004611cf6565b6001600160a01b03165f9081526006602052604090205490565b348015610589575f80fd5b5061028c610c94565b34801561059d575f80fd5b5061028c6105ac366004611d11565b610cc8565b3480156105bc575f80fd5b5061028c610cf6565b3480156105d0575f80fd5b506011546102f6906001600160a01b031681565b3480156105ef575f80fd5b506102a3600e5481565b348015610604575f80fd5b506102a3600f5481565b348015610619575f80fd5b5061032d610628366004611cf6565b600b6020525f908152604090205460ff1681565b348015610647575f80fd5b505f546001600160a01b03166102f6565b348015610663575f80fd5b506102ca610d2f565b348015610677575f80fd5b5061028c610686366004611d7b565b610d3e565b348015610696575f80fd5b5060115461032d90600160b81b900460ff1681565b3480156106b6575f80fd5b5061032d6106c5366004611c61565b610dd1565b3480156106d5575f80fd5b5061028c6106e4366004611d28565b610ddd565b3480156106f4575f80fd5b5061028c610703366004611df8565b610e30565b348015610713575f80fd5b5061032d610722366004611cf6565b600a6020525f908152604090205460ff1681565b348015610741575f80fd5b506102a360055481565b348015610756575f80fd5b506102a3610765366004611e28565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b34801561079a575f80fd5b5061028c6107a9366004611d28565b610e90565b3480156107b9575f80fd5b5061028c610ee3565b3480156107cd575f80fd5b5060115461032d90600160a81b900460ff1681565b3480156107ed575f80fd5b5060135461032d90600160a81b900460ff1681565b34801561080d575f80fd5b506013546102f6906001600160a01b031681565b34801561082c575f80fd5b5061028c61083b366004611cf6565b610fc6565b5f546001600160a01b031633146108725760405162461bcd60e51b815260040161086990611e5f565b60405180910390fd5b601354600160a01b900460ff16156108bd5760405162461bcd60e51b815260206004820152600e60248201526d547261646520456e61626c65642160901b6044820152606401610869565b6013805460ff60a01b1916600160a01b179055565b6060600180546108e190611e94565b80601f016020809104026020016040519081016040528092919081815260200182805461090d90611e94565b80156109585780601f1061092f57610100808354040283529160200191610958565b820191905f5260205f20905b81548152906001019060200180831161093b57829003601f168201915b5050505050905090565b5f61096e33848461105d565b5060015b92915050565b5f546001600160a01b031633146109a15760405162461bcd60e51b815260040161086990611e5f565b60138054911515600160a81b0260ff60a81b19909216919091179055565b5f6109cb84848461110f565b50610a5b8433610a56856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e6365000000000000000081525060075f8b6001600160a01b03166001600160a01b031681526020019081526020015f205f610a363390565b6001600160a01b0316815260208101919091526040015f2054919061152b565b61105d565b5060015b9392505050565b6011546001600160a01b03163314610aaf5760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b6044820152606401610869565b6011546040516001600160a01b039182166024820152604481018390525f9184169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b17905251610b099190611ecc565b5f604051808303815f865af19150503d805f8114610b42576040519150601f19603f3d011682016040523d82523d5f602084013e610b47565b606091505b5050905080610b8f5760405162461bcd60e51b8152602060048201526014602482015273151bdad95b881c185e5b595b9d0819985a5b195960621b6044820152606401610869565b505050565b5f546001600160a01b03163314610bbd5760405162461bcd60e51b815260040161086990611e5f565b600e55565b5f546001600160a01b03163314610beb5760405162461bcd60e51b815260040161086990611e5f565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610c365760405162461bcd60e51b815260040161086990611e5f565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610c895760405162461bcd60e51b815260040161086990611e5f565b600491909155600555565b5f546001600160a01b03163314610cbd5760405162461bcd60e51b815260040161086990611e5f565b610cc65f611563565b565b5f546001600160a01b03163314610cf15760405162461bcd60e51b815260040161086990611e5f565b600f55565b5f546001600160a01b03163314610d1f5760405162461bcd60e51b815260040161086990611e5f565b6011805461ffff60b01b19169055565b6060600280546108e190611e94565b5f546001600160a01b03163314610d675760405162461bcd60e51b815260040161086990611e5f565b5f5b82811015610dcb5781600c5f868685818110610d8757610d87611ee7565b9050602002016020810190610d9c9190611cf6565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610d69565b50505050565b5f610a5b33848461110f565b5f546001600160a01b03163314610e065760405162461bcd60e51b815260040161086990611e5f565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610e595760405162461bcd60e51b815260040161086990611e5f565b6011805461ffff60a01b1916600160a01b9315159390930260ff60a81b191692909217600160a81b91151591909102179055601055565b5f546001600160a01b03163314610eb95760405162461bcd60e51b815260040161086990611e5f565b6001600160a01b03919091165f908152600860205260409020805460ff1916911515919091179055565b6011546001600160a01b03163314610f2c5760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b6044820152606401610869565b6011546040515f916001600160a01b03169047908381818185875af1925050503d805f8114610f76576040519150601f19603f3d011682016040523d82523d5f602084013e610f7b565b606091505b5050905080610fc35760405162461bcd60e51b81526020600482015260146024820152735472616e73616374696f6e204661696c6564212160601b6044820152606401610869565b50565b5f546001600160a01b03163314610fef5760405162461bcd60e51b815260040161086990611e5f565b6001600160a01b0381166110545760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610869565b610fc381611563565b6001600160a01b0383166110865760405163e602df0560e01b81525f6004820152602401610869565b6001600160a01b0382166110af57604051634a1406b160e11b81525f6004820152602401610869565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b03841661113957604051634b637e8f60e11b81525f6004820152602401610869565b6001600160a01b0383166111625760405163ec442f0560e01b81525f6004820152602401610869565b815f03611182576040516367c8957760e01b815260040160405180910390fd5b601354600160b01b900460ff16156111a65761119f8484846115b2565b9050610a5f565b6001600160a01b0384165f908152600c602052604090205460ff161580156111e657506001600160a01b0383165f908152600c602052604090205460ff16155b1561121557601354600160a01b900460ff1661121557604051633c9fd93960e21b815260040160405180910390fd5b305f90815260066020526040902054601054811080159081906112425750601354600160b01b900460ff16155b801561126657506001600160a01b0386165f9081526009602052604090205460ff16155b801561127b5750601154600160a01b900460ff165b801561129f57506001600160a01b0386165f9081526008602052604090205460ff16155b80156112c357506001600160a01b0385165f9081526008602052604090205460ff16155b156112d1576112d182611695565b6001600160a01b0386165f908152600b602052604090205460ff1615801561131157506001600160a01b0385165f908152600b602052604090205460ff16155b80156113265750601154600160b01b900460ff165b1561137357600e548411156113735760405162461bcd60e51b8152602060048201526013602482015272115e18d959591cc81b585e151e105b5bdd5b9d606a1b6044820152606401610869565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f908152600690915291909120546113c491869061152b565b6001600160a01b0387165f908152600660205260408120919091556113e98787611727565b6113fd576113f88787876117c1565b6113ff565b845b601154909150600160b81b900460ff16801561143357506001600160a01b0386165f908152600a602052604090205460ff16155b156114a257600f546114638261145d896001600160a01b03165f9081526006602052604090205490565b906118eb565b11156114a25760405162461bcd60e51b815260206004820152600e60248201526d115e18d959591cc815d85b1b195d60921b6044820152606401610869565b6001600160a01b0386165f908152600660205260409020546114c490826118eb565b6001600160a01b038088165f8181526006602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115179085815260200190565b60405180910390a360019350505050610a5f565b5f818484111561154e5760405162461bcd60e51b81526004016108699190611c1b565b505f61155a8486611f0f565b95945050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f90815260069091529182205461160291849061152b565b6001600160a01b038086165f90815260066020526040808220939093559085168152205461163090836118eb565b6001600160a01b038085165f8181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116839086815260200190565b60405180910390a35060019392505050565b6013805460ff60b01b1916600160b01b179055601154600160a81b900460ff16156116bf57506010545b476116c982611949565b5f6116d44783611ad2565b90508015611715576011546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611713573d5f803e3d5ffd5b505b50506013805460ff60b01b1916905550565b6001600160a01b0382165f9081526008602052604081205460ff168061176457506001600160a01b0382165f9081526008602052604090205460ff165b1561177157506001610972565b6001600160a01b0383165f9081526009602052604090205460ff16806117ae57506001600160a01b0382165f9081526009602052604090205460ff165b156117ba57505f610972565b505f610972565b6001600160a01b0383165f90815260096020526040812054819060ff161561180a5761180360646117fd60045486611b1390919063ffffffff16565b90611b91565b9050611869565b6001600160a01b0384165f9081526009602052604090205460ff16156118445761180360646117fd60055486611b1390919063ffffffff16565b601354600160a81b900460ff16156118695761186660646117fd856063611b13565b90505b80156118e157305f9081526006602052604090205461188890826118eb565b305f81815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118d89085815260200190565b60405180910390a35b61155a8382611ad2565b5f806118f78385611f22565b905083811015610a5f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610869565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061197c5761197c611ee7565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156119d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119f79190611f35565b81600181518110611a0a57611a0a611ee7565b6001600160a01b039283166020918202929092010152601254611a30913091168461105d565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a689085905f90869030904290600401611f93565b5f604051808303815f87803b158015611a7f575f80fd5b505af1158015611a91573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611ac6929190611fce565b60405180910390a15050565b5f610a5f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061152b565b5f825f03611b2257505f610972565b5f611b2d8385611fee565b905082611b3a8583612005565b14610a5f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610869565b5f610a5f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f8183611bed5760405162461bcd60e51b81526004016108699190611c1b565b505f61155a8486612005565b5f5b83811015611c13578181015183820152602001611bfb565b50505f910152565b602081525f8251806020840152611c39816040850160208701611bf9565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610fc3575f80fd5b5f8060408385031215611c72575f80fd5b8235611c7d81611c4d565b946020939093013593505050565b80358015158114611c9a575f80fd5b919050565b5f60208284031215611caf575f80fd5b610a5f82611c8b565b5f805f60608486031215611cca575f80fd5b8335611cd581611c4d565b92506020840135611ce581611c4d565b929592945050506040919091013590565b5f60208284031215611d06575f80fd5b8135610a5f81611c4d565b5f60208284031215611d21575f80fd5b5035919050565b5f8060408385031215611d39575f80fd5b8235611d4481611c4d565b9150611d5260208401611c8b565b90509250929050565b5f8060408385031215611d6c575f80fd5b50508035926020909101359150565b5f805f60408486031215611d8d575f80fd5b833567ffffffffffffffff80821115611da4575f80fd5b818601915086601f830112611db7575f80fd5b813581811115611dc5575f80fd5b8760208260051b8501011115611dd9575f80fd5b602092830195509350611def9186019050611c8b565b90509250925092565b5f805f60608486031215611e0a575f80fd5b83359250611e1a60208501611c8b565b9150611def60408501611c8b565b5f8060408385031215611e39575f80fd5b8235611e4481611c4d565b91506020830135611e5481611c4d565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611ea857607f821691505b602082108103611ec657634e487b7160e01b5f52602260045260245ffd5b50919050565b5f8251611edd818460208701611bf9565b9190910192915050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561097257610972611efb565b8082018082111561097257610972611efb565b5f60208284031215611f45575f80fd5b8151610a5f81611c4d565b5f815180845260208085019450602084015f5b83811015611f885781516001600160a01b031687529582019590820190600101611f63565b509495945050505050565b85815284602082015260a060408201525f611fb160a0830186611f50565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f611fe66040830184611f50565b949350505050565b808202811582820484141761097257610972611efb565b5f8261201f57634e487b7160e01b5f52601260045260245ffd5b50049056fea264697066735822122016685f69bc3ca8cadba5befd482a67a5dcf39c232987a64bd6bf0ce0d3f7054f64736f6c63430008170033