60c0604052738a90cab2b38dba80c64b7734e58ee1db38b8992e608052600b805462ffffff19166001179055601e600e553480156200003c575f80fd5b5060405180604001604052806007815260200166446f6f646c657360c81b81525060405180604001604052806006815260200165444f4f444c4560d01b81525081600390816200008d9190620005a1565b5060046200009c8282620005a1565b5050505f620000b06200028c60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d6200011f81600162000290565b6001600160a01b03811660a0526b033b305ab9b149f79a4000006103e8620001498260056200067d565b62000155919062000697565b600a556103e8620001688260056200067d565b62000174919062000697565b600955600880546001600160a01b031916733d8d8fde73b41b77cc2d4f4c9669aba9d643d325179055620001bc620001b46005546001600160a01b031690565b600162000308565b620001c930600162000308565b620001d861dead600162000308565b608051620001e890600162000308565b62000207620001ff6005546001600160a01b031690565b600162000290565b6200021430600162000290565b6200022361dead600162000290565b6080516200023390600162000290565b62000259336064620002478460056200067d565b62000253919062000697565b620003b0565b608051620002709060646200024784600f6200067d565b62000284306064620002478460506200067d565b5050620006cd565b3390565b6005546001600160a01b03163314620002de5760405162461bcd60e51b815260206004820181905260248201525f805160206200289283398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314620003525760405162461bcd60e51b815260206004820181905260248201525f80516020620028928339815191526044820152606401620002d5565b6001600160a01b0382165f81815260106020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620004085760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620002d5565b60025462000417908262000497565b6002556001600160a01b0382165f908152602081905260409020546200043e908262000497565b6001600160a01b0383165f81815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b5f80620004a58385620006b7565b905083811015620004f95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620002d5565b90505b92915050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200052b57607f821691505b6020821081036200054a57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000492575f81815260208120601f850160051c81016020861015620005785750805b601f850160051c820191505b81811015620005995782815560010162000584565b505050505050565b81516001600160401b03811115620005bd57620005bd62000502565b620005d581620005ce845462000516565b8462000550565b602080601f8311600181146200060b575f8415620005f35750858301515b5f19600386901b1c1916600185901b17855562000599565b5f85815260208120601f198616915b828110156200063b578886015182559484019460019091019084016200061a565b50858210156200065957878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620004fc57620004fc62000669565b5f82620006b257634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620004fc57620004fc62000669565b60805160a0516121486200074a5f395f818161024801528181610a5c01528181610aeb01528181610c0701528181610c2f0152818161148701528181611b2701528181611bde0152611c1a01525f81816103c501528181610796015281816108320152818161097501528181610e980152610ebf01526121485ff3fe6080604052600436106101d3575f3560e01c80638da5cb5b116100fd578063d1d7d7ef11610092578063dd62ed3e11610062578063dd62ed3e1461055f578063e2f45605146105a3578063f2fde38b146105b8578063f8b45b05146105d7575f80fd5b8063d1d7d7ef146104da578063d257b34f14610508578063d2fcc00114610527578063d6c1a50a14610546575f80fd5b8063a9059cbb116100cd578063a9059cbb1461046a578063bbc0c74214610489578063bf6b8adc146104a7578063c0246668146104bb575f80fd5b80638da5cb5b146103fb578063924de9b71461041857806395d89b4114610437578063a457c2d71461044b575f80fd5b806349bd5a5e11610173578063715018a611610143578063715018a61461038157806375f0a874146103955780637c0b8de2146103b45780638a8c523c146103e7575f80fd5b806349bd5a5e146102f95780634e71d92d146103185780636ddd17131461032e57806370a082311461034d575f80fd5b806318160ddd116101ae57806318160ddd1461028257806323b872dd146102a0578063313ce567146102bf57806339509351146102da575f80fd5b806306fdde03146101de578063095ea7b3146102085780631694505e14610237575f80fd5b366101da57005b5f80fd5b3480156101e9575f80fd5b506101f26105ec565b6040516101ff9190611cb4565b60405180910390f35b348015610213575f80fd5b50610227610222366004611d16565b61067c565b60405190151581526020016101ff565b348015610242575f80fd5b5061026a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101ff565b34801561028d575f80fd5b506002545b6040519081526020016101ff565b3480156102ab575f80fd5b506102276102ba366004611d40565b610692565b3480156102ca575f80fd5b50604051601281526020016101ff565b3480156102e5575f80fd5b506102276102f4366004611d16565b6106f9565b348015610304575f80fd5b5060075461026a906001600160a01b031681565b348015610323575f80fd5b5061032c61072e565b005b348015610339575f80fd5b50600b546102279062010000900460ff1681565b348015610358575f80fd5b50610292610367366004611d7e565b6001600160a01b03165f9081526020819052604090205490565b34801561038c575f80fd5b5061032c6109bd565b3480156103a0575f80fd5b5060085461026a906001600160a01b031681565b3480156103bf575f80fd5b5061026a7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103f2575f80fd5b5061032c610a30565b348015610406575f80fd5b506005546001600160a01b031661026a565b348015610423575f80fd5b5061032c610432366004611da8565b610d35565b348015610442575f80fd5b506101f2610d7b565b348015610456575f80fd5b50610227610465366004611d16565b610d8a565b348015610475575f80fd5b50610227610484366004611d16565b610dd7565b348015610494575f80fd5b50600b5461022790610100900460ff1681565b3480156104b2575f80fd5b5061032c610de3565b3480156104c6575f80fd5b5061032c6104d5366004611dc1565b610efa565b3480156104e5575f80fd5b506102276104f4366004611d7e565b60116020525f908152604090205460ff1681565b348015610513575f80fd5b50610227610522366004611df4565b610f82565b348015610532575f80fd5b5061032c610541366004611dc1565b6110d8565b348015610551575f80fd5b50600b546102279060ff1681565b34801561056a575f80fd5b50610292610579366004611e0b565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156105ae575f80fd5b5061029260095481565b3480156105c3575f80fd5b5061032c6105d2366004611d7e565b61112c565b3480156105e2575f80fd5b50610292600a5481565b6060600380546105fb90611e42565b80601f016020809104026020016040519081016040528092919081815260200182805461062790611e42565b80156106725780601f1061064957610100808354040283529160200191610672565b820191905f5260205f20905b81548152906001019060200180831161065557829003601f168201915b5050505050905090565b5f610688338484611216565b5060015b92915050565b5f61069e84848461133a565b6106ef84336106ea856040518060600160405280602881526020016120c6602891396001600160a01b038a165f90815260016020908152604080832033845290915290205491906117ee565b611216565b5060019392505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916106889185906106ea9086611826565b600b54610100900460ff1661077f5760405162461bcd60e51b815260206004820152601260248201527174726164696e67206e6f742061637469766560701b60448201526064015b60405180910390fd5b6040516370a0823160e01b81523360048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156107e3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108079190611e7a565b90505f805b8281101561092a57604051632f745c5960e01b8152336004820152602481018290525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632f745c5990604401602060405180830381865afa15801561087f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a39190611e7a565b5f8181526006602052604090205490915060ff16610917575f818152600660205260409020805460ff19166001179055826108dd81611ea5565b6040518381529094503391507fc8c2ab9a55cee53b4d13f27fcabc1f50c24ae09c1eee6ff95aebfcb0c208ae4f9060200160405180910390a25b508061092281611ea5565b91505061080c565b505f81116109705760405162461bcd60e51b81526020600482015260136024820152726e6f20636c61696d7320617661696c61626c6560681b6044820152606401610776565b6109b97f0000000000000000000000000000000000000000000000000000000000000000336109a284620186a0611ebd565b6109b490670de0b6b3a7640000611ebd565b61133a565b5050565b6005546001600160a01b031633146109e75760405162461bcd60e51b815260040161077690611ed4565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610a5a5760405162461bcd60e51b815260040161077690611ed4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ab6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ada9190611f09565b6001600160a01b031663c9c65396307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b45573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b699190611f09565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610bb3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd79190611f09565b600780546001600160a01b0319166001600160a01b03929092169182179055610c019060016110d8565b610c2d307f00000000000000000000000000000000000000000000000000000000000000005f19611216565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7194730610c7c306001600160a01b03165f9081526020819052604090205490565b5f80610c906005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610cf6573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d1b9190611f24565b5050600b805462ffff001916620101001790555043600f55565b6005546001600160a01b03163314610d5f5760405162461bcd60e51b815260040161077690611ed4565b600b8054911515620100000262ff000019909216919091179055565b6060600480546105fb90611e42565b5f61068833846106ea856040518060600160405280602581526020016120ee60259139335f9081526001602090815260408083206001600160a01b038d16845290915290205491906117ee565b5f61068833848461133a565b6008546001600160a01b03163314610e2c5760405162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b6044820152606401610776565b600b54610100900460ff168015610e525750600f54610e4e9062034bc0611f4f565b4310155b610e935760405162461bcd60e51b81526020600482015260126024820152716f6e65206d6f6e746820746f20636c61696d60701b6044820152606401610776565b610ef87f000000000000000000000000000000000000000000000000000000000000000061dead6109b47f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165f9081526020819052604090205490565b565b6005546001600160a01b03163314610f245760405162461bcd60e51b815260040161077690611ed4565b6001600160a01b0382165f81815260106020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005545f906001600160a01b03163314610fae5760405162461bcd60e51b815260040161077690611ed4565b620186a0610fbb60025490565b610fc6906001611ebd565b610fd09190611f62565b82101561103d5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610776565b6103e861104960025490565b611054906005611ebd565b61105e9190611f62565b8211156110ca5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610776565b50600981905560015b919050565b6005546001600160a01b031633146111025760405162461bcd60e51b815260040161077690611ed4565b6001600160a01b03919091165f908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146111565760405162461bcd60e51b815260040161077690611ed4565b6001600160a01b0381166111bb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610776565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166112785760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610776565b6001600160a01b0382166112d95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610776565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166113605760405162461bcd60e51b815260040161077690611f81565b6001600160a01b0382166113865760405162461bcd60e51b815260040161077690611fc6565b805f0361139d5761139883835f61188b565b505050565b600b5460ff1680156113b65750600b54610100900460ff165b80156113cf5750600f546113cb90600a611f4f565b4310155b1561140657600b805460ff191690555f600e5560646113ed60025490565b6113f8906002611ebd565b6114029190611f62565b600a555b600b5460ff16801561141f5750600b54610100900460ff165b801561143957506005546001600160a01b03848116911614155b801561145357506005546001600160a01b03838116911614155b801561146757506001600160a01b03821615155b801561147e57506001600160a01b03821661dead14155b80156114bc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b80156114d657506007546001600160a01b03838116911614155b80156114ec5750600754600160a01b900460ff16155b1561159857325f908152600c602052604090205443116115865760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610776565b325f908152600c602052604090204390555b6001600160a01b0382165f9081526011602052604090205460ff1661162057600a546001600160a01b0383165f908152602081905260409020546115dc9083611f4f565b11156116205760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610776565b305f908152602081905260409020546009548110801590819061164b5750600b5462010000900460ff165b80156116615750600754600160a01b900460ff16155b801561167b57506007546001600160a01b03868116911614155b801561169f57506001600160a01b0385165f9081526010602052604090205460ff16155b80156116c357506001600160a01b0384165f9081526010602052604090205460ff16155b80156116d05750600d5443115b156116fe576007805460ff60a01b1916600160a01b1790556116f0611991565b6007805460ff60a01b191690555b6007545f90600160a01b900460ff1615801561171c5750600b5460ff165b6001600160a01b0387165f9081526010602052604090205490915060ff168061175c57506001600160a01b0385165f9081526010602052604090205460ff165b1561176457505f5b5f81156117da576007546001600160a01b038781169116148061179457506007546001600160a01b038881169116145b156117bc576117b960646117b3600e5488611a1390919063ffffffff16565b90611a91565b90505b80156117cd576117cd87308361188b565b6117d78186612009565b94505b6117e587878761188b565b50505050505050565b5f81848411156118115760405162461bcd60e51b81526004016107769190611cb4565b505f61181d8486612009565b95945050505050565b5f806118328385611f4f565b9050838110156118845760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610776565b9392505050565b6001600160a01b0383166118b15760405162461bcd60e51b815260040161077690611f81565b6001600160a01b0382166118d75760405162461bcd60e51b815260040161077690611fc6565b611913816040518060600160405280602681526020016120a0602691396001600160a01b0386165f9081526020819052604090205491906117ee565b6001600160a01b038085165f9081526020819052604080822093909355908416815220546119419082611826565b6001600160a01b038381165f818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161132d565b305f9081526020819052604090205460095481116119ac5750565b5043600d556009546119bd81611ad2565b6008546040515f916001600160a01b03169047908381818185875af1925050503d805f8114611a07576040519150601f19603f3d011682016040523d82523d5f602084013e611a0c565b606091505b5050505050565b5f825f03611a2257505f61068c565b5f611a2d8385611ebd565b905082611a3a8583611f62565b146118845760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610776565b5f61188483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c88565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611b0557611b0561201c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b81573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ba59190611f09565b81600181518110611bb857611bb861201c565b60200260200101906001600160a01b031690816001600160a01b031681525050611c03307f000000000000000000000000000000000000000000000000000000000000000084611216565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611c579085905f90869030904290600401612030565b5f604051808303815f87803b158015611c6e575f80fd5b505af1158015611c80573d5f803e3d5ffd5b505050505050565b5f8183611ca85760405162461bcd60e51b81526004016107769190611cb4565b505f61181d8486611f62565b5f6020808352835180828501525f5b81811015611cdf57858101830151858201604001528201611cc3565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611d13575f80fd5b50565b5f8060408385031215611d27575f80fd5b8235611d3281611cff565b946020939093013593505050565b5f805f60608486031215611d52575f80fd5b8335611d5d81611cff565b92506020840135611d6d81611cff565b929592945050506040919091013590565b5f60208284031215611d8e575f80fd5b813561188481611cff565b803580151581146110d3575f80fd5b5f60208284031215611db8575f80fd5b61188482611d99565b5f8060408385031215611dd2575f80fd5b8235611ddd81611cff565b9150611deb60208401611d99565b90509250929050565b5f60208284031215611e04575f80fd5b5035919050565b5f8060408385031215611e1c575f80fd5b8235611e2781611cff565b91506020830135611e3781611cff565b809150509250929050565b600181811c90821680611e5657607f821691505b602082108103611e7457634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215611e8a575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b5f60018201611eb657611eb6611e91565b5060010190565b808202811582820484141761068c5761068c611e91565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611f19575f80fd5b815161188481611cff565b5f805f60608486031215611f36575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561068c5761068c611e91565b5f82611f7c57634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561068c5761068c611e91565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561207e5784516001600160a01b031683529383019391830191600101612059565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f57b1da1ca4f0731b17dc77bed585dfe4c7ed3a5b130314303cb60546524bd0564736f6c634300081500334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572