60806040526008805463ffffffff191690556000600a55600d805460ff191690553480156200002d57600080fd5b50604051620020113803806200201183398101604081905262000050916200050d565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060018055600b620000a384826200060f565b50600c620000b283826200060f565b50620000d8620000c56012600a620007f0565b620000d1908362000808565b3362000359565b600046600103620000ff5750737a250d5630b4cf539739df2c5dacb4c659f2488d62000146565b466038036200012457507310ed43c718714eb63d5aa57b78b54704e256024e62000146565b4662aa36a7036200014657507386dcd3293c53cf8efd7303b57beb2a3f671dde985b80600d60016101000a8154816001600160a01b0302191690836001600160a01b031602179055506000600d60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e9919062000822565b6001600160a01b031663c9c6539630600d60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000272919062000822565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e6919062000822565b6001600160a01b039081166000908152600460205260408082208054600160ff1991821681179092559590931682528120805485168317905561dead90527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd805490931617909155506200086392505050565b6000546001600160a01b03163314620003b85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b81600a6000828254620003cc91906200084d565b90915550506001600160a01b03811660009081526002602052604081208054849290620003fb9084906200084d565b9091555050600a546040519081526001600160a01b038216906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200047057600080fd5b81516001600160401b03808211156200048d576200048d62000448565b604051601f8301601f19908116603f01168101908282118183101715620004b857620004b862000448565b81604052838152602092508683858801011115620004d557600080fd5b600091505b83821015620004f95785820183015181830184015290820190620004da565b600093810190920192909252949350505050565b6000806000606084860312156200052357600080fd5b83516001600160401b03808211156200053b57600080fd5b62000549878388016200045e565b945060208601519150808211156200056057600080fd5b506200056f868287016200045e565b925050604084015190509250925092565b600181811c908216806200059557607f821691505b602082108103620005b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200060a57600081815260208120601f850160051c81016020861015620005e55750805b601f850160051c820191505b818110156200060657828155600101620005f1565b5050505b505050565b81516001600160401b038111156200062b576200062b62000448565b62000643816200063c845462000580565b84620005bc565b602080601f8311600181146200067b5760008415620006625750858301515b600019600386901b1c1916600185901b17855562000606565b600085815260208120601f198616915b82811015620006ac578886015182559484019460019091019084016200068b565b5085821015620006cb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000732578160001904821115620007165762000716620006db565b808516156200072457918102915b93841c9390800290620006f6565b509250929050565b6000826200074b57506001620007ea565b816200075a57506000620007ea565b81600181146200077357600281146200077e576200079e565b6001915050620007ea565b60ff841115620007925762000792620006db565b50506001821b620007ea565b5060208310610133831016604e8410600b8410161715620007c3575081810a620007ea565b620007cf8383620006f1565b8060001904821115620007e657620007e6620006db565b0290505b92915050565b60006200080160ff8416836200073a565b9392505050565b8082028115828204841417620007ea57620007ea620006db565b6000602082840312156200083557600080fd5b81516001600160a01b03811681146200080157600080fd5b80820180821115620007ea57620007ea620006db565b61179e80620008736000396000f3fe6080604052600436106101a05760003560e01c80637f21b9b9116100ec578063a9059cbb1161008a578063e533968511610064578063e533968514610518578063f2fde38b14610545578063f7331e3c14610565578063f87dc2c61461058557600080fd5b8063a9059cbb14610492578063b7a7a881146104b2578063dd62ed3e146104d257600080fd5b806387741434116100c6578063877414341461042a5780638a8c523c1461044a5780638da5cb5b1461045f57806395d89b411461047d57600080fd5b80637f21b9b9146103c457806385141a77146103e457806386942310146103fa57600080fd5b8063313ce567116101595780634949b429116101335780634949b4291461032c57806349774f8c1461034c57806370a0823114610379578063715018a6146103af57600080fd5b8063313ce567146102ba5780633f60b426146102d6578063432508ae146102f657600080fd5b806306fdde03146101ac578063095ea7b3146101d75780630c19f0471461020757806318160ddd1461022957806323b872dd1461024c578063261474511461026c57600080fd5b366101a757005b600080fd5b3480156101b857600080fd5b506101c161059f565b6040516101ce9190611421565b60405180910390f35b3480156101e357600080fd5b506101f76101f236600461148b565b610631565b60405190151581526020016101ce565b34801561021357600080fd5b506102276102223660046114b5565b610648565b005b34801561023557600080fd5b5061023e61069c565b6040519081526020016101ce565b34801561025857600080fd5b506101f76102673660046114d0565b6106dd565b34801561027857600080fd5b506102a261028736600461150c565b6006602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101ce565b3480156102c657600080fd5b50604051601281526020016101ce565b3480156102e257600080fd5b506102276102f13660046114b5565b61079a565b34801561030257600080fd5b506102a261031136600461150c565b6005602052600090815260409020546001600160a01b031681565b34801561033857600080fd5b506101f7610347366004611532565b6107e0565b34801561035857600080fd5b5061023e61036736600461150c565b60076020526000908152604090205481565b34801561038557600080fd5b5061023e6103943660046114b5565b6001600160a01b031660009081526002602052604090205490565b3480156103bb57600080fd5b50610227610817565b3480156103d057600080fd5b506102276103df3660046114b5565b61088b565b3480156103f057600080fd5b506102a261dead81565b34801561040657600080fd5b506101f76104153660046114b5565b60046020526000908152604090205460ff1681565b34801561043657600080fd5b5061022761044536600461154b565b6108d9565b34801561045657600080fd5b50610227610a74565b34801561046b57600080fd5b506000546001600160a01b03166102a2565b34801561048957600080fd5b506101c1610ab2565b34801561049e57600080fd5b506101f76104ad36600461148b565b610ac1565b3480156104be57600080fd5b506102276104cd36600461148b565b610ae2565b3480156104de57600080fd5b5061023e6104ed366004611587565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561052457600080fd5b5061023e6105333660046114b5565b60096020526000908152604090205481565b34801561055157600080fd5b506102276105603660046114b5565b610b36565b34801561057157600080fd5b506102276105803660046114b5565b610bd1565b34801561059157600080fd5b50600d546101f79060ff1681565b6060600b80546105ae906115ba565b80601f01602080910402602001604051908101604052809291908181526020018280546105da906115ba565b80156106275780601f106105fc57610100808354040283529160200191610627565b820191906000526020600020905b81548152906001019060200180831161060a57829003601f168201915b5050505050905090565b600061063e338484610cc3565b5060015b92915050565b6000546001600160a01b0316331461067b5760405162461bcd60e51b8152600401610672906115f4565b60405180910390fd5b6001600160a01b03166000908152600460205260409020805460ff19169055565b61dead600090815260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600a546106d8919061163f565b905090565b60006106e7610de7565b6001600160a01b03841660009081526003602090815260408083203384529091529020548281101561076c5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610672565b610777858585610e40565b61078b8533610786868561163f565b610cc3565b505060018080555b9392505050565b6000546001600160a01b031633146107c45760405162461bcd60e51b8152600401610672906115f4565b6001600160a01b03166000908152600960205260409020429055565b336000908152600360209081526040808320308452909152812054821180159061064257508161080f33610394565b101592915050565b6000546001600160a01b031633146108415760405162461bcd60e51b8152600401610672906115f4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108b55760405162461bcd60e51b8152600401610672906115f4565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b031633146109035760405162461bcd60e51b8152600401610672906115f4565b600082116109235760405162461bcd60e51b815260040161067290611652565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098b9190611694565b8211156109d05760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b6044820152606401610672565b60405163a9059cbb60e01b81526001600160a01b0382811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af1158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4391906116ad565b5060405182907fc3cafad8c1a78aa542c18679d54d2e14cf1f08b516ac12071dcf9fd2d3701c2290600090a2505050565b6000546001600160a01b03163314610a9e5760405162461bcd60e51b8152600401610672906115f4565b600d805460ff19811660ff90911615179055565b6060600c80546105ae906115ba565b6000610acb610de7565b610ad6338484610e40565b50600161064260018055565b6000546001600160a01b03163314610b0c5760405162461bcd60e51b8152600401610672906115f4565b610b1681426116cf565b6001600160a01b0390921660009081526009602052604090209190915550565b6000546001600160a01b03163314610b605760405162461bcd60e51b8152600401610672906115f4565b6001600160a01b038116610bc55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610672565b610bce81611391565b50565b6000546001600160a01b03163314610bfb5760405162461bcd60e51b8152600401610672906115f4565b4780610c195760405162461bcd60e51b815260040161067290611652565b47811115610c5f5760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b6044820152606401610672565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610c95573d6000803e3d6000fd5b506040517fc680f238873c988c7dc872ec40caca9d70edfe000c3d44a1b9410684db93767590600090a15050565b6001600160a01b038316610d255760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610672565b6001600160a01b038216610d865760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610672565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600260015403610e395760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610672565b6002600155565b6008805463ffffffff908116600090815260056020908152604080832080546001600160a01b03808b166001600160a01b031992831617909255865486168552600684528285208054928a1692909116919091179055845484168352600790915281208490558254869386938693921691610eba836116e2565b91906101000a81548163ffffffff021916908363ffffffff16021790555050610eeb6000546001600160a01b031690565b6001600160a01b0316836001600160a01b031614158015610f1a57506000546001600160a01b03838116911614155b1561115b57610f28836113e1565b158015610f3b5750610f39826113e1565b155b610f575760405162461bcd60e51b815260040161067290611705565b600d5460ff16610f99576001600160a01b03831660009081526004602052604090205460ff16610f995760405162461bcd60e51b815260040161067290611705565b600854600263ffffffff9091161080159061113e5750600854600690600090610fca9060029063ffffffff16611722565b63ffffffff908116825260208201929092526040016000908120546008546001600160a01b0390911692600592916110059160019116611722565b63ffffffff1681526020810191909152604001600020546001600160a01b03161480156110a557506008546005906000906110489060029063ffffffff16611722565b63ffffffff908116825260208201929092526040016000908120546008546001600160a01b0390911692600692916110839160019116611722565b63ffffffff1681526020810191909152604001600020546001600160a01b0316145b801561113e57506008546509184e72a000906007906000906110cf9060029063ffffffff16611722565b63ffffffff1663ffffffff168152602001908152602001600020546110f49190611746565b6008546509184e72a000906007906000906111179060019063ffffffff16611722565b63ffffffff1663ffffffff1681526020019081526020016000205461113c9190611746565b145b1561115b5760405162461bcd60e51b815260040161067290611705565b6001600160a01b0386166111bf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610672565b6001600160a01b0385166112215760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610672565b600084116112835760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610672565b6001600160a01b0386166000908152600260205260409020548411156112e05760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f7567682062616c616e636560701b6044820152606401610672565b6001600160a01b0386166000908152600260205260408120805486929061130890849061163f565b90915550506001600160a01b038516600090815260026020526040812080548692906113359084906116cf565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161138191815260200190565b60405180910390a3505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116600090815260096020526040812054158015906106425750506001600160a01b0316600090815260096020526040902054421090565b600060208083528351808285015260005b8181101561144e57858101830151858201604001528201611432565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461148657600080fd5b919050565b6000806040838503121561149e57600080fd5b6114a78361146f565b946020939093013593505050565b6000602082840312156114c757600080fd5b6107938261146f565b6000806000606084860312156114e557600080fd5b6114ee8461146f565b92506114fc6020850161146f565b9150604084013590509250925092565b60006020828403121561151e57600080fd5b813563ffffffff8116811461079357600080fd5b60006020828403121561154457600080fd5b5035919050565b60008060006060848603121561156057600080fd5b6115698461146f565b92506020840135915061157e6040850161146f565b90509250925092565b6000806040838503121561159a57600080fd5b6115a38361146f565b91506115b16020840161146f565b90509250929050565b600181811c908216806115ce57607f821691505b6020821081036115ee57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561064257610642611629565b60208082526022908201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604082015261726f60f01b606082015260800190565b6000602082840312156116a657600080fd5b5051919050565b6000602082840312156116bf57600080fd5b8151801515811461079357600080fd5b8082018082111561064257610642611629565b600063ffffffff8083168181036116fb576116fb611629565b6001019392505050565b60208082526003908201526222b93960e91b604082015260600190565b63ffffffff82811682821603908082111561173f5761173f611629565b5092915050565b60008261176357634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122033176f1f1f99379daf52ae8e77ded39130c216b8fe7ec6d0d14cf3082abfba8964736f6c63430008130033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000005f5e1000000000000000000000000000000000000000000000000000000000000000010457370726573736f2053797374656d730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034553500000000000000000000000000000000000000000000000000000000000