Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x43835ca7646c07B6933D0c1C16ddC41C4Cb5600e
Balance 0.099626 ETH ($205.99)
Nonce 1
Code Size 15049 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

15049 bytes
0x6080604052600436106103545760003560e01c8063632e5442116101c6578063a457c2d7116100f7578063ea2f0b3711610095578063f2fde38b1161006f578063f2fde38b146109da578063f3b1e83b146109fa578063fabb0b4f14610a10578063ffb54a9914610a2657600080fd5b8063ea2f0b371461097a578063eafb5a3c1461099a578063f259c57b146109ba57600080fd5b8063bf56b371116100d1578063bf56b371146108e8578063dc44b6a0146108fe578063dd62ed3e14610914578063deaa59df1461095a57600080fd5b8063a457c2d714610888578063a9059cbb146108a8578063afb8865e146108c857600080fd5b806378109e541161016457806388f820201161013e57806388f82020146107fc5780638da5cb5b146108355780638f4590d21461085357806395d89b411461087357600080fd5b806378109e54146107b057806384530c46146107c657806388790a68146107e657600080fd5b806371b9189c116101a057806371b9189c1461074457806372fdf6ee14610764578063743942b61461077a5780637598f8bc1461079a57600080fd5b8063632e5442146106ef57806370a082311461070f578063715018a61461072f57600080fd5b80632dd5efe7116102a057806343b127a61161023e5780634b01547f116102185780634b01547f1461066f5780634eeaf4581461068f57806352390c02146106af5780635d54c0af146106cf57600080fd5b806343b127a61461060f5780634549b0391461062f57806349bd5a5e1461064f57600080fd5b8063395093511161027a57806339509351146105995780633bd5d173146105b95780633ddf65ab146105d9578063401aa5c0146105f957600080fd5b80632dd5efe714610537578063313ce567146105575780633685d4191461057957600080fd5b806318160ddd1161030d5780632691bc80116102e75780632691bc80146104b757806328a23cd1146104d75780632d4103d6146104f75780632d8381191461051757600080fd5b806318160ddd146104605780631e89d5451461047557806323b872dd1461049757600080fd5b80630445b6671461036057806306fdde0314610389578063095ea7b3146103ab5780630f3a325f146103db57806313114a9d146104135780631694505e1461042857600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b5061037660155481565b6040519081526020015b60405180910390f35b34801561039557600080fd5b5061039e610a45565b6040516103809190613352565b3480156103b757600080fd5b506103cb6103c63660046133bf565b610ad7565b6040519015158152602001610380565b3480156103e757600080fd5b506103cb6103f63660046133eb565b6001600160a01b0316600090815260208052604090205460ff1690565b34801561041f57600080fd5b50600854610376565b34801561043457600080fd5b50601954610448906001600160a01b031681565b6040516001600160a01b039091168152602001610380565b34801561046c57600080fd5b50600654610376565b34801561048157600080fd5b50610495610490366004613454565b610aee565b005b3480156104a357600080fd5b506103cb6104b23660046134c0565b610d28565b3480156104c357600080fd5b506016546103cb9062010000900460ff1681565b3480156104e357600080fd5b506104956104f2366004613501565b610d91565b34801561050357600080fd5b50610495610512366004613548565b610ec1565b34801561052357600080fd5b50610376610532366004613566565b610f46565b34801561054357600080fd5b506104956105523660046133eb565b610fca565b34801561056357600080fd5b5060035460405160ff9091168152602001610380565b34801561058557600080fd5b506104956105943660046133eb565b611018565b3480156105a557600080fd5b506103cb6105b43660046133bf565b6111cb565b3480156105c557600080fd5b506104956105d4366004613566565b611201565b3480156105e557600080fd5b506104956105f436600461357f565b6112eb565b34801561060557600080fd5b50610376600c5481565b34801561061b57600080fd5b5061049561062a36600461359c565b611333565b34801561063b57600080fd5b5061037661064a3660046135c8565b61138d565b34801561065b57600080fd5b50601a54610448906001600160a01b031681565b34801561067b57600080fd5b5061049561068a36600461357f565b61141a565b34801561069b57600080fd5b506104956106aa36600461359c565b611460565b3480156106bb57600080fd5b506104956106ca3660046133eb565b611498565b3480156106db57600080fd5b506104956106ea3660046135ed565b611582565b3480156106fb57600080fd5b5061049561070a366004613644565b61161b565b34801561071b57600080fd5b5061037661072a3660046133eb565b61179b565b34801561073b57600080fd5b506104956117fa565b34801561075057600080fd5b5061049561075f366004613690565b61186e565b34801561077057600080fd5b50610376600b5481565b34801561078657600080fd5b506104956107953660046133eb565b61190d565b3480156107a657600080fd5b50610376600f5481565b3480156107bc57600080fd5b5061037660095481565b3480156107d257600080fd5b506104956107e1366004613690565b61196c565b3480156107f257600080fd5b50610376600d5481565b34801561080857600080fd5b506103cb6108173660046133eb565b6001600160a01b031660009081526023602052604090205460ff1690565b34801561084157600080fd5b506000546001600160a01b0316610448565b34801561085f57600080fd5b5061049561086e3660046136d2565b611a06565b34801561087f57600080fd5b5061039e611a50565b34801561089457600080fd5b506103cb6108a33660046133bf565b611a5f565b3480156108b457600080fd5b506103cb6108c33660046133bf565b611aae565b3480156108d457600080fd5b506104956108e3366004613566565b611abb565b3480156108f457600080fd5b5061037660055481565b34801561090a57600080fd5b50610376600a5481565b34801561092057600080fd5b5061037661092f366004613501565b6001600160a01b039182166000908152601f6020908152604080832093909416825291909152205490565b34801561096657600080fd5b506104956109753660046133eb565b611b0c565b34801561098657600080fd5b506104956109953660046133eb565b611b58565b3480156109a657600080fd5b506104956109b53660046133eb565b611ba3565b3480156109c657600080fd5b506104956109d53660046133eb565b611f29565b3480156109e657600080fd5b506104956109f53660046133eb565b611f77565b348015610a0657600080fd5b50610376600e5481565b348015610a1c57600080fd5b5061037660045481565b348015610a3257600080fd5b506016546103cb90610100900460ff1681565b606060178054610a54906136f4565b80601f0160208091040260200160405190810160405280929190818152602001828054610a80906136f4565b8015610acd5780601f10610aa257610100808354040283529160200191610acd565b820191906000526020600020905b815481529060010190602001808311610ab057829003601f168201915b5050505050905090565b6000610ae4338484612181565b5060015b92915050565b6000546001600160a01b03163314610b215760405162461bcd60e51b8152600401610b189061372f565b60405180910390fd5b6103218310610b885760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610b18565b828114610be85760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610b18565b6000805b84811015610c4657600354610c059060ff16600a61385e565b848483818110610c1757610c1761386d565b90506020020135610c289190613883565b610c3290836138a2565b915080610c3e816138ba565b915050610bec565b5080610c513361179b565b1015610c9f5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610b18565b60005b84811015610d2057610d0e33878784818110610cc057610cc061386d565b9050602002016020810190610cd591906133eb565b600354610ce69060ff16600a61385e565b878786818110610cf857610cf861386d565b90506020020135610d099190613883565b6122a5565b80610d18816138ba565b915050610ca2565b505050505050565b6000610d358484846122a5565b610d878433610d8285604051806060016040528060288152602001613a47602891396001600160a01b038a166000908152601f6020908152604080832033845290915290205491906127e9565b612181565b5060019392505050565b6000546001600160a01b03163314610dbb5760405162461bcd60e51b8152600401610b189061372f565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b158015610dfd57600080fd5b505afa158015610e11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3591906138d5565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b158015610e8357600080fd5b505af1158015610e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebb91906138ee565b50505050565b6000546001600160a01b03163314610eeb5760405162461bcd60e51b8152600401610b189061372f565b6016805461ff00191661010084151502179055610f0730611498565b601a54610f1c906001600160a01b0316611498565b601654610100900460ff168015610f335750600554155b15610f42574360055560048190555b5050565b6000600754821115610fad5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b18565b6000610fb7612823565b9050610fc38382612061565b9392505050565b6000546001600160a01b03163314610ff45760405162461bcd60e51b8152600401610b189061372f565b6001600160a01b03166000908152602260205260409020805460ff19166001179055565b6000546001600160a01b031633146110425760405162461bcd60e51b8152600401610b189061372f565b6001600160a01b03811660009081526023602052604090205460ff166110aa5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b18565b60005b602554811015610f4257816001600160a01b0316602582815481106110d4576110d461386d565b6000918252602090912001546001600160a01b031614156111b957602580546110ff9060019061390b565b8154811061110f5761110f61386d565b600091825260209091200154602580546001600160a01b03909216918390811061113b5761113b61386d565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152601e82526040808220829055602390925220805460ff19169055602580548061119357611193613922565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806111c3816138ba565b9150506110ad565b336000818152601f602090815260408083206001600160a01b03871684529091528120549091610ae4918590610d829086612122565b3360008181526023602052604090205460ff16156112765760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610b18565b600061128183612846565b505050506001600160a01b0384166000908152601d60205260409020549192506112ad91905082612895565b6001600160a01b0383166000908152601d60205260409020556007546112d39082612895565b6007556008546112e39084612122565b600855505050565b6000546001600160a01b031633146113155760405162461bcd60e51b8152600401610b189061372f565b6016805491151563010000000263ff00000019909216919091179055565b6000546001600160a01b0316331461135d5760405162461bcd60e51b8152600401610b189061372f565b600a829055600b819055600c8390556012839055601082905560118190556113858282612122565b601355505050565b60006006548311156113e15760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b18565b816114005760006113f184612846565b50939550610ae8945050505050565b600061140b84612846565b50929550610ae8945050505050565b6000546001600160a01b031633146114445760405162461bcd60e51b8152600401610b189061372f565b60168054911515620100000262ff000019909216919091179055565b6000546001600160a01b0316331461148a5760405162461bcd60e51b8152600401610b189061372f565b600d91909155600e55600f55565b6000546001600160a01b031633146114c25760405162461bcd60e51b8152600401610b189061372f565b6001600160a01b0381166000908152601d60205260409020541561151c576001600160a01b0381166000908152601d602052604090205461150290610f46565b6001600160a01b0382166000908152601e60205260409020555b6001600160a01b03166000818152602360205260408120805460ff191660019081179091556025805491820181559091527f401968ff42a154441da5f6c4c935ac46b8671f0e062baaa62a7545ba53bb6e4c0180546001600160a01b0319169091179055565b6000546001600160a01b031633146115ac5760405162461bcd60e51b8152600401610b189061372f565b60005b82811015610ebb5781602060008686858181106115ce576115ce61386d565b90506020020160208101906115e391906133eb565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611614816138ba565b90506115af565b6000546001600160a01b031633146116455760405162461bcd60e51b8152600401610b189061372f565b6107d182106116ad5760405162461bcd60e51b815260206004820152602e60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526d323030302061646472657373657360901b6064820152608401610b18565b60035460009083906116c39060ff16600a61385e565b6116cd9084613883565b6116d79190613883565b9050806116e33361179b565b10156117315760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610b18565b60005b8381101561179457611782338686848181106117525761175261386d565b905060200201602081019061176791906133eb565b6003546117789060ff16600a61385e565b610d099087613883565b8061178c816138ba565b915050611734565b5050505050565b6001600160a01b03811660009081526023602052604081205460ff16156117d857506001600160a01b03166000908152601e602052604090205490565b6001600160a01b0382166000908152601d6020526040902054610ae890610f46565b6000546001600160a01b031633146118245760405162461bcd60e51b8152600401610b189061372f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146118985760405162461bcd60e51b8152600401610b189061372f565b60005b81811015611908576001602160008585858181106118bb576118bb61386d565b90506020020160208101906118d091906133eb565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611901816138ba565b905061189b565b505050565b6000546001600160a01b031633146119375760405162461bcd60e51b8152600401610b189061372f565b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015610f42573d6000803e3d6000fd5b6000546001600160a01b031633146119965760405162461bcd60e51b8152600401610b189061372f565b60005b81811015611908576001602460008585858181106119b9576119b961386d565b90506020020160208101906119ce91906133eb565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556119ff816138ba565b9050611999565b6000546001600160a01b03163314611a305760405162461bcd60e51b8152600401610b189061372f565b8082600654611a3f9190613883565b611a499190613938565b6015555050565b606060188054610a54906136f4565b6000610ae43384610d8285604051806060016040528060258152602001613a6f60259139336000908152601f602090815260408083206001600160a01b038d16845290915290205491906127e9565b6000610ae43384846122a5565b6000546001600160a01b03163314611ae55760405162461bcd60e51b8152600401610b189061372f565b611b0681611b006103e860065461206190919063ffffffff16565b906120a3565b60095550565b6000546001600160a01b03163314611b365760405162461bcd60e51b8152600401610b189061372f565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611b825760405162461bcd60e51b8152600401610b189061372f565b6001600160a01b03166000908152602160205260409020805460ff19169055565b6000546001600160a01b03163314611bcd5760405162461bcd60e51b8152600401610b189061372f565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611c0d57600080fd5b505afa158015611c21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c45919061395a565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c8d57600080fd5b505afa158015611ca1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc5919061395a565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b158015611d0b57600080fd5b505afa158015611d1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d43919061395a565b90506001600160a01b038116611ee957816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611d8c57600080fd5b505afa158015611da0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc4919061395a565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611e0c57600080fd5b505afa158015611e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e44919061395a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015611e8c57600080fd5b505af1158015611ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec4919061395a565b601a80546001600160a01b0319166001600160a01b0392909216919091179055611f05565b601a80546001600160a01b0319166001600160a01b0383161790555b50601980546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b03163314611f535760405162461bcd60e51b8152600401610b189061372f565b6001600160a01b03166000908152602160205260409020805460ff19166001179055565b6000546001600160a01b03163314611fa15760405162461bcd60e51b8152600401610b189061372f565b6001600160a01b0381166120065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b18565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610fc383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128d7565b6000826120b257506000610ae8565b60006120be8385613883565b9050826120cb8583613938565b14610fc35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b18565b60008061212f83856138a2565b905083811015610fc35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b18565b6001600160a01b0383166121e35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b18565b6001600160a01b0382166122445760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b18565b6001600160a01b038381166000818152601f602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166123095760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b18565b6001600160a01b03821661236b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b18565b600081116123cd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b18565b6001600160a01b038216600090815260208052604090205460ff16156124225760405162461bcd60e51b815260206004820152600a602482015269536f72727920426f737360b01b6044820152606401610b18565b6001600160a01b038316600090815260208052604090205460ff16156124775760405162461bcd60e51b815260206004820152600a602482015269536f72727920426f737360b01b6044820152606401610b18565b6000546001600160a01b038481169116148015906124a357506000546001600160a01b03838116911614155b156124ff57601654610100900460ff166124ff5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610b18565b601a546000906001600160a01b038581169116148061252b5750601a546001600160a01b038481169116145b801561257357506001600160a01b03841660009081526021602052604090205460ff168061257157506001600160a01b03831660009081526021602052604090205460ff165b155b1561257c575060015b60006005541180156125c057506001600160a01b03831660009081526022602052604090205460ff161580156125c057506000546001600160a01b03858116911614155b80156125da5750436004546005546125d891906138a2565b115b1561264e576009546125eb8461179b565b6125f590846138a2565b111561264e5760405162461bcd60e51b815260206004820152602260248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d6974604482015261195960f21b6064820152608401610b18565b601354601455600c54601255601654610100900460ff16801561267e5750601a546001600160a01b038481169116145b1561269c57600e54600d5461269291612122565b601455600f546012555b60006005541180156126bc5750436004546005546126ba91906138a2565b115b156126e4576001600160a01b03831660009081526020805260409020805460ff191660011790555b600060055411801561270457506000546001600160a01b03858116911614155b801561271f575060045460055461271b91906138a2565b4311155b801561273457506016546301000000900460ff165b15612740576103b66014555b60165462010000900460ff161561278057601654610100900460ff1680156127755750601a546001600160a01b038581169116145b156127805760006014555b60165460ff1615801561279a5750601654610100900460ff165b80156127b35750601a546001600160a01b038481169116145b156127dd5760006127c33061179b565b905060155481106127db57506015546127db81612905565b505b610ebb848484846129f1565b6000818484111561280d5760405162461bcd60e51b8152600401610b189190613352565b50600061281a848661390b565b95945050505050565b6000806000612830612b1d565b909250905061283f8282612061565b9250505090565b600080600080600080600080600061285d8a612c9f565b925092509250600080600061287b8d8686612876612823565b612ce1565b919f909e50909c50959a5093985091965092945050505050565b6000610fc383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506127e9565b600081836128f85760405162461bcd60e51b8152600401610b189190613352565b50600061281a8486613938565b6016805460ff191660011790556013546010546000916129359160029161292f91829087906120a3565b90612061565b905060006129438383612895565b905061294e81612d31565b601054479060009061296e90612965906002612061565b60135490612895565b90506000612990600261292f8461292f601054886120a390919063ffffffff16565b905060006129ad8361292f601154876120a390919063ffffffff16565b90504780156129cd57601b546129cd9083906001600160a01b0316612ed3565b86156129dd576129dd8784612f09565b50506016805460ff19169055505050505050565b60125460145482612a0757600060128190556014555b6001600160a01b03861660009081526023602052604090205460ff168015612a4857506001600160a01b03851660009081526023602052604090205460ff16155b15612a5d57612a58868686612fe6565b612b09565b6001600160a01b03861660009081526023602052604090205460ff16158015612a9e57506001600160a01b03851660009081526023602052604090205460ff165b15612aae57612a5886868661310c565b6001600160a01b03861660009081526023602052604090205460ff168015612aee57506001600160a01b03851660009081526023602052604090205460ff165b15612afe57612a588686866131b5565b612b09868686613228565b82610d205760129190915560145550505050565b6007546006546000918291825b602554811015612c6f5782601d600060258481548110612b4c57612b4c61386d565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612bb7575081601e600060258481548110612b9057612b9061386d565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612bcd57600754600654945094505050509091565b612c13601d600060258481548110612be757612be761386d565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612895565b9250612c5b601e600060258481548110612c2f57612c2f61386d565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612895565b915080612c67816138ba565b915050612b2a565b50600654600754612c7f91612061565b821015612c96576007546006549350935050509091565b90939092509050565b600080600080612cae8561326c565b90506000612cbb86613289565b90506000612cd382612ccd8986612895565b90612895565b979296509094509092505050565b6000808080612cf088866120a3565b90506000612cfe88876120a3565b90506000612d0c88886120a3565b90506000612d1e82612ccd8686612895565b939b939a50919850919650505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612d6657612d6661386d565b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612dba57600080fd5b505afa158015612dce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612df2919061395a565b81600181518110612e0557612e0561386d565b6001600160a01b039283166020918202929092010152601954612e2b9130911684612181565b60195460405163791ac94760e01b81526001600160a01b039091169063791ac94790612e649085906000908690309042906004016139bb565b600060405180830381600087803b158015612e7e57600080fd5b505af1158015612e92573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612ec79291906139f7565b60405180910390a15050565b6040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015611908573d6000803e3d6000fd5b601954612f219030906001600160a01b031684612181565b6019546001600160a01b031663f305d719823085600080612f4a6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015612fad57600080fd5b505af1158015612fc1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117949190613a18565b600080600080600080612ff887612846565b6001600160a01b038f166000908152601e6020526040902054959b5093995091975095509350915061302a9088612895565b6001600160a01b038a166000908152601e6020908152604080832093909355601d905220546130599087612895565b6001600160a01b03808b166000908152601d602052604080822093909355908a16815220546130889086612122565b6001600160a01b0389166000908152601d60205260409020556130aa816132a6565b6130b4848361332e565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516130f991815260200190565b60405180910390a3505050505050505050565b60008060008060008061311e87612846565b6001600160a01b038f166000908152601d6020526040902054959b509399509197509550935091506131509087612895565b6001600160a01b03808b166000908152601d6020908152604080832094909455918b168152601e90915220546131869084612122565b6001600160a01b0389166000908152601e6020908152604080832093909355601d905220546130889086612122565b6000806000806000806131c787612846565b6001600160a01b038f166000908152601e6020526040902054959b509399509197509550935091506131f99088612895565b6001600160a01b038a166000908152601e6020908152604080832093909355601d905220546131509087612895565b60008060008060008061323a87612846565b6001600160a01b038f166000908152601d6020526040902054959b509399509197509550935091506130599087612895565b6000610ae86103e861292f601254856120a390919063ffffffff16565b6000610ae86103e861292f601454856120a390919063ffffffff16565b60006132b0612823565b905060006132be83836120a3565b306000908152601d60205260409020549091506132db9082612122565b306000908152601d602090815260408083209390935560239052205460ff161561190857306000908152601e60205260409020546133199084612122565b306000908152601e6020526040902055505050565b60075461333b9083612895565b60075560085461334b9082612122565b6008555050565b600060208083528351808285015260005b8181101561337f57858101830151858201604001528201613363565b81811115613391576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146133bc57600080fd5b50565b600080604083850312156133d257600080fd5b82356133dd816133a7565b946020939093013593505050565b6000602082840312156133fd57600080fd5b8135610fc3816133a7565b60008083601f84011261341a57600080fd5b50813567ffffffffffffffff81111561343257600080fd5b6020830191508360208260051b850101111561344d57600080fd5b9250929050565b6000806000806040858703121561346a57600080fd5b843567ffffffffffffffff8082111561348257600080fd5b61348e88838901613408565b909650945060208701359150808211156134a757600080fd5b506134b487828801613408565b95989497509550505050565b6000806000606084860312156134d557600080fd5b83356134e0816133a7565b925060208401356134f0816133a7565b929592945050506040919091013590565b6000806040838503121561351457600080fd5b823561351f816133a7565b9150602083013561352f816133a7565b809150509250929050565b80151581146133bc57600080fd5b6000806040838503121561355b57600080fd5b82356133dd8161353a565b60006020828403121561357857600080fd5b5035919050565b60006020828403121561359157600080fd5b8135610fc38161353a565b6000806000606084860312156135b157600080fd5b505081359360208301359350604090920135919050565b600080604083850312156135db57600080fd5b82359150602083013561352f8161353a565b60008060006040848603121561360257600080fd5b833567ffffffffffffffff81111561361957600080fd5b61362586828701613408565b90945092505060208401356136398161353a565b809150509250925092565b60008060006040848603121561365957600080fd5b833567ffffffffffffffff81111561367057600080fd5b61367c86828701613408565b909790965060209590950135949350505050565b600080602083850312156136a357600080fd5b823567ffffffffffffffff8111156136ba57600080fd5b6136c685828601613408565b90969095509350505050565b600080604083850312156136e557600080fd5b50508035926020909101359150565b600181811c9082168061370857607f821691505b6020821081141561372957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156137b557816000190482111561379b5761379b613764565b808516156137a857918102915b93841c939080029061377f565b509250929050565b6000826137cc57506001610ae8565b816137d957506000610ae8565b81600181146137ef57600281146137f957613815565b6001915050610ae8565b60ff84111561380a5761380a613764565b50506001821b610ae8565b5060208310610133831016604e8410600b8410161715613838575081810a610ae8565b613842838361377a565b806000190482111561385657613856613764565b029392505050565b6000610fc360ff8416836137bd565b634e487b7160e01b600052603260045260246000fd5b600081600019048311821515161561389d5761389d613764565b500290565b600082198211156138b5576138b5613764565b500190565b60006000198214156138ce576138ce613764565b5060010190565b6000602082840312156138e757600080fd5b5051919050565b60006020828403121561390057600080fd5b8151610fc38161353a565b60008282101561391d5761391d613764565b500390565b634e487b7160e01b600052603160045260246000fd5b60008261395557634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561396c57600080fd5b8151610fc3816133a7565b600081518084526020808501945080840160005b838110156139b05781516001600160a01b03168752958201959082019060010161398b565b509495945050505050565b85815284602082015260a0604082015260006139da60a0830186613977565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000613a106040830184613977565b949350505050565b600080600060608486031215613a2d57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d423a27d0d20c2e4c181f948db96f8bf6564818c7e7b96b93f24fb0fdfa445fa64736f6c63430008080033

