60806040526009805462ff0000191690556d314dc6448d9338c15b0a00000000600a819055600b556005600d819055600e819055600f8190556010556000601255601380546001600160a01b0319167320fb8a45f7b79024c85dfbae2916d82b1b81ef951790553480156200007357600080fd5b506040518060400160405280600881526020016714da1a58985c185960c21b8152506040518060400160405280600481526020016314d4105160e21b8152508160039081620000c39190620007be565b506004620000d28282620007be565b505050620000ef620000e9620004d060201b60201c565b620004d4565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155620001349030906d314dc6448d9338c15b0a0000000062000526565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000188573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ae91906200088a565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000211573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023791906200088a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000285573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ab91906200088a565b601480546001600160a01b0319166001600160a01b0392831690811790915560065460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b3906044016020604051808303816000875af115801562000313573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003399190620008bc565b50600160076000620003536005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600790925281208054831660019081179091557f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df805484168217905561dead82527fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d80549093168117909255600890620004046005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600890925281208054831660019081179091557f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c7805484168217905561dead9091527f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd093342998054909216179055620004ca620004b56005546001600160a01b031690565b6d314dc6448d9338c15b0a0000000062000652565b62000908565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166200058e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620005f15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000585565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216620006aa5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000585565b8060026000828254620006be9190620008e0565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200074557607f821691505b6020821081036200076657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200071557600081815260208120601f850160051c81016020861015620007955750805b601f850160051c820191505b81811015620007b657828155600101620007a1565b505050505050565b81516001600160401b03811115620007da57620007da6200071a565b620007f281620007eb845462000730565b846200076c565b602080601f8311600181146200082a5760008415620008115750858301515b600019600386901b1c1916600185901b178555620007b6565b600085815260208120601f198616915b828110156200085b578886015182559484019460019091019084016200083a565b50858210156200087a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200089d57600080fd5b81516001600160a01b0381168114620008b557600080fd5b9392505050565b600060208284031215620008cf57600080fd5b81518015158114620008b557600080fd5b808201808211156200090257634e487b7160e01b600052601160045260246000fd5b92915050565b611d6580620009186000396000f3fe6080604052600436106101cf5760003560e01c806370a08231116100f6578063a9059cbb1161008f578063d257b34f11610061578063d257b34f1461053c578063dd62ed3e1461055c578063f2fde38b146105a2578063f8b45b05146105c257005b8063a9059cbb146104c6578063b8eb3546146104e6578063c69bebe4146104fc578063d077b48f1461051c57005b80639164f9db116100c85780639164f9db14610451578063924de9b71461047157806395d89b4114610491578063a457c2d7146104a657005b806370a08231146103c9578063715018a6146103ff5780638129fc1c146104145780638da5cb5b1461042957005b806323b872dd11610168578063467abe0a1161013a578063467abe0a1461035957806347062402146103795780634ada218b1461038f5780636ddd1713146103a957005b806323b872dd146102e75780632b14ca5614610307578063313ce5671461031d578063395093511461033957005b80631c499ab0116101a15780631c499ab0146102725780631d933a4a146102925780631f110500146102b257806320800a00146102d257005b806306fdde03146101d8578063095ea7b3146102035780630a3d5b551461023357806318160ddd1461025357005b366101d657005b005b3480156101e457600080fd5b506101ed6105d8565b6040516101fa919061191b565b60405180910390f35b34801561020f57600080fd5b5061022361021e36600461198e565b61066a565b60405190151581526020016101fa565b34801561023f57600080fd5b506101d661024e3660046119e9565b610684565b34801561025f57600080fd5b506002545b6040519081526020016101fa565b34801561027e57600080fd5b506101d661028d366004611ac0565b6106f8565b34801561029e57600080fd5b506101d66102ad366004611ac0565b610731565b3480156102be57600080fd5b506101d66102cd3660046119e9565b61074c565b3480156102de57600080fd5b506101d66107bb565b3480156102f357600080fd5b50610223610302366004611ad9565b610810565b34801561031357600080fd5b50610264600f5481565b34801561032957600080fd5b50604051601281526020016101fa565b34801561034557600080fd5b5061022361035436600461198e565b610834565b34801561036557600080fd5b506101d6610374366004611ac0565b610873565b34801561038557600080fd5b50610264600d5481565b34801561039b57600080fd5b506009546102239060ff1681565b3480156103b557600080fd5b506009546102239062010000900460ff1681565b3480156103d557600080fd5b506102646103e4366004611b1a565b6001600160a01b031660009081526020819052604090205490565b34801561040b57600080fd5b506101d661088e565b34801561042057600080fd5b506101d66108a2565b34801561043557600080fd5b506005546040516001600160a01b0390911681526020016101fa565b34801561045d57600080fd5b506101d661046c366004611ac0565b61093e565b34801561047d57600080fd5b506101d661048c366004611b37565b61096b565b34801561049d57600080fd5b506101ed61098f565b3480156104b257600080fd5b506102236104c136600461198e565b61099e565b3480156104d257600080fd5b506102236104e136600461198e565b610a4d565b3480156104f257600080fd5b50610264600a5481565b34801561050857600080fd5b506101d6610517366004611b1a565b610a5b565b34801561052857600080fd5b506101d6610537366004611b1a565b610adc565b34801561054857600080fd5b506101d6610557366004611ac0565b610c66565b34801561056857600080fd5b50610264610577366004611b54565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156105ae57600080fd5b506101d66105bd366004611b1a565b610cb4565b3480156105ce57600080fd5b50610264600b5481565b6060600380546105e790611b8d565b80601f016020809104026020016040519081016040528092919081815260200182805461061390611b8d565b80156106605780601f1061063557610100808354040283529160200191610660565b820191906000526020600020905b81548152906001019060200180831161064357829003601f168201915b5050505050905090565b600033610678818585610d44565b60019150505b92915050565b61068c610e9c565b60005b82518110156106f35781600860008584815181106106af576106af611bc7565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806106eb81611bf3565b91505061068f565b505050565b610700610e9c565b6107206103e861071a600161071460025490565b90610ef6565b90610f09565b81101561072c57600080fd5b600b55565b610739610e9c565b600c81111561074757600080fd5b600f55565b610754610e9c565b60005b82518110156106f357816007600085848151811061077757610777611bc7565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806107b381611bf3565b915050610757565b6107c3610e9c565b604051600090339047908381818185875af1925050503d8060008114610805576040519150601f19603f3d011682016040523d82523d6000602084013e61080a565b606091505b50505050565b60003361081e858285610f15565b610829858585610fa1565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190610678908290869061086e908790611c0c565b610d44565b61087b610e9c565b600c81111561088957600080fd5b600d55565b610896610e9c565b6108a060006113b1565b565b6108aa610e9c565b60095460ff16156108ba57600080fd5b6009805462ff00001916620100001790556108e9606461071a6d314dc6448d9338c15b0a000000006001610ef6565b600a5561090a606461071a6d314dc6448d9338c15b0a000000006002610ef6565b600b5561092c61271061071a6d314dc6448d9338c15b0a000000006005610ef6565b6012556009805460ff19166001179055565b610946610e9c565b61095a6103e861071a600161071460025490565b81101561096657600080fd5b600a55565b610973610e9c565b60098054911515620100000262ff000019909216919091179055565b6060600480546105e790611b8d565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610a405760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6108298286868403610d44565b600033610678818585610fa1565b610a63610e9c565b6001600160a01b038116610a7657600080fd5b6013805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392831690811782556000908152600760209081526040808320805460ff199081166001908117909255945490951683526008909152902080549091169091179055565b610ae4610e9c565b306001600160a01b03821603610af957600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b649190611c1f565b11610b6e57600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610bb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd99190611c1f565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610c42573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f39190611c38565b610c6e610e9c565b610c83620186a061071a600161071460025490565b811015610c8f57600080fd5b610ca36103e861071a600561071460025490565b811115610caf57600080fd5b601255565b610cbc610e9c565b6001600160a01b038116610d385760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610a37565b610d41816113b1565b50565b6001600160a01b038316610dbf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610a37565b6001600160a01b038216610e3b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610a37565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b031633146108a05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a37565b6000610f028284611c55565b9392505050565b6000610f028284611c6c565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461080a5781811015610f945760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610a37565b61080a8484848403610d44565b6001600160a01b0383166110055760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a37565b6001600160a01b0382166110675760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a37565b600081116110dd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610a37565b600160006110f36005546001600160a01b031690565b6001600160a01b0316856001600160a01b03161415801561112257506005546001600160a01b03858116911614155b801561113657506001600160a01b03841615155b801561114d57506001600160a01b03841661dead14155b80156111615750600954610100900460ff16155b156112ad5760095460ff166111b8576001600160a01b03851660009081526007602052604090205460ff16806111af57506001600160a01b03841660009081526007602052604090205460ff165b6111b857600080fd5b6014546001600160a01b0386811691161480156111e357506006546001600160a01b03858116911614155b801561120857506001600160a01b03841660009081526008602052604090205460ff16155b1561124557600b5483611230866001600160a01b031660009081526020819052604090205490565b61123a9190611c0c565b111561124557600080fd5b6014546001600160a01b03858116911614801561127057506006546001600160a01b03868116911614155b801561129557506001600160a01b03851660009081526008602052604090205460ff16155b156112ad57600a548311156112a957600080fd5b5060015b6001600160a01b03851660009081526007602052604090205460ff16806112ec57506001600160a01b03841660009081526007602052604090205460ff165b156112f657600091505b3060009081526020819052604081205490506000601254821180156113185750825b905080801561132f575060095462010000900460ff165b80156113435750600954610100900460ff16155b801561136857506001600160a01b03871660009081526007602052604090205460ff16155b801561138d57506001600160a01b03861660009081526007602052604090205460ff16155b1561139b5761139b82611410565b6113a887878787876114ca565b50505050505050565b600580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6009805461ff00191661010017905580158061142c5750601154155b6114bc5760125461143e906005610ef6565b81111561145657601254611453906005610ef6565b90505b61145f81611512565b600060118190556013546040516001600160a01b039091169047908381818185875af1925050503d80600081146114b2576040519150601f19603f3d011682016040523d82523d6000602084013e6114b7565b606091505b505050505b506009805461ff0019169055565b816114dc576114d761169e565b6114ea565b6114e78584836116cc565b92505b6114f5858585611760565b8161150b5761150b600e54600d55601054600f55565b5050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061154757611547611bc7565b6001600160a01b03928316602091820292909201810191909152600654604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156115b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115dd9190611c8e565b816001815181106115f0576115f0611bc7565b6001600160a01b0392831660209182029290920101526006546116169130911684610d44565b6006546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac94790611668908590600090869030904290600401611cab565b600060405180830381600087803b15801561168257600080fd5b505af1158015611696573d6000803e3d6000fd5b505050505050565b600d541580156116ae5750600f54155b156116b557565b600d8054600e55600f805460105560009182905555565b600081156116df57600f54600c556116e6565b600d54600c555b600c546000901561173c5761170b606461071a600c5487610ef690919063ffffffff16565b600c5490915061171b8183611c55565b6117259190611c6c565b601160008282546117369190611c0c565b90915550505b801561174d5761174d853083611760565b6117578185611d1c565b95945050505050565b6001600160a01b0383166117c45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a37565b6001600160a01b0382166118265760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a37565b6001600160a01b038316600090815260208190526040902054818110156118b55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610a37565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361080a565b600060208083528351808285015260005b818110156119485785810183015185820160400152820161192c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610d4157600080fd5b803561198981611969565b919050565b600080604083850312156119a157600080fd5b82356119ac81611969565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b8015158114610d4157600080fd5b8035611989816119d0565b600080604083850312156119fc57600080fd5b823567ffffffffffffffff80821115611a1457600080fd5b818501915085601f830112611a2857600080fd5b8135602082821115611a3c57611a3c6119ba565b8160051b604051601f19603f83011681018181108682111715611a6157611a616119ba565b604052928352818301935084810182019289841115611a7f57600080fd5b948201945b83861015611aa457611a958661197e565b85529482019493820193611a84565b9650611ab390508782016119de565b9450505050509250929050565b600060208284031215611ad257600080fd5b5035919050565b600080600060608486031215611aee57600080fd5b8335611af981611969565b92506020840135611b0981611969565b929592945050506040919091013590565b600060208284031215611b2c57600080fd5b8135610f0281611969565b600060208284031215611b4957600080fd5b8135610f02816119d0565b60008060408385031215611b6757600080fd5b8235611b7281611969565b91506020830135611b8281611969565b809150509250929050565b600181811c90821680611ba157607f821691505b602082108103611bc157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611c0557611c05611bdd565b5060010190565b8082018082111561067e5761067e611bdd565b600060208284031215611c3157600080fd5b5051919050565b600060208284031215611c4a57600080fd5b8151610f02816119d0565b808202811582820484141761067e5761067e611bdd565b600082611c8957634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611ca057600080fd5b8151610f0281611969565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611cfb5784516001600160a01b031683529383019391830191600101611cd6565b50506001600160a01b03969096166060850152505050608001529392505050565b8181038181111561067e5761067e611bdd56fea2646970667358221220ebba684d5faee95d6f2ad710e4d6951a772e18e878d6f234cb0d63c5645fe7fa64736f6c63430008110033