60806040526000600481905560059081556006805460ff1916905564e8d4a510006008556009553480156200003357600080fd5b506200003e620003ed565b600080546001600160a01b0319166001600160a01b0392909216919091179055620000f7620000b46064620000a060326200007c6012600a620005d5565b6200008c906377359400620006c0565b620003f160201b620006fe1790919060201c565b6200043f60201b6200073f1790919060201c565b60026000620000c2620003ed565b6001600160a01b03166001600160a01b0316815260200190815260200160002054620004c460201b620007b81790919060201c565b6002600062000105620003ed565b6001600160a01b039081168252602080830193909352604091820160002093909355600780546001600160a01b031916734752ba5dbc23f44d87826276bf6fd6b1c372ad241790819055815163c45a015560e01b8152915193169263c45a015592600480840193919291829003018186803b1580156200018457600080fd5b505afa15801562000199573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bf91906200050a565b6001600160a01b031663c9c6539630600760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021d57600080fd5b505afa15801562000232573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025891906200050a565b6040518363ffffffff1660e01b81526004016200027792919062000533565b602060405180830381600087803b1580156200029257600080fd5b505af1158015620002a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cd91906200050a565b60068054610100600160a81b0319166101006001600160a01b0393841681029190911791829055600360208190527f9b1c5bf75cd5b8b8e9d62f21b99ccb64a293224d5361076980402429d1b27917805460ff1916600190811790915591909204909216600090815262000340620004fb565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260039092529020805490911660011790556200038a620003ed565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003d06064620000a060326200007c6012600a620005d5565b604051620003df91906200054d565b60405180910390a362000725565b3390565b600082620004025750600062000439565b6200040e8284620006c0565b9050816200041d848362000571565b146200043957634e487b7160e01b600052600160045260246000fd5b92915050565b60008082116200045f57634e487b7160e01b600052600160045260246000fd5b60006200046d838562000571565b90506200047b8385620006e2565b620004878285620006c0565b62000493919062000556565b8414620004b057634e487b7160e01b600052600160045260246000fd5b620004bc838562000571565b949350505050565b600080620004d3838562000556565b905083811015620004f457634e487b7160e01b600052600160045260246000fd5b9392505050565b6000546001600160a01b031690565b6000602082840312156200051c578081fd5b81516001600160a01b0381168114620004f4578182fd5b6001600160a01b0392831681529116602082015260400190565b90815260200190565b600082198211156200056c576200056c620006f9565b500190565b6000826200058357620005836200070f565b500490565b80825b60018086116200059c5750620005cc565b818704821115620005b157620005b1620006f9565b80861615620005bf57918102915b9490941c9380026200058b565b94509492505050565b6000620004f460001960ff851684600082620005f457506001620004f4565b816200060357506000620004f4565b81600181146200061c576002811462000627576200065b565b6001915050620004f4565b60ff8411156200063b576200063b620006f9565b6001841b915084821115620006545762000654620006f9565b50620004f4565b5060208310610133831016604e8410600b841016171562000693575081810a838111156200068d576200068d620006f9565b620004f4565b620006a2848484600162000588565b808604821115620006b757620006b7620006f9565b02949350505050565b6000816000190483118215151615620006dd57620006dd620006f9565b500290565b600082620006f457620006f46200070f565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b61118e80620007356000396000f3fe6080604052600436106100f75760003560e01c806370a082311161008a578063a9059cbb11610059578063a9059cbb14610277578063c9567bf914610297578063dd62ed3e146102ac578063e194c2b2146102cc576100fe565b806370a082311461020b5780638da5cb5b1461022b57806395d89b41146102405780639e94590b14610255576100fe565b806318160ddd116100c657806318160ddd1461019f57806323b872dd146101b4578063313ce567146101d45780633c9f5ed6146101f6576100fe565b806303c525731461010357806306fdde031461012e578063095ea7b3146101505780631694505e1461017d576100fe565b366100fe57005b600080fd5b34801561010f57600080fd5b506101186102e1565b6040516101259190610f6d565b60405180910390f35b34801561013a57600080fd5b506101436102e7565b6040516101259190610d6c565b34801561015c57600080fd5b5061017061016b366004610d24565b61030a565b6040516101259190610d61565b34801561018957600080fd5b50610192610328565b6040516101259190610d4d565b3480156101ab57600080fd5b50610118610337565b3480156101c057600080fd5b506101706101cf366004610c6b565b610358565b3480156101e057600080fd5b506101e96103c8565b6040516101259190610f76565b34801561020257600080fd5b506101706103cd565b34801561021757600080fd5b50610118610226366004610c1f565b6103d6565b34801561023757600080fd5b506101926103f5565b34801561024c57600080fd5b50610143610404565b34801561026157600080fd5b50610275610270366004610ca6565b610427565b005b34801561028357600080fd5b50610170610292366004610d24565b610699565b3480156102a357600080fd5b506102756106b1565b3480156102b857600080fd5b506101186102c7366004610c39565b6106cd565b3480156102d857600080fd5b506101186106f8565b60045481565b6040805180820190915260098152684461726532506c617960b81b602082015290565b600061031e6103176107e5565b84846107e9565b5060015b92915050565b6007546001600160a01b031681565b60006103456012600a610ff6565b6103539063773594006110c7565b905090565b60006103658484846108a6565b6103bd846103716107e5565b6001600160a01b03871660009081526001602052604081206103b8918791906103986107e5565b6001600160a01b0316815260208101919091526040016000205490610b18565b6107e9565b5060015b9392505050565b601290565b60065460ff1690565b6001600160a01b0381166000908152600260205260409020545b919050565b6000546001600160a01b031690565b6040805180820190915260098152684441524532504c415960b81b602082015290565b61042f6103f5565b6001600160a01b03166104406107e5565b6001600160a01b03161461045357600080fd5b60005b83811015610691576104bd61046d6012600a610ff6565b84848481811061048d57634e487b7160e01b600052603260045260246000fd5b9050602002013561049e91906110c7565b6001600160a01b03881660009081526002602052604090205490610b18565b6001600160a01b03871660009081526002602052604090205561056f6104e56012600a610ff6565b84848481811061050557634e487b7160e01b600052603260045260246000fd5b9050602002013561051691906110c7565b6002600088888681811061053a57634e487b7160e01b600052603260045260246000fd5b905060200201602081019061054f9190610c1f565b6001600160a01b03168152602081019190915260400160002054906107b8565b6002600087878581811061059357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906105a89190610c1f565b6001600160a01b031681526020810191909152604001600020558484828181106105e257634e487b7160e01b600052603260045260246000fd5b90506020020160208101906105f79190610c1f565b6001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6106399190610ff6565b86868681811061065957634e487b7160e01b600052603260045260246000fd5b9050602002013561066a91906110c7565b6040516106779190610f6d565b60405180910390a380610689816110fd565b915050610456565b505050505050565b6000806106a46107e5565b90506103bd8185856108a6565b6106b9610b42565b6006805460ff19811660ff90911615179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60055481565b60008261070d57506000610322565b61071782846110c7565b9050816107248483610f9c565b1461032257634e487b7160e01b600052600160045260246000fd5b600080821161075e57634e487b7160e01b600052600160045260246000fd5b600061076a8385610f9c565b90506107768385611118565b61078082856110c7565b61078a9190610f84565b84146107a657634e487b7160e01b600052600160045260246000fd5b6107b08385610f9c565b949350505050565b6000806107c58385610f84565b9050838110156103c157634e487b7160e01b600052600160045260246000fd5b3390565b6001600160a01b0383166108185760405162461bcd60e51b815260040161080f90610f29565b60405180910390fd5b6001600160a01b03821661083e5760405162461bcd60e51b815260040161080f90610e02565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610899908590610f6d565b60405180910390a3505050565b6001600160a01b0383166108cc5760405162461bcd60e51b815260040161080f90610ec1565b6001600160a01b0382166108f25760405162461bcd60e51b815260040161080f90610dbf565b806108fc846103d6565b101561091a5760405162461bcd60e51b815260040161080f90610e44565b6001600160a01b03831660009081526003602052604081205460ff1615801561095c57506001600160a01b03831660009081526003602052604090205460ff16155b156109e05760065460ff166109835760405162461bcd60e51b815260040161080f90610e8a565b60646004548361099391906110c7565b61099d9190610f9c565b6006549091506001600160a01b038481166101009092041614156109e0576064600554836109cb91906110c7565b6109d59190610f9c565b90506109e084610b79565b8015610a595730600090815260026020526040902054610a01908290610f84565b30600081815260026020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a50908590610f6d565b60405180910390a35b81610a63856103d6565b610a6d91906110e6565b6001600160a01b038516600090815260026020526040902055610a9081836110e6565b6001600160a01b038416600090815260026020526040902054610ab39190610f84565b6001600160a01b0380851660008181526002602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610afd84866110e6565b604051610b0a9190610f6d565b60405180910390a350505050565b600081831015610b3857634e487b7160e01b600052600160045260246000fd5b6103c182846110e6565b610b4a6107e5565b6000546001600160a01b03908116911614610b775760405162461bcd60e51b815260040161080f90610f06565b565b6000610b84826103d6565b1115610baf5760065460ff16610ba457610b9f600854610bb2565b610baf565b610baf600954610bb2565b50565b803a1115610baf57600080fd5b80356001600160a01b03811681146103f057600080fd5b60008083601f840112610be7578182fd5b50813567ffffffffffffffff811115610bfe578182fd5b6020830191508360208083028501011115610c1857600080fd5b9250929050565b600060208284031215610c30578081fd5b6103c182610bbf565b60008060408385031215610c4b578081fd5b610c5483610bbf565b9150610c6260208401610bbf565b90509250929050565b600080600060608486031215610c7f578081fd5b610c8884610bbf565b9250610c9660208501610bbf565b9150604084013590509250925092565b600080600080600060608688031215610cbd578081fd5b610cc686610bbf565b9450602086013567ffffffffffffffff80821115610ce2578283fd5b610cee89838a01610bd6565b90965094506040880135915080821115610d06578283fd5b50610d1388828901610bd6565b969995985093965092949392505050565b60008060408385031215610d36578182fd5b610d3f83610bbf565b946020939093013593505050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b81811015610d9857858101830151858201604001528201610d7c565b81811115610da95783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526026908201527f4552524f523a2062616c616e6365206f662066726f6d206c657373207468616e6040820152652076616c756560d01b606082015260800190565b6020808252601d908201527f547261646520686173206e6f74206265656e206f70656e656420796574000000604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b90815260200190565b60ff91909116815260200190565b60008219821115610f9757610f9761112c565b500190565b600082610fab57610fab611142565b500490565b80825b6001808611610fc25750610fed565b818704821115610fd457610fd461112c565b80861615610fe157918102915b9490941c938002610fb3565b94509492505050565b60006103c160001960ff851684600082611012575060016103c1565b8161101f575060006103c1565b8160018114611035576002811461103f5761106c565b60019150506103c1565b60ff8411156110505761105061112c565b6001841b9150848211156110665761106661112c565b506103c1565b5060208310610133831016604e8410600b841016171561109f575081810a8381111561109a5761109a61112c565b6103c1565b6110ac8484846001610fb0565b8086048211156110be576110be61112c565b02949350505050565b60008160001904831182151516156110e1576110e161112c565b500290565b6000828210156110f8576110f861112c565b500390565b60006000198214156111115761111161112c565b5060010190565b60008261112757611127611142565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fdfea2646970667358221220d5a45e76734328d483020d55dfac0eb7bc76989cb655711623d7a404622becc664736f6c63430008000033