Verified Source Code Partial Match

Compiler: v0.8.8+commit.dddeac2f EVM: london Optimization: Yes (200 runs)
FanVerse.sol 985 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    

}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }


    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract FanVerse is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    uint8 private _decimals = 9;
    uint256 public deadBlocks = 2;
    uint256 public launchedAt = 0;
    
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 1000000000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 public _maxWalletToken = _tTotal.div(1000).mul(10); //2% for first few mins

    uint256 public _buyLiquidityFee = 50;    
    uint256 public _buymarketdevFee = 40;   
    uint256 public _buyReflectionFee = 10;

    uint256 public _sellLiquidityFee = 50; 
    uint256 public _sellmarketdevFee = 40;  
    uint256 public _sellReflectionFee = 10;
      
    uint256 private liquidityFee = _buyLiquidityFee;
    uint256 private marketdevFee = _buymarketdevFee;
    uint256 private reflectionFee=_buyReflectionFee;

    uint256 private totalFee = liquidityFee.add(marketdevFee);
    uint256 private currenttotalFee = totalFee;
    
    uint256 public swapThreshold = _tTotal.div(10000).mul(20); //0.2% 

    bool inSwap;
    bool public tradingOpen = false;
    bool public zeroBuyTaxmode = false;
    bool private antiBotmode = true;

    string private _name = "FanVerse";
    string private _symbol = "FANV";
   
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address payable private marketdevWallet = payable (0x3024C3B3A55EA5a430dDeD45D7caf1f94444f608); // marketdev Wallet
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isSniper;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isMaxWalletExempt;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) private _isTrusted;
    address[] private _excluded;

    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {

        _rOwned[_msgSender()] = _rTotal;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isMaxWalletExempt[owner()] = true;
        _isMaxWalletExempt[address(this)] = true;
        _isMaxWalletExempt[uniswapV2Pair] = true;
        _isMaxWalletExempt[DEAD] = true;
        _isTrusted[owner()] = true;
        _isTrusted[uniswapV2Pair] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
    
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    
    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!_isSniper[to], "Sorry Boss");
        require(!_isSniper[from], "Sorry Boss");
        if (from!= owner() && to!= owner()) require(tradingOpen, "Trading not yet enabled."); //transfers disabled before openTrading
        
        bool takeFee = false;
        //take fee on swaps
        if ( (from==uniswapV2Pair || to==uniswapV2Pair) && !(_isExcludedFromFee[from] || _isExcludedFromFee[to]) ) {
            takeFee = true;
        }

        if(launchedAt>0 && (!_isMaxWalletExempt[to] && from!= owner()) && ((launchedAt + deadBlocks) > block.number)){
                require(amount+ balanceOf(to)<=_maxWalletToken,
                    "Total Holding is currently limited");
        } 

        currenttotalFee=totalFee;
        reflectionFee=_buyReflectionFee;

        if(tradingOpen && to == uniswapV2Pair) { //sell
            currenttotalFee= _sellLiquidityFee.add(_sellmarketdevFee);
            reflectionFee=_sellReflectionFee;
        }
        
        //antibot
        if(launchedAt>0 && (launchedAt + deadBlocks) > block.number){
                _isSniper[to]=true;
        }
        
        //only bot 
        if(launchedAt>0 && from!= owner() && block.number <= (launchedAt + deadBlocks)  && antiBotmode){
                currenttotalFee=950;    //95%
        }

        //buys
        if(zeroBuyTaxmode){
             if(tradingOpen && from == uniswapV2Pair) { 
                    currenttotalFee=0;
             }
        }

        //sell
        if (!inSwap && tradingOpen && to == uniswapV2Pair) {
      
            uint256 contractTokenBalance = balanceOf(address(this));
            
            if(contractTokenBalance>=swapThreshold){
                    contractTokenBalance = swapThreshold;
                    swapTokens(contractTokenBalance);
            }
          
        }
        _tokenTransfer(from,to,amount,takeFee);
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {

        uint256 _previousReflectionFee=reflectionFee;
        uint256 _previousTotalFee=currenttotalFee;
        if(!takeFee){
            reflectionFee = 0;
            currenttotalFee=0;
        }
        
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        
        if(!takeFee){
            reflectionFee = _previousReflectionFee;
            currenttotalFee=_previousTotalFee;
        }
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }
    
    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }

    //Swap and send 
    function swapTokens(uint256 contractTokenBalance) private lockTheSwap {
        
        uint256 amountToLiquify = contractTokenBalance
            .mul(liquidityFee)
            .div(totalFee)
            .div(2);

        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);
        
        swapTokensForEth(amountToSwap);

        uint256 amountETH = address(this).balance;

        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));

        uint256 amountETHLiquidity = amountETH
            .mul(liquidityFee)
            .div(totalETHFee)
            .div(2);
        
        uint256 amountETHmarketdev = amountETH.mul(marketdevFee).div(totalETHFee);
        //Send to marketdev wallet
        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0) {
            sendETHToFee(amountETHmarketdev,marketdevWallet);
        }
        if (amountToLiquify > 0) {
                addLiquidity(amountToLiquify,amountETHLiquidity);
        }
    }
    
    function sendETHToFee(uint256 amount,address payable wallet) private {
        wallet.transfer(amount);
    }
   
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    //-------------------Private View-------------------
    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    
    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(reflectionFee).div(
            10**3
        );
    }
    
    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(currenttotalFee).div(
            10**3
        );
    }

    //-------------------Public View-------------------
    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) 
        return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function isSniper(address account) public view returns (bool) {
        return _isSniper[account];
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    //-------------------only Owner-------------------
    function excludeFromReward(address account) public onlyOwner() {
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function openTrading(bool _status,uint256 _deadBlocks) external onlyOwner() {
        tradingOpen = _status;
        excludeFromReward(address(this));
        excludeFromReward(uniswapV2Pair);
        if(tradingOpen && launchedAt == 0){
            launchedAt = block.number;
            deadBlocks = _deadBlocks;
        }
    }
    
    function setZeroBuyTaxmode(bool _status) external onlyOwner() {
       zeroBuyTaxmode=_status;
    }

    function setAntiBotmode(bool _status) external onlyOwner() {
       antiBotmode=_status;
    }
    
    function setNewRouter(address newRouter) external onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            uniswapV2Pair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            uniswapV2Pair = get_pair;
        }
        uniswapV2Router = _newRouter;
    }
    
    function excludeMultiple(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function excludeFromFee(address[] calldata addresses) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            _isExcludedFromFee[addresses[i]] = true;
        }
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    
    function setWallet(address _marketdevWallet) external onlyOwner() {
        marketdevWallet = payable(_marketdevWallet);
    }
    
    function manage_Snipers(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
                _isSniper[addresses[i]] = status; 
        }
    }
    
    function manage_trusted(address[] calldata addresses) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            _isTrusted[addresses[i]]=true;
        }
    }
   
    function withDrawLeftoverETH(address payable receipient) public onlyOwner {
        receipient.transfer(address(this).balance);
    }

    function withdrawStuck(IERC20 token, address to) public onlyOwner {
        uint256 balance = token.balanceOf(address(this));
        token.transfer(to, balance);
    }

    function setMaxWallet_base1000(uint256 maxWallPercent_base1000) external onlyOwner() {
        _maxWalletToken = _tTotal.div(1000).mul(maxWallPercent_base1000);
    }

    function setMaxWalletExempt(address _addr) external onlyOwner {
        _isMaxWalletExempt[_addr] = true;
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
    }

    function multiTransfer( address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

        require(addresses.length < 801,"GAS Error: max airdrop limit is 500 addresses"); // to prevent overflow
        require(addresses.length == tokens.length,"Mismatch between Address and token count");

        uint256 SCCC = 0;

        for(uint i=0; i < addresses.length; i++){
            SCCC = SCCC + (tokens[i] * 10**_decimals);
        }

        require(balanceOf(msg.sender) >= SCCC, "Not enough tokens in wallet");

        for(uint i=0; i < addresses.length; i++){
            _transfer(msg.sender,addresses[i],(tokens[i] * 10**_decimals));
        
        }
    }

    function multiTransfer_fixed( address[] calldata addresses, uint256 tokens) external onlyOwner {

        require(addresses.length < 2001,"GAS Error: max airdrop limit is 2000 addresses"); // to prevent overflow

        uint256 SCCC = tokens* 10**_decimals * addresses.length;

        require(balanceOf(msg.sender) >= SCCC, "Not enough tokens in wallet");

        for(uint i=0; i < addresses.length; i++){
            _transfer(msg.sender,addresses[i],(tokens* 10**_decimals));

        }
    }

    function setTaxBuy(uint256 _bReflectionFee, uint256 _bLiquidityFee, uint256 _bMarketdevFee) external onlyOwner {
       
        _buyLiquidityFee = _bLiquidityFee;
        _buymarketdevFee = _bMarketdevFee;
        _buyReflectionFee= _bReflectionFee;

        reflectionFee= _bReflectionFee;
        liquidityFee = _bLiquidityFee;
        marketdevFee = _bMarketdevFee;
        totalFee = liquidityFee.add(marketdevFee);
    }

    function setTaxSell(uint256 _sReflectionFee,uint256 _sLiquidityFee, uint256 _sMarketdevFee) external onlyOwner {
        _sellLiquidityFee = _sLiquidityFee;
        _sellmarketdevFee = _sMarketdevFee;
        _sellReflectionFee= _sReflectionFee;
    }
     //to recieve ETH uniswapV2Router
    receive() external payable {}
}

