Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0xD2c869382C7AC9f87Ff73548d029d67C0F9Dee31
Balance 0 ETH
Nonce 1
Code Size 13076 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

13076 bytes
0x6080604052600436106102e05760003560e01c806352390c021161018457806395d89b41116100d6578063d49d51811161008a578063f2fde38b11610064578063f2fde38b14610846578063f375b25314610866578063f8b45b051461088657600080fd5b8063d49d5181146107ca578063dd62ed3e146107e0578063ea2f0b371461082657600080fd5b8063a9059cbb116100bb578063a9059cbb1461077f578063c9567bf91461079f578063d1475185146107b457600080fd5b806395d89b411461074a578063a457c2d71461075f57600080fd5b806370a082311161013857806388f820201161011257806388f82020146106d35780638da5cb5b1461070c5780638ee88c531461072a57600080fd5b806370a0823114610689578063715018a6146106a95780638203f5fe146106be57600080fd5b8063610d5b1911610169578063610d5b191461061a578063638b1b14146106535780636bc87c3a1461067357600080fd5b806352390c02146105c15780635342acb4146105e157600080fd5b8063313ce5671161023d5780633bd5d173116101f157806345596e2e116101cb57806345596e2e146105615780634680ff351461058157806349bd5a5e146105a157600080fd5b80633bd5d17314610501578063437823ec146105215780634549b0391461054157600080fd5b80633685d419116102225780633685d419146104ab57806339509351146104cb5780633b124fe7146104eb57600080fd5b8063313ce56714610469578063362a3c5d1461048b57600080fd5b806318160ddd1161029457806327c8f8351161027957806327c8f835146103f557806329b1c15c146104295780632d8381191461044957600080fd5b806318160ddd146103c057806323b872dd146103d557600080fd5b8063095ea7b3116102c5578063095ea7b31461033957806313114a9d146103695780631694505e1461038857600080fd5b8063061c82d0146102ec57806306fdde031461030e57600080fd5b366102e757005b600080fd5b3480156102f857600080fd5b5061030c610307366004612f53565b61089c565b005b34801561031a57600080fd5b506103236108ee565b6040516103309190612f6c565b60405180910390f35b34801561034557600080fd5b50610359610354366004612fd2565b610980565b6040519015158152602001610330565b34801561037557600080fd5b50600e545b604051908152602001610330565b34801561039457600080fd5b50601b546103a8906001600160a01b031681565b6040516001600160a01b039091168152602001610330565b3480156103cc57600080fd5b50600c5461037a565b3480156103e157600080fd5b506103596103f0366004612ffe565b610997565b34801561040157600080fd5b506103a87f000000000000000000000000000000000000000000000000000000000000dead81565b34801561043557600080fd5b5061030c61044436600461303f565b610a00565b34801561045557600080fd5b5061037a610464366004612f53565b610a6a565b34801561047557600080fd5b5060115460405160ff9091168152602001610330565b34801561049757600080fd5b5061030c6104a636600461303f565b610b01565b3480156104b757600080fd5b5061030c6104c636600461303f565b610ccc565b3480156104d757600080fd5b506103596104e6366004612fd2565b610e76565b3480156104f757600080fd5b5061037a60135481565b34801561050d57600080fd5b5061030c61051c366004612f53565b610eac565b34801561052d57600080fd5b5061030c61053c36600461303f565b610fa9565b34801561054d57600080fd5b5061037a61055c36600461305c565b611015565b34801561056d57600080fd5b5061030c61057c366004612f53565b6110a4565b34801561058d57600080fd5b5061030c61059c366004612f53565b6110f1565b3480156105ad57600080fd5b50601c546103a8906001600160a01b031681565b3480156105cd57600080fd5b5061030c6105dc36600461303f565b61113e565b3480156105ed57600080fd5b506103596105fc36600461303f565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561062657600080fd5b5061035961063536600461303f565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561065f57600080fd5b506003546103a8906001600160a01b031681565b34801561067f57600080fd5b5061037a60155481565b34801561069557600080fd5b5061037a6106a436600461303f565b6112af565b3480156106b557600080fd5b5061030c61130e565b3480156106ca57600080fd5b5061030c6113a0565b3480156106df57600080fd5b506103596106ee36600461303f565b6001600160a01b03166000908152600a602052604090205460ff1690565b34801561071857600080fd5b506000546001600160a01b03166103a8565b34801561073657600080fd5b5061030c610745366004612f53565b6115e1565b34801561075657600080fd5b5061032361162e565b34801561076b57600080fd5b5061035961077a366004612fd2565b61163d565b34801561078b57600080fd5b5061035961079a366004612fd2565b61168c565b3480156107ab57600080fd5b5061030c611699565b3480156107c057600080fd5b5061037a60175481565b3480156107d657600080fd5b5061037a60001981565b3480156107ec57600080fd5b5061037a6107fb366004613091565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561083257600080fd5b5061030c61084136600461303f565b611724565b34801561085257600080fd5b5061030c61086136600461303f565b61178d565b34801561087257600080fd5b5061030c61088136600461303f565b6118ac565b34801561089257600080fd5b5061037a60125481565b6000546001600160a01b031633146108e95760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064015b60405180910390fd5b601355565b6060600f80546108fd906130bf565b80601f0160208091040260200160405190810160405280929190818152602001828054610929906130bf565b80156109765780601f1061094b57610100808354040283529160200191610976565b820191906000526020600020905b81548152906001019060200180831161095957829003601f168201915b5050505050905090565b600061098d338484611a2f565b5060015b92915050565b60006109a4848484611b87565b6109f684336109f185604051806060016040528060288152602001613272602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190612027565b611a2f565b5060019392505050565b6000546001600160a01b03163314610a485760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000600d54821115610ae45760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e730000000000000000000000000000000000000000000060648201526084016108e0565b6000610aee612061565b9050610afa8382612084565b9392505050565b6000546001600160a01b03163314610b495760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b6001600160a01b03811660009081526007602052604090205460ff16610bb15760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c697374656400000000000060448201526064016108e0565b60005b600854811015610cc857816001600160a01b031660088281548110610bdb57610bdb6130f9565b6000918252602090912001546001600160a01b031603610cb65760088054610c0590600190613125565b81548110610c1557610c156130f9565b600091825260209091200154600880546001600160a01b039092169183908110610c4157610c416130f9565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600790915260409020805460ff191690556008805480610c9057610c90613138565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610cc08161314e565b915050610bb4565b5050565b6000546001600160a01b03163314610d145760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b6001600160a01b0381166000908152600a602052604090205460ff16610d7c5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108e0565b60005b600b54811015610cc857816001600160a01b0316600b8281548110610da657610da66130f9565b6000918252602090912001546001600160a01b031603610e6457600b8054610dd090600190613125565b81548110610de057610de06130f9565b600091825260209091200154600b80546001600160a01b039092169183908110610e0c57610e0c6130f9565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600a90925220805460ff19169055600b805480610c9057610c90613138565b80610e6e8161314e565b915050610d7f565b3360008181526006602090815260408083206001600160a01b0387168452909152812054909161098d9185906109f190866120c6565b336000818152600a602052604090205460ff1615610f325760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201527f6869732066756e6374696f6e000000000000000000000000000000000000000060648201526084016108e0565b6000610f3d83612125565b5050506001600160a01b038616600090815260046020526040902054939450610f6b93925084915050612180565b6001600160a01b038316600090815260046020526040902055600d54610f919082612180565b600d55600e54610fa190846120c6565b600e55505050565b6000546001600160a01b03163314610ff15760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6000600c548311156110695760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016108e0565b8161108957600061107984612125565b5094965061099195505050505050565b600061109484612125565b5093965061099195505050505050565b6000546001600160a01b031633146110ec5760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b601955565b6000546001600160a01b031633146111395760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b601755565b6000546001600160a01b031633146111865760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b6001600160a01b0381166000908152600a602052604090205460ff16156111ef5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108e0565b6001600160a01b03811660009081526004602052604090205415611249576001600160a01b03811660009081526004602052604090205461122f90610a6a565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6001600160a01b0381166000908152600a602052604081205460ff16156112ec57506001600160a01b031660009081526005602052604090205490565b6001600160a01b03821660009081526004602052604090205461099190610a6a565b6000546001600160a01b031633146113565760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113e85760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561143f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114639190613167565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d49190613167565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611539573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155d9190613167565b601c80546001600160a01b03199081166001600160a01b0393841617909155601b805482169383169390931790925560008054909116815260096020526040808220805460ff19908116600190811790925530845291909220805490911690911790556003805490911673fee18884a9abd2cddc4fe80310c306836b66c37f179055565b6000546001600160a01b031633146116295760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b601555565b6060601080546108fd906130bf565b600061098d33846109f1856040518060600160405280602581526020016132ba602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190612027565b600061098d338484611b87565b6000546001600160a01b031633146116e15760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b600060158190556013556004601755601c80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16600160a81b17905542601a55565b6000546001600160a01b0316331461176c5760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b031633146117d55760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b6001600160a01b0381166118515760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016108e0565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118f45760405162461bcd60e51b8152602060048201819052602482015260008051602061329a83398151915260448201526064016108e0565b6001600160a01b038116737a250d5630b4cf539739df2c5dacb4c659f2488d036119605760405162461bcd60e51b815260206004820152601b60248201527f57652063616e6e6f7420626c61636b6c69737420556e6973776170000000000060448201526064016108e0565b6001600160a01b03811660009081526007602052604090205460ff16156119c95760405162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c6973746564000060448201526064016108e0565b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6001600160a01b038316611aaa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016108e0565b6001600160a01b038216611b265760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016108e0565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611c035760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016108e0565b6001600160a01b038216611c7f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016108e0565b60008111611cf55760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f000000000000000000000000000000000000000000000060648201526084016108e0565b6001600160a01b03821660009081526007602052604090205460ff1615611d5e5760405162461bcd60e51b815260206004820152601760248201527f596f752068617665206e6f20706f77657220686572652100000000000000000060448201526064016108e0565b3360009081526007602052604090205460ff1615611dbe5760405162461bcd60e51b815260206004820152601760248201527f596f752068617665206e6f20706f77657220686572652100000000000000000060448201526064016108e0565b601c546001600160a01b038481169116148015611de95750601b546001600160a01b03838116911614155b8015611e0e57506001600160a01b03821660009081526009602052604090205460ff16155b15611edb57601c54600160a81b900460ff16611e6c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e000000000000000060448201526064016108e0565b601a544203611edb576001600160a01b0382166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b03191690911790555b6000611ee6306112af565b601c54909150600160a01b900460ff16158015611f0c5750601c54600160a81b900460ff165b8015611f255750601c546001600160a01b038481169116145b15611f97578015611f9757601954601c54611f6091606491611f5a9190611f54906001600160a01b03166112af565b906121c2565b90612084565b811115611f8e57601954601c54611f8b91606491611f5a9190611f54906001600160a01b03166112af565b90505b611f9781612260565b601c546000906001600160a01b0386811691161480611fc35750601c546001600160a01b038581169116145b801561200b57506001600160a01b03851660009081526009602052604090205460ff168061200957506001600160a01b03841660009081526009602052604090205460ff165b155b15612014575060015b6120208585858461229d565b5050505050565b6000818484111561204b5760405162461bcd60e51b81526004016108e09190612f6c565b5060006120588486613125565b95945050505050565b600080600061206e6123ce565b909250905061207d8282612084565b9250505090565b6000610afa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612550565b6000806120d38385613184565b905083811015610afa5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108e0565b600080600080600080600080600080600061213f8c61257e565b935093509350935060008060006121608f87878761215b612061565b6125d1565b919f509d509b509599509397509195509350505050919395979092949650565b6000610afa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612027565b6000826000036121d457506000610991565b60006121e08385613197565b9050826121ed85836131ae565b14610afa5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f770000000000000000000000000000000000000000000000000000000000000060648201526084016108e0565b601c805460ff60a01b1916600160a01b17905561227c81612633565b47801561228c5761228c476127f8565b5050601c805460ff60a01b19169055565b806122aa576122aa612832565b6001600160a01b0384166000908152600a602052604090205460ff1680156122eb57506001600160a01b0383166000908152600a602052604090205460ff16155b15612300576122fb848484612877565b6123ac565b6001600160a01b0384166000908152600a602052604090205460ff1615801561234157506001600160a01b0383166000908152600a602052604090205460ff165b15612351576122fb848484612a49565b6001600160a01b0384166000908152600a602052604090205460ff16801561239157506001600160a01b0383166000908152600a602052604090205460ff165b156123a1576122fb848484612b91565b6123ac848484612ca3565b806123c8576123c8601454601355601654601555601854601755565b50505050565b600d54600c546000918291825b600b54811015612520578260046000600b84815481106123fd576123fd6130f9565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061246857508160056000600b8481548110612441576124416130f9565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561247e57600d54600c54945094505050509091565b6124c460046000600b8481548110612498576124986130f9565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612180565b925061250c60056000600b84815481106124e0576124e06130f9565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612180565b9150806125188161314e565b9150506123db565b50600c54600d5461253091612084565b82101561254757600d54600c549350935050509091565b90939092509050565b600081836125715760405162461bcd60e51b81526004016108e09190612f6c565b50600061205884866131ae565b600080600080600061258f86612d86565b9050600061259c87612da2565b905060006125a988612dbe565b905060006125c1836125bb8b87612180565b90612180565b9993985091965094509092505050565b60008080806125e089866121c2565b905060006125ee89876121c2565b905060006125fc89886121c2565b9050600061260a89896121c2565b9050600061261e826125bb85818989612180565b949d949c50929a509298505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612668576126686130f9565b6001600160a01b03928316602091820292909201810191909152601b54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156126da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fe9190613167565b81600181518110612711576127116130f9565b6001600160a01b039283166020918202929092010152601b546127379130911684611a2f565b601b546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac94790612789908590600090869030904290600401613214565b600060405180830381600087803b1580156127a357600080fd5b505af11580156127b7573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516127ec929190613250565b60405180910390a15050565b6003546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610cc8573d6000803e3d6000fd5b6013541580156128425750601554155b801561284e5750601754155b1561285557565b6013805460145560158054601655601780546018556000928390559082905555565b600080600080600080600061288b88612125565b965096509650965096509650965060006128a48a6112af565b905060006128b282876120c6565b9050601254811180156128d35750601c546001600160a01b038c8116911614155b156129375760405162461bcd60e51b815260206004820152602e60248201527f5472616e7366657220616d6f756e74206578636565647320746865204d61782060448201526d2bb0b63632ba1030b6b7bab73a1760911b60648201526084016108e0565b6001600160a01b038c1660009081526005602052604090205461295a908b612180565b6001600160a01b038d16600090815260056020908152604080832093909355600490522054612989908a612180565b6001600160a01b03808e1660009081526004602052604080822093909355908d16815220546129b890896120c6565b6001600160a01b038c166000908152600460205260409020556129da84612dda565b6129e48786612e63565b6129ee8c84612e87565b8a6001600160a01b03168c6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef88604051612a3391815260200190565b60405180910390a3505050505050505050505050565b6000806000806000806000612a5d88612125565b96509650965096509650965096506000612a768a6112af565b90506000612a8482876120c6565b905060125481118015612aa55750601c546001600160a01b038c8116911614155b15612b095760405162461bcd60e51b815260206004820152602e60248201527f5472616e7366657220616d6f756e74206578636565647320746865204d61782060448201526d2bb0b63632ba1030b6b7bab73a1760911b60648201526084016108e0565b6001600160a01b038c16600090815260046020526040902054612b2c908a612180565b6001600160a01b03808e16600090815260046020908152604080832094909455918e16815260059091522054612b6290876120c6565b6001600160a01b038c166000908152600560209081526040808320939093556004905220546129b890896120c6565b6000806000806000806000612ba588612125565b96509650965096509650965096506000612bbe8a6112af565b90506000612bcc82876120c6565b905060125481118015612bed5750601c546001600160a01b038c8116911614155b15612c515760405162461bcd60e51b815260206004820152602e60248201527f5472616e7366657220616d6f756e74206578636565647320746865204d61782060448201526d2bb0b63632ba1030b6b7bab73a1760911b60648201526084016108e0565b6001600160a01b038c16600090815260056020526040902054612c74908b612180565b6001600160a01b038d16600090815260056020908152604080832093909355600490522054612b2c908a612180565b6000806000806000806000612cb788612125565b96509650965096509650965096506000612cd08a6112af565b90506000612cde82876120c6565b905060125481118015612cff5750601c546001600160a01b038c8116911614155b15612d635760405162461bcd60e51b815260206004820152602e60248201527f5472616e7366657220616d6f756e74206578636565647320746865204d61782060448201526d2bb0b63632ba1030b6b7bab73a1760911b60648201526084016108e0565b6001600160a01b038c16600090815260046020526040902054612989908a612180565b60006109916064611f5a601354856121c290919063ffffffff16565b60006109916064611f5a601554856121c290919063ffffffff16565b60006109916064611f5a601754856121c290919063ffffffff16565b6000612de4612061565b90506000612df283836121c2565b30600090815260046020526040902054909150612e0f90826120c6565b30600090815260046020908152604080832093909355600a9052205460ff1615612e5e5730600090815260056020526040902054612e4d90846120c6565b306000908152600560205260409020555b505050565b600d54612e709083612180565b600d55600e54612e8090826120c6565b600e555050565b6000612e91612061565b90506000612e9f8284613197565b30600090815260046020526040902054909150612ebd908290613184565b30600090815260046020908152604080832093909355600a9052205460ff1615612f0d5730600090815260056020526040902054612efc908490613184565b306000908152600560205260409020555b60405183815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b600060208284031215612f6557600080fd5b5035919050565b600060208083528351808285015260005b81811015612f9957858101830151858201604001528201612f7d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612fcf57600080fd5b50565b60008060408385031215612fe557600080fd5b8235612ff081612fba565b946020939093013593505050565b60008060006060848603121561301357600080fd5b833561301e81612fba565b9250602084013561302e81612fba565b929592945050506040919091013590565b60006020828403121561305157600080fd5b8135610afa81612fba565b6000806040838503121561306f57600080fd5b823591506020830135801515811461308657600080fd5b809150509250929050565b600080604083850312156130a457600080fd5b82356130af81612fba565b9150602083013561308681612fba565b600181811c908216806130d357607f821691505b6020821081036130f357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156109915761099161310f565b634e487b7160e01b600052603160045260246000fd5b6000600182016131605761316061310f565b5060010190565b60006020828403121561317957600080fd5b8151610afa81612fba565b808201808211156109915761099161310f565b80820281158282048414176109915761099161310f565b6000826131cb57634e487b7160e01b600052601260045260246000fd5b500490565b600081518084526020808501945080840160005b838110156132095781516001600160a01b0316875295820195908201906001016131e4565b509495945050505050565b85815284602082015260a06040820152600061323360a08301866131d0565b6001600160a01b0394909416606083015250608001529392505050565b82815260406020820152600061326960408301846131d0565b94935050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204360283a64c941461971128f2292d3253f30947ec05ad7d24dd3b0889fd0637a64736f6c63430008120033

