6080604052620000126009600a620004b3565b6200002290633b9aca00620004ca565b60018190556003805461ffff60a01b1916600160a81b179055620186a0906200004e906103e8620004ca565b6200005a9190620004e4565b600755620186a0600154600a620000729190620004ca565b6200007e9190620004e4565b6008555f6009819055600a8190556064600b55600c556105dc600d819055600e556103e8600f5561271060108190556011805473f91cdb50c071abbd2bce9a7b17c081a406e62cf36001600160a01b0319918216811790925560128054821683179055601380549091169091179055600154620000fe9061012c620004ca565b6200010a9190620004e4565b60145561271060015461012c620001229190620004ca565b6200012e9190620004e4565b60155561271060015461012c620001469190620004ca565b620001529190620004e4565b60165534801562000161575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001c6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ec919062000504565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000238573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025e919062000504565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002a9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002cf919062000504565b600380546001600160a01b0319166001600160a01b0383811691909117909155305f908152601760209081526040808320805460ff199081166001908117909255338086528386208054831684179055601354871686528386208054831684179055601254871686528386208054831684179055601154909616855282852080549091168217905554848452601883528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506200052c565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003f857815f1904821115620003dc57620003dc620003a4565b80851615620003ea57918102915b93841c9390800290620003bd565b509250929050565b5f826200041057506001620004ad565b816200041e57505f620004ad565b8160018114620004375760028114620004425762000462565b6001915050620004ad565b60ff841115620004565762000456620003a4565b50506001821b620004ad565b5060208310610133831016604e8410600b841016171562000487575081810a620004ad565b620004938383620003b8565b805f1904821115620004a957620004a9620003a4565b0290505b92915050565b5f620004c360ff84168362000400565b9392505050565b8082028115828204841417620004ad57620004ad620003a4565b5f82620004ff57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000515575f80fd5b81516001600160a01b0381168114620004c3575f80fd5b611909806200053a5f395ff3fe608060405260043610610129575f3560e01c806370a08231116100a8578063a9059cbb1161006d578063a9059cbb14610339578063ce59c82114610358578063dd62ed3e14610377578063f2fde38b146103bb578063f570a4c5146103da578063ffd12ef3146103ef575f80fd5b806370a0823114610293578063768dc710146102c7578063893d20e8146102f55780638a8c523c1461032557806395d89b4114610134575f80fd5b8063204bd74e116100ee578063204bd74e146101ec57806323b872dd1461020d5780632f54bf6e1461022c578063313ce5671461025957806357a996e914610274575f80fd5b806306fdde0314610134578063095ea7b3146101715780630ad1a49e146101a057806318160ddd146101c35780631cd5f2da146101d7575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b506040805180820182526006815265139153d093d560d21b602082015290516101689190611579565b60405180910390f35b34801561017c575f80fd5b5061019061018b3660046115db565b61040e565b6040519015158152602001610168565b3480156101ab575f80fd5b506101b560165481565b604051908152602001610168565b3480156101ce575f80fd5b506101b5610424565b3480156101e2575f80fd5b506101b560145481565b3480156101f7575f80fd5b5061020b610206366004611605565b610494565b005b348015610218575f80fd5b5061019061022736600461164c565b6105a6565b348015610237575f80fd5b5061019061024636600461168a565b5f546001600160a01b0391821691161490565b348015610264575f80fd5b5060405160098152602001610168565b34801561027f575f80fd5b5061020b61028e3660046115db565b61060e565b34801561029e575f80fd5b506101b56102ad36600461168a565b6001600160a01b03165f9081526018602052604090205490565b3480156102d2575f80fd5b506101906102e136600461168a565b60176020525f908152604090205460ff1681565b348015610300575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610168565b348015610330575f80fd5b5061020b610734565b348015610344575f80fd5b506101906103533660046115db565b610772565b348015610363575f80fd5b5060035461030d906001600160a01b031681565b348015610382575f80fd5b506101b56103913660046116a5565b6001600160a01b039182165f90815260196020908152604080832093909416825291909152205490565b3480156103c6575f80fd5b5061020b6103d536600461168a565b61077e565b3480156103e5575f80fd5b506101b560155481565b3480156103fa575f80fd5b5061020b6104093660046116dc565b6107fa565b5f61041a338484610921565b5060015b92915050565b60186020527f999d26de3473317ead3eeaf34ca78057f1439db67b6953469c3c96ce9caf6bd75461dead5f9081527fe3ec2099396b7359df1c566dfdf9dfdb5e22fd64a6ede9d61aa32b2f63968fd654600154919261048f9290916104899190610a44565b90610a44565b905090565b5f546001600160a01b031633146104c65760405162461bcd60e51b81526004016104bd90611705565b60405180910390fd5b6009879055600a869055600c859055600b849055600d839055600e829055600f8190556010546104f7906001610a4f565b600d54111580156105175750601054610511906001610a4f565b600e5411155b8015610532575060105461052c906001610a4f565b600f5411155b61059d5760405162461bcd60e51b815260206004820152603660248201527f627579696e6754617846656520616e642073656c6c696e675461784665652063604482015275616e6e6f74206265206d6f7265207468616e2032302560501b60648201526084016104bd565b50505050505050565b5f6105b2848484610a5a565b61060384336105fe856040518060600160405280602881526020016118ac602891396001600160a01b038a165f9081526019602090815260408083203384529091529020549190610f9b565b610921565b5060015b9392505050565b5f546001600160a01b031633146106375760405162461bcd60e51b81526004016104bd90611705565b6040516370a0823160e01b81523060048201525f906106b8906064906106b29085906001600160a01b038816906370a0823190602401602060405180830381865afa158015610688573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ac919061173c565b90610fc6565b90610a4f565b60115460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af115801561070a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072e9190611753565b50505050565b5f546001600160a01b0316331461075d5760405162461bcd60e51b81526004016104bd90611705565b6003805460ff60a01b1916600160a01b179055565b5f61041a338484610a5a565b5f546001600160a01b031633146107a75760405162461bcd60e51b81526004016104bd90611705565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b5f546001600160a01b031633146108235760405162461bcd60e51b81526004016104bd90611705565b5f61083f6127106106b286600154610fc690919063ffffffff16565b90505f61085d6127106106b286600154610fc690919063ffffffff16565b90505f61087b6127106106b286600154610fc690919063ffffffff16565b60148490556015839055601681905590505f6108a06103e86106b260056106ac610424565b90508084101580156108b25750808310155b80156108be5750808210155b61059d5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016104bd565b6001600160a01b0383166109835760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104bd565b6001600160a01b0382166109e45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104bd565b6001600160a01b038381165f8181526019602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6106078284611786565b5f6106078284611799565b6001600160a01b038316610abe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104bd565b6001600160a01b038216610b205760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104bd565b6001600160a01b0383165f90815260186020526040902054811115610ba15760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016104bd565b6001600160a01b0383165f9081526017602052604090205460ff16158015610be157506001600160a01b0382165f9081526017602052604090205460ff16155b15610c3057600354600160a01b900460ff16610c305760405162461bcd60e51b815260206004820152600e60248201526d656e61626c656454726164696e6760901b60448201526064016104bd565b6001600160a01b0383165f9081526017602052604090205460ff16158015610c7057506001600160a01b0382165f9081526017602052604090205460ff16155b8015610c8a57506003546001600160a01b03838116911614155b8015610ca157506001600160a01b03821661dead14155b15610d19576016546001600160a01b0383165f90815260186020526040902054610ccb9083610fd1565b1115610d195760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016104bd565b6003546001600160a01b03848116911614610db85760155481111580610d5657506001600160a01b0383165f9081526017602052604090205460ff165b80610d7857506001600160a01b0382165f9081526017602052604090205460ff165b610db85760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104bd565b60145481111580610de057506001600160a01b0383165f9081526017602052604090205460ff165b80610e0257506001600160a01b0382165f9081526017602052604090205460ff165b610e425760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104bd565b6003546001600160a01b038381169116148015610e7757506001600160a01b0383165f9081526017602052604090205460ff16155b15610e9457600160045f828254610e8e91906117b8565b90915550505b610e9f838383610fdc565b15610eb457610eaf600754611094565b5f6004555b6001600160a01b0383165f90815260186020526040902054610ed69082610a44565b6001600160a01b0384165f90815260186020908152604080832093909355601790529081205460ff1615610f0a5781610f15565b610f15848484611204565b6001600160a01b0384165f90815260186020526040902054909150610f3a9082610fd1565b6001600160a01b038085165f8181526018602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f8d9085815260200190565b60405180910390a350505050565b5f8184841115610fbe5760405162461bcd60e51b81526004016104bd9190611579565b505050900390565b5f61060782846117cb565b5f61060782846117b8565b600854600754305f9081526018602052604081205460055491938510159211159060ff161580156110165750600354600160a81b900460ff165b801561102b5750600354600160a01b900460ff165b80156110345750815b801561105857506001600160a01b0386165f9081526017602052604090205460ff16155b801561107157506003546001600160a01b038681169116145b8015611081575060065460045410155b801561108a5750805b9695505050505050565b6005805460ff19166001908117909155600b54600a546009545f936110cd936002936106ac9391926110c7928391610fd1565b90610fd1565b90505f6110e9826106b260095486610fc690919063ffffffff16565b90505f6110f68483610a44565b9050476111028261132e565b5f61110d4783610a44565b90505f61112f61112860095488610a4490919063ffffffff16565b8390610a4f565b90505f61114760095483610fc690919063ffffffff16565b9050801561115957611159868261147e565b600a545f9061116d906106ac856002610fc6565b905080156111ae576012546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156111ac573d5f803e3d5ffd5b505b4780156111ee576011546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156111ec573d5f803e3d5ffd5b505b50506005805460ff191690555050505050505050565b6001600160a01b0382165f9081526017602052604081205460ff161561122d5750601454610607565b5f611238858561152f565b1115611327575f61125a61124c868661152f565b6010546106ac908690610a4f565b305f908152601860205260409020549091506112769082610fd1565b305f81815260186020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112c69085815260200190565b60405180910390a35f600c541180156112e95750600c546112e7868661152f565b115b15611315576113153061dead611310600c546106ac60105489610a4f90919063ffffffff16565b610a5a565b61131f8382610a44565b915050610607565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611361576113616117e2565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113dc91906117f6565b816001815181106113ef576113ef6117e2565b6001600160a01b0392831660209182029290920101526002546114159130911684610921565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac9479061144d9085905f90869030904290600401611811565b5f604051808303815f87803b158015611464575f80fd5b505af1158015611476573d5f803e3d5ffd5b505050505050565b6002546114969030906001600160a01b031684610921565b60025460135460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611503573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906115289190611880565b5050505050565b6003545f906001600160a01b03908116908316036115505750600e5461041e565b6003546001600160a01b039081169084160361156f5750600d5461041e565b50600f5492915050565b5f6020808352835180828501525f5b818110156115a457858101830151858201604001528201611588565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115d8575f80fd5b50565b5f80604083850312156115ec575f80fd5b82356115f7816115c4565b946020939093013593505050565b5f805f805f805f60e0888a03121561161b575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f805f6060848603121561165e575f80fd5b8335611669816115c4565b92506020840135611679816115c4565b929592945050506040919091013590565b5f6020828403121561169a575f80fd5b8135610607816115c4565b5f80604083850312156116b6575f80fd5b82356116c1816115c4565b915060208301356116d1816115c4565b809150509250929050565b5f805f606084860312156116ee575f80fd5b505081359360208301359350604090920135919050565b6020808252601c908201527f4f776e61626c653a2043616c6c6572206973206e6f74206f776e657200000000604082015260600190565b5f6020828403121561174c575f80fd5b5051919050565b5f60208284031215611763575f80fd5b81518015158114610607575f80fd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561041e5761041e611772565b5f826117b357634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561041e5761041e611772565b808202811582820484141761041e5761041e611772565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611806575f80fd5b8151610607816115c4565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561185f5784516001600160a01b03168352938301939183019160010161183a565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611892575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220729ac578323ac106d0bea04be09935efdb8769043478669fdf02c66f4fe874d564736f6c63430008150033