Read Contract

_buyLiquidityFee 0xdc44b6a0 → uint256
_buyReflectionFee 0x401aa5c0 → uint256
_buymarketdevFee 0x72fdf6ee → uint256
_maxWalletToken 0x78109e54 → uint256
_sellLiquidityFee 0x88790a68 → uint256
_sellReflectionFee 0x7598f8bc → uint256
_sellmarketdevFee 0xf3b1e83b → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
deadBlocks 0xfabb0b4f → uint256
decimals 0x313ce567 → uint8
isExcludedFromReward 0x88f82020 → bool
isSniper 0x0f3a325f → bool
launchedAt 0xbf56b371 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
reflectionFromToken 0x4549b039 → uint256
swapThreshold 0x0445b667 → uint256
symbol 0x95d89b41 → string
tokenFromReflection 0x2d838119 → uint256
totalFees 0x13114a9d → uint256
totalSupply 0x18160ddd → uint256
tradingOpen 0xffb54a99 → bool
uniswapV2Pair 0x49bd5a5e → address
uniswapV2Router 0x1694505e → address
zeroBuyTaxmode 0x2691bc80 → bool

Write Contract 29 functions

These functions modify contract state and require a wallet transaction to execute.

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
deliver 0x3bd5d173
uint256 tAmount
excludeFromFee 0x71b9189c
address[] addresses
excludeFromReward 0x52390c02
address account
excludeMultiple 0xf259c57b
address account
includeInFee 0xea2f0b37
address account
includeInReward 0x3685d419
address account
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
manage_Snipers 0x5d54c0af
address[] addresses
bool status
manage_trusted 0x84530c46
address[] addresses
multiTransfer 0x1e89d545
address[] addresses
uint256[] tokens
multiTransfer_fixed 0x632e5442
address[] addresses
uint256 tokens
openTrading 0x2d4103d6
bool _status
uint256 _deadBlocks
renounceOwnership 0x715018a6
No parameters
setAntiBotmode 0x3ddf65ab
bool _status
setMaxWalletExempt 0x2dd5efe7
address _addr
setMaxWallet_base1000 0xafb8865e
uint256 maxWallPercent_base1000
setNewRouter 0xeafb5a3c
address newRouter
setSwapSettings 0x8f4590d2
uint256 thresholdPercent
uint256 thresholdDivisor
setTaxBuy 0x43b127a6
uint256 _bReflectionFee
uint256 _bLiquidityFee
uint256 _bMarketdevFee
setTaxSell 0x4eeaf458
uint256 _sReflectionFee
uint256 _sLiquidityFee
uint256 _sMarketdevFee
setWallet 0xdeaa59df
address _marketdevWallet
setZeroBuyTaxmode 0x4b01547f
bool _status
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
withDrawLeftoverETH 0x743942b6
address receipient
withdrawStuck 0x28a23cd1
address token
address to

Recent Transactions

No transactions found for this address