Verified Source Code Partial Match

Compiler: v0.8.18+commit.87f61d96 EVM: paris Optimization: Yes (1000 runs)
WagieBot.sol 1304 lines
/**

██╗    ██╗ █████╗  ██████╗ ██╗███████╗██████╗  ██████╗ ████████╗
██║    ██║██╔══██╗██╔════╝ ██║██╔════╝██╔══██╗██╔═══██╗╚══██╔══╝
██║ █╗ ██║███████║██║  ███╗██║█████╗  ██████╔╝██║   ██║   ██║   
██║███╗██║██╔══██║██║   ██║██║██╔══╝  ██╔══██╗██║   ██║   ██║   
╚███╔███╔╝██║  ██║╚██████╔╝██║███████╗██████╔╝╚██████╔╝   ██║   
 ╚══╝╚══╝ ╚═╝  ╚═╝ ╚═════╝ ╚═╝╚══════╝╚═════╝  ╚═════╝    ╚═╝   

Bringing Sniping, Tracking, Trading, Copy Trading and more directly to your Messaging Apps.

Bot: t.me/wagiebot
Website: wagiebot.com
Twitter: twitter.com/0xWagieBot
Portal: t.me/wagiebotportal

In active development since February 2023 and Stealth Launched on July 10th 2023. Full Development logs available.

*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.18;

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;
    }
}

// pragma solidity >=0.5.0;

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;
}

// pragma solidity >=0.5.0;

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;
}

// pragma solidity >=0.6.2;

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);
}

// pragma solidity >=0.6.2;

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 WagieBot is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    address payable public developmentAddress =
        payable(0xfEe18884A9ABd2CdDc4fe80310C306836B66C37F); // Development Address
    address public immutable deadAddress =
        0x000000000000000000000000000000000000dEaD;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isSniper;
    address[] private _confirmedSnipers;

    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcluded;
    address[] private _excluded;

    uint256 public constant MAX = ~uint256(0);
    uint256 private _tTotal = 10_000_000 * 10 ** 9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = "WagieBot";
    string private _symbol = "WagieBot";
    uint8 private _decimals = 9;
    uint256 public maxWallet = 200_000 * 10 ** 9;
    uint256 public _taxFee;
    uint256 private _previousTaxFee = _taxFee;

    uint256 public _liquidityFee;
    uint256 private _previousLiquidityFee = _liquidityFee;

    uint256 public _developmentFee;
    uint256 private _previousDevelopmentFee = _developmentFee;

    uint256 private _feeRate = 2;
    uint256 launchTime;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool inSwapAndLiquify;

    bool tradingOpen = false;

    event SwapETHForTokens(uint256 amountIn, address[] path);

    event SwapTokensForETH(uint256 amountIn, address[] path);

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor() {
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function initContract() external onlyOwner {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        developmentAddress = payable(
            0xfEe18884A9ABd2CdDc4fe80310C306836B66C37F
        );
    }

    function openTrading() external onlyOwner {
        _liquidityFee = 0;
        _taxFee = 0;
        _developmentFee = 4;
        tradingOpen = true;
        launchTime = block.timestamp;
    }

    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 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 approve(
        address spender,
        uint256 amount
    ) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    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 isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

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

    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 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;
        }
    }

    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 excludeFromReward(address account) public onlyOwner {
        require(!_isExcluded[account], "Account is already excluded");
        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 _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 _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], "You have no power here!");
        require(!_isSniper[msg.sender], "You have no power here!");

        // buy
        if (
            from == uniswapV2Pair &&
            to != address(uniswapV2Router) &&
            !_isExcludedFromFee[to]
        ) {
            require(tradingOpen, "Trading not yet enabled.");

            //antibot
            if (block.timestamp == launchTime) {
                _isSniper[to] = true;
                _confirmedSnipers.push(to);
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        //sell

        if (!inSwapAndLiquify && tradingOpen && to == uniswapV2Pair) {
            if (contractTokenBalance > 0) {
                if (
                    contractTokenBalance >
                    balanceOf(uniswapV2Pair).mul(_feeRate).div(100)
                ) {
                    contractTokenBalance = balanceOf(uniswapV2Pair)
                        .mul(_feeRate)
                        .div(100);
                }
                swapTokens(contractTokenBalance);
            }
        }

        bool takeFee = false;

        //take fee only on swaps
        if (
            (from == uniswapV2Pair || to == uniswapV2Pair) &&
            !(_isExcludedFromFee[from] || _isExcludedFromFee[to])
        ) {
            takeFee = true;
        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokens(uint256 contractTokenBalance) private lockTheSwap {
        swapTokensForEth(contractTokenBalance);

        //Send to Development address
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance > 0) {
            sendETHToFee(address(this).balance);
        }
    }

    function sendETHToFee(uint256 amount) private {
        developmentAddress.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
        );
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();

        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) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity,
            uint256 tDevelopment
        ) = _getValues(tAmount);

        uint256 currBalance = balanceOf(recipient);

        uint256 newBalance = currBalance.add(tTransferAmount);

        if (newBalance > maxWallet && recipient != address(uniswapV2Pair)) {
            revert("Transfer amount exceeds the Max Wallet amount.");
        }

        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        _takeDevelopment(sender, tDevelopment);
        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,
            uint256 tDevelopment
        ) = _getValues(tAmount);

        uint256 currBalance = balanceOf(recipient);

        uint256 newBalance = currBalance.add(tTransferAmount);

        if (newBalance > maxWallet && recipient != address(uniswapV2Pair)) {
            revert("Transfer amount exceeds the Max Wallet amount.");
        }

        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        _takeDevelopment(sender, tDevelopment);
        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,
            uint256 tDevelopment
        ) = _getValues(tAmount);

        uint256 currBalance = balanceOf(recipient);

        uint256 newBalance = currBalance.add(tTransferAmount);

        if (newBalance > maxWallet && recipient != address(uniswapV2Pair)) {
            revert("Transfer amount exceeds the Max Wallet amount.");
        }

        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        _takeDevelopment(sender, tDevelopment);
        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,
            uint256 tDevelopment
        ) = _getValues(tAmount);

        uint256 currBalance = balanceOf(recipient);

        uint256 newBalance = currBalance.add(tTransferAmount);

        if (newBalance > maxWallet && recipient != address(uniswapV2Pair)) {
            revert("Transfer amount exceeds the Max Wallet amount.");
        }

        _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);
        _takeDevelopment(sender, tDevelopment);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

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

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

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tLiquidity,
        uint256 tDevelopment,
        uint256 currentRate
    ) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rDevelopment = tDevelopment.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity).sub(
            rDevelopment
        );
        return (rAmount, rTransferAmount, rFee);
    }

    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 _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);
    }

    function _takeDevelopment(address sender, uint256 tDevelopment) internal {
        uint256 currentRate = _getRate();
        uint256 rLiquidity = tDevelopment * currentRate;
        _rOwned[address(this)] = _rOwned[address(this)] + rLiquidity;
        if (_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)] + tDevelopment;
        emit Transfer(sender, address(this), tDevelopment); // Transparency is the key to success.
    }

    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(10 ** 2);
    }

    function calculateLiquidityFee(
        uint256 _amount
    ) private view returns (uint256) {
        return _amount.mul(_liquidityFee).div(10 ** 2);
    }

    function calculateDevelopmentFee(
        uint256 _amount
    ) private view returns (uint256) {
        return _amount.mul(_developmentFee).div(10 ** 2);
    }

    function removeAllFee() private {
        if (_taxFee == 0 && _liquidityFee == 0 && _developmentFee == 0) return;

        _previousTaxFee = _taxFee;
        _previousLiquidityFee = _liquidityFee;
        _previousDevelopmentFee = _developmentFee;
        _taxFee = 0;
        _liquidityFee = 0;
        _developmentFee = 0;
    }

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _liquidityFee = _previousLiquidityFee;
        _developmentFee = _previousDevelopmentFee;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setTaxFeePercent(uint256 taxFee) external onlyOwner {
        _taxFee = taxFee;
    }

    function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner {
        _liquidityFee = liquidityFee;
    }

    function setDevelopmentFeePercent(
        uint256 developmentFee
    ) external onlyOwner {
        _developmentFee = developmentFee;
    }

    function setDevelopmentAddress(
        address _developmentAddress
    ) external onlyOwner {
        developmentAddress = payable(_developmentAddress);
    }

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

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

    function _removeSniper(address account) external onlyOwner {
        require(
            account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D,
            "We cannot blacklist Uniswap"
        );
        require(!_isSniper[account], "Account is already blacklisted");
        _isSniper[account] = true;
        _confirmedSnipers.push(account);
    }

    function _amnestySniper(address account) external onlyOwner {
        require(_isSniper[account], "Account is not blacklisted");
        for (uint256 i = 0; i < _confirmedSnipers.length; i++) {
            if (_confirmedSnipers[i] == account) {
                _confirmedSnipers[i] = _confirmedSnipers[
                    _confirmedSnipers.length - 1
                ];
                _isSniper[account] = false;
                _confirmedSnipers.pop();
                break;
            }
        }
    }

    function setFeeRate(uint256 rate) external onlyOwner {
        _feeRate = rate;
    }

    //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}
}

Read Contract

MAX 0xd49d5181 → uint256
_developmentFee 0xd1475185 → uint256
_liquidityFee 0x6bc87c3a → uint256
_taxFee 0x3b124fe7 → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
deadAddress 0x27c8f835 → address
decimals 0x313ce567 → uint8
developmentAddress 0x638b1b14 → address
isExcludedFromFee 0x5342acb4 → bool
isExcludedFromReward 0x88f82020 → bool
isRemovedSniper 0x610d5b19 → bool
maxWallet 0xf8b45b05 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
reflectionFromToken 0x4549b039 → uint256
symbol 0x95d89b41 → string
tokenFromReflection 0x2d838119 → uint256
totalFees 0x13114a9d → uint256
totalSupply 0x18160ddd → uint256
uniswapV2Pair 0x49bd5a5e → address
uniswapV2Router 0x1694505e → address

Write Contract 21 functions

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

_amnestySniper 0x362a3c5d
address account
_removeSniper 0xf375b253
address account
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
deliver 0x3bd5d173
uint256 tAmount
excludeFromFee 0x437823ec
address account
excludeFromReward 0x52390c02
address account
includeInFee 0xea2f0b37
address account
includeInReward 0x3685d419
address account
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
initContract 0x8203f5fe
No parameters
openTrading 0xc9567bf9
No parameters
renounceOwnership 0x715018a6
No parameters
setDevelopmentAddress 0x29b1c15c
address _developmentAddress
setDevelopmentFeePercent 0x4680ff35
uint256 developmentFee
setFeeRate 0x45596e2e
uint256 rate
setLiquidityFeePercent 0x8ee88c53
uint256 liquidityFee
setTaxFeePercent 0x061c82d0
uint256 taxFee
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner

Recent Transactions

No transactions found for this address