0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80636331bf65116100975780638da5cb5b116100665780638da5cb5b1461020857806395d89b4114610238578063a9059cbb14610240578063dd62ed3e1461025357600080fd5b80636331bf651461019c57806370a08231146101c3578063715018a6146101ec5780638091f3bf146101f457600080fd5b806318160ddd116100d357806318160ddd1461014557806323b872dd1461015757806328be90381461016a578063313ce5671461017d57600080fd5b806301339c21146100fa57806306fdde0314610104578063095ea7b314610122575b600080fd5b61010261028c565b005b61010c610333565b6040516101199190610b89565b60405180910390f35b610135610130366004610b5f565b6103c1565b6040519015158152602001610119565b6002545b604051908152602001610119565b610135610165366004610ae7565b6104c7565b610102610178366004610b23565b6105d5565b60055461018a9060ff1681565b60405160ff9091168152602001610119565b6101497f000000000000000000000000000000000000000000108b584046a3125e08000081565b6101496101d1366004610a92565b6001600160a01b031660009081526020819052604090205490565b61010261068c565b60055461013590600160a81b900460ff1681565b6005546102209061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610119565b61010c6106d3565b61013561024e366004610b5f565b6106e0565b610149610261366004610ab4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60055461010090046001600160a01b031633146102c45760405162461bcd60e51b81526004016102bb90610c0b565b60405180910390fd5b600554600160a81b900460ff161561031e5760405162461bcd60e51b815260206004820152601960248201527f636f6e747261637420616c7265616479206c61756e636865640000000000000060448201526064016102bb565b6005805460ff60a81b1916600160a81b179055565b6004805461034090610c82565b80601f016020809104026020016040519081016040528092919081815260200182805461036c90610c82565b80156103b95780601f1061038e576101008083540402835291602001916103b9565b820191906000526020600020905b81548152906001019060200180831161039c57829003601f168201915b505050505081565b6005546000903390600160a81b900460ff16806103f057506005546001600160a01b0382811661010090920416145b61040c5760405162461bcd60e51b81526004016102bb90610bde565b6001600160a01b0384166104625760405162461bcd60e51b815260206004820152601c60248201527f63616e6e6f7420617070726f766520746865203020616464726573730000000060448201526064016102bb565b3360008181526001602090815260408083206001600160a01b03891680855290835292819020879055518681529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b6005546000908490600160a81b900460ff16806104f657506005546001600160a01b0382811661010090920416145b6105125760405162461bcd60e51b81526004016102bb90610bde565b6001600160a01b0385166000908152600160209081526040808320338452909152902054610541908490610c6b565b6001600160a01b0386166000908152600160209081526040808320338452909152902055610570858585610740565b6001600160a01b038516600081815260016020908152604080832033808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3506001949350505050565b60055461010090046001600160a01b031633146106045760405162461bcd60e51b81526004016102bb90610c0b565b6001600160a01b03821660009081526006602052604090205460ff16151581151514156106615760405162461bcd60e51b815260206004820152600b60248201526a185b1c9958591e481cd95d60aa1b60448201526064016102bb565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b60055461010090046001600160a01b031633146106bb5760405162461bcd60e51b81526004016102bb90610c0b565b60058054610100600160a81b03191662dead00179055565b6003805461034090610c82565b6005546000903390600160a81b900460ff168061070f57506005546001600160a01b0382811661010090920416145b61072b5760405162461bcd60e51b81526004016102bb90610bde565b610736338585610740565b5060019392505050565b6001600160a01b03821661078f5760405162461bcd60e51b815260206004820152601660248201527563616e6e6f74206265207a65726f206164647265737360501b60448201526064016102bb565b61079a838383610858565b60006107a784848461098b565b6001600160a01b0385166000908152602081905260409020549091506107ce908390610c6b565b6001600160a01b0380861660009081526020819052604080822093909355908516815220546107fe908290610c53565b6001600160a01b038481166000818152602081815260409182902094909455518481529092918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b600554600160a81b900460ff16801561088457506005546001600160a01b038481166101009092041614155b80156108a357506005546001600160a01b038381166101009092041614155b80156108c857506001600160a01b03821660009081526006602052604090205460ff16155b80156108ed57506108d76109f6565b6001600160a01b0316826001600160a01b031614155b15610986576001600160a01b0382166000908152602081905260409020547f000000000000000000000000000000000000000000108b584046a3125e08000090610938908390610c53565b11156109865760405162461bcd60e51b815260206004820181905260248201527f74686973206973206f76657220746865206d617820686f6c6420616d6f756e7460448201526064016102bb565b505050565b6000826001600160a01b0316846001600160a01b031614156109ef5760405162461bcd60e51b815260206004820152601f60248201527f796f752063616e6e6f74207472616e7366657220746f20796f757273656c660060448201526064016102bb565b5092915050565b60004660011480610a075750466003145b80610a125750466004145b80610a1d5750466005145b15610a3b5750737a250d5630b4cf539739df2c5dacb4c659f2488d90565b60405162461bcd60e51b815260206004820152601060248201526f155b9adb9bdddb8810da185a5b88125160821b60448201526064016102bb565b80356001600160a01b0381168114610a8d57600080fd5b919050565b600060208284031215610aa457600080fd5b610aad82610a76565b9392505050565b60008060408385031215610ac757600080fd5b610ad083610a76565b9150610ade60208401610a76565b90509250929050565b600080600060608486031215610afc57600080fd5b610b0584610a76565b9250610b1360208501610a76565b9150604084013590509250925092565b60008060408385031215610b3657600080fd5b610b3f83610a76565b915060208301358015158114610b5457600080fd5b809150509250929050565b60008060408385031215610b7257600080fd5b610b7b83610a76565b946020939093013593505050565b600060208083528351808285015260005b81811015610bb657858101830151858201604001528201610b9a565b81811115610bc8576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601390820152721d1c98591a5b99c81b9bdd08195b98589b1959606a1b604082015260600190565b60208082526028908201527f63616e206f6e6c792062652063616c6c65642062792074686520636f6e74726160408201526731ba1037bbb732b960c11b606082015260800190565b60008219821115610c6657610c66610cbd565b500190565b600082821015610c7d57610c7d610cbd565b500390565b600181811c90821680610c9657607f821691505b60208210811415610cb757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea26469706673582212202248bdb2078a2903f7543024e0387b061370eaae6ae529168b9aafbc6de306cd64736f6c63430008070033
0x60a06040523480156200001157600080fd5b5060058054610100600160a81b03191633610100021790556040805180820190915260038082526224a92760e91b602090920191825262000053918162000192565b506040805180820190915260108082526f4920526567726574204e6f7468696e6760801b60209092019182526200008d9160049162000192565b506005805460ff19166012908117909155620000ab90600a6200029c565b620000bb9063013130526200036a565b608052600554620000d19060ff16600a6200029c565b620000e190633b9b6e556200036a565b600254620000f0919062000238565b600281905560055461010090046001600160a01b031660009081526020819052604090205462000121919062000238565b600580546001600160a01b03610100918290048116600090815260208190526040808220959095559254600254945192900416927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200018491815260200190565b60405180910390a3620003df565b828054620001a0906200038c565b90600052602060002090601f016020900481019282620001c457600085556200020f565b82601f10620001df57805160ff19168380011785556200020f565b828001600101855582156200020f579182015b828111156200020f578251825591602001919060010190620001f2565b506200021d92915062000221565b5090565b5b808211156200021d576000815560010162000222565b600082198211156200024e576200024e620003c9565b500190565b600181815b8085111562000294578160001904821115620002785762000278620003c9565b808516156200028657918102915b93841c939080029062000258565b509250929050565b6000620002ad60ff841683620002b4565b9392505050565b600082620002c55750600162000364565b81620002d45750600062000364565b8160018114620002ed5760028114620002f85762000318565b600191505062000364565b60ff8411156200030c576200030c620003c9565b50506001821b62000364565b5060208310610133831016604e8410600b84101617156200033d575081810a62000364565b62000349838362000253565b8060001904821115620003605762000360620003c9565b0290505b92915050565b6000816000190483118215151615620003875762000387620003c9565b500290565b600181811c90821680620003a157607f821691505b60208210811415620003c357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b608051610d0962000402600039600081816101a1015261090d0152610d096000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636331bf65116100975780638da5cb5b116100665780638da5cb5b1461020857806395d89b4114610238578063a9059cbb14610240578063dd62ed3e1461025357600080fd5b80636331bf651461019c57806370a08231146101c3578063715018a6146101ec5780638091f3bf146101f457600080fd5b806318160ddd116100d357806318160ddd1461014557806323b872dd1461015757806328be90381461016a578063313ce5671461017d57600080fd5b806301339c21146100fa57806306fdde0314610104578063095ea7b314610122575b600080fd5b61010261028c565b005b61010c610333565b6040516101199190610b89565b60405180910390f35b610135610130366004610b5f565b6103c1565b6040519015158152602001610119565b6002545b604051908152602001610119565b610135610165366004610ae7565b6104c7565b610102610178366004610b23565b6105d5565b60055461018a9060ff1681565b60405160ff9091168152602001610119565b6101497f000000000000000000000000000000000000000000000000000000000000000081565b6101496101d1366004610a92565b6001600160a01b031660009081526020819052604090205490565b61010261068c565b60055461013590600160a81b900460ff1681565b6005546102209061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610119565b61010c6106d3565b61013561024e366004610b5f565b6106e0565b610149610261366004610ab4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60055461010090046001600160a01b031633146102c45760405162461bcd60e51b81526004016102bb90610c0b565b60405180910390fd5b600554600160a81b900460ff161561031e5760405162461bcd60e51b815260206004820152601960248201527f636f6e747261637420616c7265616479206c61756e636865640000000000000060448201526064016102bb565b6005805460ff60a81b1916600160a81b179055565b6004805461034090610c82565b80601f016020809104026020016040519081016040528092919081815260200182805461036c90610c82565b80156103b95780601f1061038e576101008083540402835291602001916103b9565b820191906000526020600020905b81548152906001019060200180831161039c57829003601f168201915b505050505081565b6005546000903390600160a81b900460ff16806103f057506005546001600160a01b0382811661010090920416145b61040c5760405162461bcd60e51b81526004016102bb90610bde565b6001600160a01b0384166104625760405162461bcd60e51b815260206004820152601c60248201527f63616e6e6f7420617070726f766520746865203020616464726573730000000060448201526064016102bb565b3360008181526001602090815260408083206001600160a01b03891680855290835292819020879055518681529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b6005546000908490600160a81b900460ff16806104f657506005546001600160a01b0382811661010090920416145b6105125760405162461bcd60e51b81526004016102bb90610bde565b6001600160a01b0385166000908152600160209081526040808320338452909152902054610541908490610c6b565b6001600160a01b0386166000908152600160209081526040808320338452909152902055610570858585610740565b6001600160a01b038516600081815260016020908152604080832033808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3506001949350505050565b60055461010090046001600160a01b031633146106045760405162461bcd60e51b81526004016102bb90610c0b565b6001600160a01b03821660009081526006602052604090205460ff16151581151514156106615760405162461bcd60e51b815260206004820152600b60248201526a185b1c9958591e481cd95d60aa1b60448201526064016102bb565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b60055461010090046001600160a01b031633146106bb5760405162461bcd60e51b81526004016102bb90610c0b565b60058054610100600160a81b03191662dead00179055565b6003805461034090610c82565b6005546000903390600160a81b900460ff168061070f57506005546001600160a01b0382811661010090920416145b61072b5760405162461bcd60e51b81526004016102bb90610bde565b610736338585610740565b5060019392505050565b6001600160a01b03821661078f5760405162461bcd60e51b815260206004820152601660248201527563616e6e6f74206265207a65726f206164647265737360501b60448201526064016102bb565b61079a838383610858565b60006107a784848461098b565b6001600160a01b0385166000908152602081905260409020549091506107ce908390610c6b565b6001600160a01b0380861660009081526020819052604080822093909355908516815220546107fe908290610c53565b6001600160a01b038481166000818152602081815260409182902094909455518481529092918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b600554600160a81b900460ff16801561088457506005546001600160a01b038481166101009092041614155b80156108a357506005546001600160a01b038381166101009092041614155b80156108c857506001600160a01b03821660009081526006602052604090205460ff16155b80156108ed57506108d76109f6565b6001600160a01b0316826001600160a01b031614155b15610986576001600160a01b0382166000908152602081905260409020547f000000000000000000000000000000000000000000000000000000000000000090610938908390610c53565b11156109865760405162461bcd60e51b815260206004820181905260248201527f74686973206973206f76657220746865206d617820686f6c6420616d6f756e7460448201526064016102bb565b505050565b6000826001600160a01b0316846001600160a01b031614156109ef5760405162461bcd60e51b815260206004820152601f60248201527f796f752063616e6e6f74207472616e7366657220746f20796f757273656c660060448201526064016102bb565b5092915050565b60004660011480610a075750466003145b80610a125750466004145b80610a1d5750466005145b15610a3b5750737a250d5630b4cf539739df2c5dacb4c659f2488d90565b60405162461bcd60e51b815260206004820152601060248201526f155b9adb9bdddb8810da185a5b88125160821b60448201526064016102bb565b80356001600160a01b0381168114610a8d57600080fd5b919050565b600060208284031215610aa457600080fd5b610aad82610a76565b9392505050565b60008060408385031215610ac757600080fd5b610ad083610a76565b9150610ade60208401610a76565b90509250929050565b600080600060608486031215610afc57600080fd5b610b0584610a76565b9250610b1360208501610a76565b9150604084013590509250925092565b60008060408385031215610b3657600080fd5b610b3f83610a76565b915060208301358015158114610b5457600080fd5b809150509250929050565b60008060408385031215610b7257600080fd5b610b7b83610a76565b946020939093013593505050565b600060208083528351808285015260005b81811015610bb657858101830151858201604001528201610b9a565b81811115610bc8576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601390820152721d1c98591a5b99c81b9bdd08195b98589b1959606a1b604082015260600190565b60208082526028908201527f63616e206f6e6c792062652063616c6c65642062792074686520636f6e74726160408201526731ba1037bbb732b960c11b606082015260800190565b60008219821115610c6657610c66610cbd565b500190565b600082821015610c7d57610c7d610cbd565b500390565b600181811c90821680610c9657607f821691505b60208210811415610cb757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea26469706673582212202248bdb2078a2903f7543024e0387b061370eaae6ae529168b9aafbc6de306cd64736f6c63430008070033