60c06040526008805462ffff00191661010017905534801562000020575f80fd5b506040518060400160405280600d81526020016c57686174735472656e64696e6760981b8152506040518060400160405280600281526020016115d560f21b8152508160039081620000739190620008b6565b506004620000828282620008b6565b5050505f620000966200045460201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f905f80516020620023c8833981519152908290a3506008805460ff1916601290811790915533905f90620000f290600a62000a8b565b6200010290633b9aca0062000aa2565b905060646200011382600162000aa2565b6200011f919062000abc565b60065560646200013182600162000aa2565b6200013d919062000abc565b6007555f466038036200016657507310ed43c718714eb63d5aa57b78b54704e256024e62000256565b466061036200018b575073d99d1c33f9fc3444f8101754abc46c52416550d162000256565b4661a86a03620001b157507360ae616a2155ee3d9a68541ba4544862310933d462000256565b46608903620001d6575073a5e0829caced8ffdd4de3c43696c57f7d7a678ff62000256565b4660fa03620001fb575073f491e7b69e4244ad4002bc14e878a34207e38c2962000256565b46600303620002205750737a250d5630b4cf539739df2c5dacb4c659f2488d62000256565b4660011480620002305750466004145b15620002525750737a250d5630b4cf539739df2c5dacb4c659f2488d62000256565b5f80fd5b806200026481600162000458565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620002ad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002d3919062000adc565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000345919062000adc565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000390573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003b6919062000adc565b6001600160a01b031660a0819052620003d190600162000458565b60a051620003e1906001620004d0565b620003ee84600162000523565b620003fb30600162000523565b6200040a61dead600162000523565b6200041784600162000458565b6200042430600162000458565b6200043361dead600162000458565b6200043f8484620005cb565b6200044a84620006ad565b5050505062000b1a565b3390565b6005546001600160a01b03163314620004a65760405162461bcd60e51b815260206004820181905260248201525f80516020620023a883398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b0382165f818152600b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b031633146200056d5760405162461bcd60e51b815260206004820181905260248201525f80516020620023a883398151915260448201526064016200049d565b6001600160a01b0382165f81815260096020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006235760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200049d565b600254620006329082620007ac565b6002556001600160a01b0382165f90815260208190526040902054620006599082620007ac565b6001600160a01b0383165f81815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b03163314620006f75760405162461bcd60e51b815260206004820181905260248201525f80516020620023a883398151915260448201526064016200049d565b6001600160a01b0381166200075e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016200049d565b6005546040516001600160a01b038084169216905f80516020620023c8833981519152905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b505050565b5f80620007ba838562000b04565b9050838110156200080e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200049d565b90505b92915050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200084057607f821691505b6020821081036200085f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620007a7575f81815260208120601f850160051c810160208610156200088d5750805b601f850160051c820191505b81811015620008ae5782815560010162000899565b505050505050565b81516001600160401b03811115620008d257620008d262000817565b620008ea81620008e384546200082b565b8462000865565b602080601f83116001811462000920575f8415620009085750858301515b5f19600386901b1c1916600185901b178555620008ae565b5f85815260208120601f198616915b8281101562000950578886015182559484019460019091019084016200092f565b50858210156200096e57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620009d257815f1904821115620009b657620009b66200097e565b80851615620009c457918102915b93841c939080029062000997565b509250929050565b5f82620009ea5750600162000811565b81620009f857505f62000811565b816001811462000a11576002811462000a1c5762000a3c565b600191505062000811565b60ff84111562000a305762000a306200097e565b50506001821b62000811565b5060208310610133831016604e8410600b841016171562000a61575081810a62000811565b62000a6d838362000992565b805f190482111562000a835762000a836200097e565b029392505050565b5f62000a9b60ff841683620009da565b9392505050565b80820281158282048414176200081157620008116200097e565b5f8262000ad757634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000aed575f80fd5b81516001600160a01b03811681146200080e575f80fd5b808201808211156200081157620008116200097e565b60805160a05161186562000b435f395f81816103930152610a3101525f61029701526118655ff3fe6080604052600436106101d3575f3560e01c8063715018a6116100fd578063a9059cbb11610092578063c8c8ebe411610062578063c8c8ebe414610593578063dd62ed3e146105a8578063f2fde38b146105ec578063f8b45b051461060b575f80fd5b8063a9059cbb14610508578063b62496f514610527578063bbc0c74214610555578063c024666814610574575f80fd5b80638da5cb5b116100cd5780638da5cb5b1461049957806395d89b41146104b65780639a7a23d6146104ca578063a457c2d7146104e9575f80fd5b8063715018a61461043e578063751039fc146104525780637571336a146104665780638a8c523c14610485575f80fd5b806323b872dd1161017357806349bd5a5e1161014357806349bd5a5e146103825780634a62bb65146103b55780634fbee193146103d357806370a082311461040a575f80fd5b806323b872dd1461030e57806327c8f8351461032d578063313ce567146103425780633950935114610363575f80fd5b806310d5de53116101ae57806310d5de53146102585780631694505e1461028657806318160ddd146102d15780631c499ab0146102ef575f80fd5b806306fdde03146101de578063095ea7b314610208578063106b5da114610237575f80fd5b366101da57005b5f80fd5b3480156101e9575f80fd5b506101f2610620565b6040516101ff91906113bb565b60405180910390f35b348015610213575f80fd5b50610227610222366004611421565b6106b0565b60405190151581526020016101ff565b348015610242575f80fd5b50610256610251366004611449565b6106c6565b005b348015610263575f80fd5b50610227610272366004611460565b600a6020525f908152604090205460ff1681565b348015610291575f80fd5b506102b97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101ff565b3480156102dc575f80fd5b506002545b6040519081526020016101ff565b3480156102fa575f80fd5b50610256610309366004611449565b610774565b348015610319575f80fd5b50610227610328366004611479565b610819565b348015610338575f80fd5b506102b961dead81565b34801561034d575f80fd5b5060085460405160ff90911681526020016101ff565b34801561036e575f80fd5b5061022761037d366004611421565b610880565b34801561038d575f80fd5b506102b97f000000000000000000000000000000000000000000000000000000000000000081565b3480156103c0575f80fd5b5060085461022790610100900460ff1681565b3480156103de575f80fd5b506102276103ed366004611460565b6001600160a01b03165f9081526009602052604090205460ff1690565b348015610415575f80fd5b506102e1610424366004611460565b6001600160a01b03165f9081526020819052604090205490565b348015610449575f80fd5b506102566108b5565b34801561045d575f80fd5b50610227610928565b348015610471575f80fd5b506102566104803660046114b2565b610965565b348015610490575f80fd5b506102566109b9565b3480156104a4575f80fd5b506005546001600160a01b03166102b9565b3480156104c1575f80fd5b506101f26109f6565b3480156104d5575f80fd5b506102566104e43660046114b2565b610a05565b3480156104f4575f80fd5b50610227610503366004611421565b610ae4565b348015610513575f80fd5b50610227610522366004611421565b610b31565b348015610532575f80fd5b50610227610541366004611460565b600b6020525f908152604090205460ff1681565b348015610560575f80fd5b506008546102279062010000900460ff1681565b34801561057f575f80fd5b5061025661058e3660046114b2565b610b3d565b34801561059e575f80fd5b506102e160065481565b3480156105b3575f80fd5b506102e16105c23660046114eb565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156105f7575f80fd5b50610256610606366004611460565b610bc5565b348015610616575f80fd5b506102e160075481565b60606003805461062f9061151c565b80601f016020809104026020016040519081016040528092919081815260200182805461065b9061151c565b80156106a65780601f1061067d576101008083540402835291602001916106a6565b820191905f5260205f20905b81548152906001019060200180831161068957829003601f168201915b5050505050905090565b5f6106bc338484610caf565b5060015b92915050565b6005546001600160a01b031633146106f95760405162461bcd60e51b81526004016106f090611554565b60405180910390fd5b60085461070a9060ff16600a61167d565b606461071560025490565b61072090600161168b565b61072a91906116a2565b61073491906116a2565b8110156107535760405162461bcd60e51b81526004016106f0906116c1565b6008546107649060ff16600a61167d565b61076e908261168b565b60065550565b6005546001600160a01b0316331461079e5760405162461bcd60e51b81526004016106f090611554565b6008546107af9060ff16600a61167d565b60646107ba60025490565b6107c590600161168b565b6107cf91906116a2565b6107d991906116a2565b8110156107f85760405162461bcd60e51b81526004016106f0906116c1565b6008546108099060ff16600a61167d565b610813908261168b565b60075550565b5f610825848484610dd3565b6108768433610871856040518060600160405280602881526020016117e3602891396001600160a01b038a165f90815260016020908152604080832033845290915290205491906111c5565b610caf565b5060019392505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916106bc91859061087190866111fd565b6005546001600160a01b031633146108df5760405162461bcd60e51b81526004016106f090611554565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005545f906001600160a01b031633146109545760405162461bcd60e51b81526004016106f090611554565b506008805461ff0019169055600190565b6005546001600160a01b0316331461098f5760405162461bcd60e51b81526004016106f090611554565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146109e35760405162461bcd60e51b81526004016106f090611554565b6008805462ff0000191662010000179055565b60606004805461062f9061151c565b6005546001600160a01b03163314610a2f5760405162461bcd60e51b81526004016106f090611554565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610ad65760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016106f0565b610ae08282611262565b5050565b5f6106bc33846108718560405180606001604052806025815260200161180b60259139335f9081526001602090815260408083206001600160a01b038d16845290915290205491906111c5565b5f6106bc338484610dd3565b6005546001600160a01b03163314610b675760405162461bcd60e51b81526004016106f090611554565b6001600160a01b0382165f81815260096020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610bef5760405162461bcd60e51b81526004016106f090611554565b6001600160a01b038116610c545760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106f0565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610d115760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106f0565b6001600160a01b038216610d725760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106f0565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610df95760405162461bcd60e51b81526004016106f09061170e565b6001600160a01b038216610e1f5760405162461bcd60e51b81526004016106f090611753565b60085462010000900460ff16610eb1576001600160a01b0383165f9081526009602052604090205460ff1680610e6c57506001600160a01b0382165f9081526009602052604090205460ff165b610eb15760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016106f0565b805f03610ec857610ec383835f6112b5565b505050565b600854610100900460ff16156111ba576005546001600160a01b03848116911614801590610f0457506005546001600160a01b03838116911614155b8015610f1857506001600160a01b03821615155b8015610f2f57506001600160a01b03821661dead14155b8015610f7557506001600160a01b0383165f9081526009602052604090205460ff1680610f7357506001600160a01b0382165f9081526009602052604090205460ff165b155b156111ba576001600160a01b0383165f908152600b602052604090205460ff168015610fb957506001600160a01b0382165f908152600a602052604090205460ff16155b1561109c5760065481111561102e5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016106f0565b6007546001600160a01b0383165f908152602081905260409020546110539083611796565b11156110975760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016106f0565b6111ba565b6001600160a01b0382165f908152600b602052604090205460ff1680156110db57506001600160a01b0383165f908152600a602052604090205460ff16155b15611151576006548111156110975760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016106f0565b6007546001600160a01b0383165f908152602081905260409020546111769083611796565b11156111ba5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016106f0565b610ec38383836112b5565b5f81848411156111e85760405162461bcd60e51b81526004016106f091906113bb565b505f6111f484866117a9565b95945050505050565b5f806112098385611796565b90508381101561125b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106f0565b9392505050565b6001600160a01b0382165f818152600b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166112db5760405162461bcd60e51b81526004016106f09061170e565b6001600160a01b0382166113015760405162461bcd60e51b81526004016106f090611753565b61133d816040518060600160405280602681526020016117bd602691396001600160a01b0386165f9081526020819052604090205491906111c5565b6001600160a01b038085165f90815260208190526040808220939093559084168152205461136b90826111fd565b6001600160a01b038381165f818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610dc6565b5f6020808352835180828501525f5b818110156113e6578581018301518582016040015282016113ca565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461141c575f80fd5b919050565b5f8060408385031215611432575f80fd5b61143b83611406565b946020939093013593505050565b5f60208284031215611459575f80fd5b5035919050565b5f60208284031215611470575f80fd5b61125b82611406565b5f805f6060848603121561148b575f80fd5b61149484611406565b92506114a260208501611406565b9150604084013590509250925092565b5f80604083850312156114c3575f80fd5b6114cc83611406565b9150602083013580151581146114e0575f80fd5b809150509250929050565b5f80604083850312156114fc575f80fd5b61150583611406565b915061151360208401611406565b90509250929050565b600181811c9082168061153057607f821691505b60208210810361154e57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156115d757815f19048211156115bd576115bd611589565b808516156115ca57918102915b93841c93908002906115a2565b509250929050565b5f826115ed575060016106c0565b816115f957505f6106c0565b816001811461160f576002811461161957611635565b60019150506106c0565b60ff84111561162a5761162a611589565b50506001821b6106c0565b5060208310610133831016604e8410600b8410161715611658575081810a6106c0565b611662838361159d565b805f190482111561167557611675611589565b029392505050565b5f61125b60ff8416836115df565b80820281158282048414176106c0576106c0611589565b5f826116bc57634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602d908201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060408201526c6c6f776572207468616e20312560981b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b808201808211156106c0576106c0611589565b818103818111156106c0576106c061158956fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e8d1e7fd34f7973bb021216ed41186029d6c5657e160f1e852825bcd3a615f3364736f6c634300081400334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0