Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0x97cc485653200CF73E7A8F432804bb7361e6FE3F
Balance 0.000000000 ETH
Nonce 1
Code Size 20570 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

20570 bytes
0x6080604052600436106101855760003560e01c80637df0f767116100d1578063b14218031161008a578063e4dbc45b11610064578063e4dbc45b1461059a578063f2fde38b146105c3578063f9fdeae3146105ec578063fd965024146106155761018c565b8063b14218031461051d578063c9567bf914610546578063dd62ed3e1461055d5761018c565b80637df0f767146103e2578063931b68ea1461041f57806395d89b411461045d5780639fda058114610488578063a39fac12146104b1578063a9059cbb146104e05761018c565b806322a62e1e1161013e578063313ce56711610118578063313ce567146103235780636d1b229d1461034e5780636f013db91461037757806370a08231146103a55761018c565b806322a62e1e1461028d57806323b872dd146102bd5780632fb528ba146102fa5761018c565b80630210a83d1461019157806306fdde03146101a8578063095ea7b3146101d357806318160ddd1461021057806318839bc31461023b57806321c42e11146102645761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a661063e565b005b3480156101b457600080fd5b506101bd610afd565b6040516101ca9190613935565b60405180910390f35b3480156101df57600080fd5b506101fa60048036038101906101f591906139f0565b610b3a565b6040516102079190613a4b565b60405180910390f35b34801561021c57600080fd5b50610225610c2c565b6040516102329190613a75565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190613abc565b610c4f565b005b34801561027057600080fd5b5061028b60048036038101906102869190613b0f565b610e2c565b005b34801561029957600080fd5b506102a261105c565b6040516102b496959493929190613b88565b60405180910390f35b3480156102c957600080fd5b506102e460048036038101906102df9190613be9565b6110dd565b6040516102f19190613a4b565b60405180910390f35b34801561030657600080fd5b50610321600480360381019061031c9190613c68565b6112e7565b005b34801561032f57600080fd5b50610338611496565b6040516103459190613ca8565b60405180910390f35b34801561035a57600080fd5b5061037560048036038101906103709190613cc3565b61149f565b005b34801561038357600080fd5b5061038c61154b565b60405161039c9493929190613cf0565b60405180910390f35b3480156103b157600080fd5b506103cc60048036038101906103c79190613d35565b61156b565b6040516103d99190613a75565b60405180910390f35b3480156103ee57600080fd5b5061040960048036038101906104049190613d35565b6115b4565b6040516104169190613a4b565b60405180910390f35b34801561042b57600080fd5b5061044660048036038101906104419190613d35565b61160a565b604051610454929190613d62565b60405180910390f35b34801561046957600080fd5b506104726116b0565b60405161047f9190613935565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa9190613d8b565b6116ed565b005b3480156104bd57600080fd5b506104c6611adc565b6040516104d7959493929190613ded565b60405180910390f35b3480156104ec57600080fd5b50610507600480360381019061050291906139f0565b611ba3565b6040516105149190613a4b565b60405180910390f35b34801561052957600080fd5b50610544600480360381019061053f9190613e6c565b611c00565b005b34801561055257600080fd5b5061055b611dbc565b005b34801561056957600080fd5b50610584600480360381019061057f9190613eac565b611ea4565b6040516105919190613a75565b60405180910390f35b3480156105a657600080fd5b506105c160048036038101906105bc9190613f28565b611f2b565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190613fcd565b612166565b005b3480156105f857600080fd5b50610613600480360381019061060e9190613ffa565b61226e565b005b34801561062157600080fd5b5061063c60048036038101906106379190614061565b6123e4565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c390614113565b60405180910390fd5b6001600f60016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076f9061417f565b60405180910390fd5b600047116107bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b2906141eb565b60405180910390fd5b6000600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161083d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083490614257565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ce919061428c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097b919061428c565b6040518363ffffffff1660e01b81526004016109989291906142b9565b6020604051808303816000875af11580156109b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109db919061428c565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a66600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544760006124fe565b6001600e6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff021916908315150217905550565b60606040518060400160405280600681526020017f4149204a4f450000000000000000000000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c1a9190613a75565b60405180910390a36001905092915050565b60006009600a610c3c9190614444565b6203d090610c4a919061448f565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd490614113565b60405180910390fd5b8080610ce65750815b15610d7957600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6f9061451d565b60405180910390fd5b5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb190614113565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190614589565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611058576000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600080600080600080600060149054906101000a900460ff16600060159054906101000a900460ff16600060169054906101000a900461ffff16600060189054906101000a900461ffff166000601c9054906101000a900461ffff166000601a9054906101000a900461ffff16955095509550955095509550909192939495565b60006110e8846125ec565b611127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e906145f5565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146112d35781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112529190614615565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6112de8484846126c7565b90509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136c90614113565b60405180910390fd5b6001600f60016101000a81548160ff02191690831515021790555060648260ff1611156113d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ce90614695565b60405180910390fd5b600060648360ff166113e83061156b565b6113f2919061448f565b6113fc91906146e4565b90506009600a61140c9190614444565b81111561141d5761141c81612bf6565b5b81156114765760004790506000811161146b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146290614761565b60405180910390fd5b61147447612e15565b505b506000600f60016101000a81548160ff0219169083151502179055505050565b60006009905090565b60006114aa3361156b565b9050808211156114ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e6906147cd565b60405180910390fd5b6114f93383612fa4565b3373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb68360405161153f9190613a75565b60405180910390a25050565b600080600080600354600454600554600654935093509350935090919293565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600381526020017f4a4f450000000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461177b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177290614113565b60405180910390fd5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561181f5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118755750600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6118b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ab90614839565b60405180910390fd5b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094509450945094509091929394565b6000611bae336125ec565b611bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be4906145f5565b60405180910390fd5b611bf83384846126c7565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590614113565b60405180910390fd5b600060016103e88461ffff166009600a611ca89190614444565b6203d090611cb6919061448f565b611cc0919061448f565b611cca91906146e4565b611cd49190614859565b9050600354811015611d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d12906148d9565b60405180910390fd5b80600381905550600060016103e88461ffff166009600a611d3c9190614444565b6203d090611d4a919061448f565b611d54919061448f565b611d5e91906146e4565b611d689190614859565b9050600454811015611daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da690614945565b60405180910390fd5b8060048190555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4190614113565b60405180910390fd5b600f60009054906101000a900460ff1615611e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e91906149b1565b60405180910390fd5b611ea26130c4565b565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb090614113565b60405180910390fd5b8263ffffffff168463ffffffff166009600a611fd59190614444565b6203d090611fe3919061448f565b611fed919061448f565b611ff791906146e4565b6005819055508063ffffffff168263ffffffff166009600a6120199190614444565b6203d090612027919061448f565b612031919061448f565b61203b91906146e4565b6006819055506005546006541015612088576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207f90614a1d565b60405180910390fd5b620186a06009600a61209a9190614444565b6203d0906120a8919061448f565b6120b291906146e4565b600654116120f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ec90614a89565b60405180910390fd5b60646009600a6121059190614444565b6203d090612113919061448f565b61211d91906146e4565b60065410612160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215790614af5565b60405180910390fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121eb90614113565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516122639190614b74565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f390614113565b60405180910390fd5b60008183858761230c9190614b8f565b6123169190614b8f565b6123209190614b8f565b905060008161ffff1611612369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236090614c11565b60405180910390fd5b836000601c6101000a81548161ffff021916908361ffff16021790555082600060166101000a81548161ffff021916908361ffff16021790555081600060186101000a81548161ffff021916908361ffff160217905550806000601e6101000a81548161ffff021916908361ffff1602179055505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612472576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246990614113565b60405180910390fd5b606381836124809190614c31565b60ff1611156124c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bb90614cb2565b60405180910390fd5b81600060146101000a81548160ff021916908360ff16021790555080600060156101000a81548160ff021916908360ff1602179055505050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050811561253057600090505b61253984613155565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b81526004016125a096959493929190614d0d565b60606040518083038185885af11580156125be573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125e39190614d83565b50505050505050565b60008060009050600f60009054906101000a900460ff161561261157600190506126be565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126b35750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126bd57600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272e90614e22565b60405180910390fd5b600f60009054906101000a900460ff1661282d57600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127ed5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61282c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612823906145f5565b60405180910390fd5b5b600f60019054906101000a900460ff161580156128935750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128a1576128a061333f565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561290957503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612961575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156129b157612971848484613535565b6129b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a790614e8e565b60405180910390fd5b5b60006129be8585856136cc565b9050600081846129ce9190614615565b905083600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1b9190614615565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115612af65781600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ab29190614859565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b419190614859565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612be19190613a75565b60405180910390a36001925050509392505050565b612bff81613155565b6000600267ffffffffffffffff811115612c1c57612c1b614eae565b5b604051908082528060200260200182016040528015612c4a5781602001602082028036833780820191505090505b5090503081600081518110612c6257612c61614edd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2d919061428c565b81600181518110612d4157612d40614edd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ddf959493929190614fca565b600060405180830381600087803b158015612df957600080fd5b505af1158015612e0d573d6000803e3d6000fd5b505050505050565b60008060189054906101000a900461ffff16600060169054906101000a900461ffff16612e429190614b8f565b905060008161ffff161115612fa05760008161ffff16600060169054906101000a900461ffff1661ffff1684612e78919061448f565b612e8291906146e4565b905060008261ffff16600060189054906101000a900461ffff1661ffff1685612eab919061448f565b612eb591906146e4565b90506000821115612f2a57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612f28573d6000803e3d6000fd5b505b6000811115612f9d57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612f9b573d6000803e3d6000fd5b505b50505b5050565b60008111156130c05780600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ffc9190614615565b9250508190555080600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130529190614859565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130b79190613a75565b60405180910390a35b5050565b606460016009600a6130d69190614444565b6203d0906130e4919061448f565b6130ee919061448f565b6130f891906146e4565b600381905550606460016009600a6131109190614444565b6203d09061311e919061448f565b613128919061448f565b61313291906146e4565b6004819055506001600f60006101000a81548160ff021916908315150217905550565b80600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561333c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516133339190613a75565b60405180910390a35b50565b6001600f60016101000a81548160ff02191690831515021790555060006133653061156b565b905060055481101580156133855750600f60009054906101000a900460ff165b156135175760065481106133995760065490505b600060026000601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff16846133d2919061448f565b6133dc91906146e4565b6133e691906146e4565b9050600080601e9054906101000a900461ffff1661ffff166000601a9054906101000a900461ffff1661ffff168461341e919061448f565b61342891906146e4565b90506134343082612fa4565b60008183856134439190614615565b61344d9190614615565b90506009600a61345d9190614444565b8111156134fa57600047905061347282612bf6565b600081476134809190614615565b9050600080601c9054906101000a900461ffff1661ffff1611156134f757600080601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff16836134d4919061448f565b6134de91906146e4565b90506134e986613155565b6134f5868260006124fe565b505b50505b600047905060008111156135125761351181612e15565b5b505050505b506000600f60016101000a81548160ff021916908315150217905550565b60008060019050600f60009054906101000a900460ff1680156135a25750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135f85750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136c15760035483111561361057600090506136c0565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136b5575060045483600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136b39190614859565b115b156136bf57600090505b5b5b809150509392505050565b600080600f60009054906101000a900460ff1615806137345750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806137885750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613796576000905061389a565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613819576064600060149054906101000a900460ff1660ff1684613808919061448f565b61381291906146e4565b9050613899565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613898576064600060159054906101000a900460ff1660ff168461388b919061448f565b61389591906146e4565b90505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156138df5780820151818401526020810190506138c4565b60008484015250505050565b6000601f19601f8301169050919050565b6000613907826138a5565b61391181856138b0565b93506139218185602086016138c1565b61392a816138eb565b840191505092915050565b6000602082019050818103600083015261394f81846138fc565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006139878261395c565b9050919050565b6139978161397c565b81146139a257600080fd5b50565b6000813590506139b48161398e565b92915050565b6000819050919050565b6139cd816139ba565b81146139d857600080fd5b50565b6000813590506139ea816139c4565b92915050565b60008060408385031215613a0757613a06613957565b5b6000613a15858286016139a5565b9250506020613a26858286016139db565b9150509250929050565b60008115159050919050565b613a4581613a30565b82525050565b6000602082019050613a606000830184613a3c565b92915050565b613a6f816139ba565b82525050565b6000602082019050613a8a6000830184613a66565b92915050565b613a9981613a30565b8114613aa457600080fd5b50565b600081359050613ab681613a90565b92915050565b600080600060608486031215613ad557613ad4613957565b5b6000613ae3868287016139a5565b9350506020613af486828701613aa7565b9250506040613b0586828701613aa7565b9150509250925092565b60008060408385031215613b2657613b25613957565b5b6000613b34858286016139a5565b9250506020613b4585828601613aa7565b9150509250929050565b600060ff82169050919050565b613b6581613b4f565b82525050565b600061ffff82169050919050565b613b8281613b6b565b82525050565b600060c082019050613b9d6000830189613b5c565b613baa6020830188613b5c565b613bb76040830187613b79565b613bc46060830186613b79565b613bd16080830185613b79565b613bde60a0830184613b79565b979650505050505050565b600080600060608486031215613c0257613c01613957565b5b6000613c10868287016139a5565b9350506020613c21868287016139a5565b9250506040613c32868287016139db565b9150509250925092565b613c4581613b4f565b8114613c5057600080fd5b50565b600081359050613c6281613c3c565b92915050565b60008060408385031215613c7f57613c7e613957565b5b6000613c8d85828601613c53565b9250506020613c9e85828601613aa7565b9150509250929050565b6000602082019050613cbd6000830184613b5c565b92915050565b600060208284031215613cd957613cd8613957565b5b6000613ce7848285016139db565b91505092915050565b6000608082019050613d056000830187613a66565b613d126020830186613a66565b613d1f6040830185613a66565b613d2c6060830184613a66565b95945050505050565b600060208284031215613d4b57613d4a613957565b5b6000613d59848285016139a5565b91505092915050565b6000604082019050613d776000830185613a3c565b613d846020830184613a3c565b9392505050565b600080600060608486031215613da457613da3613957565b5b6000613db2868287016139a5565b9350506020613dc3868287016139a5565b9250506040613dd4868287016139a5565b9150509250925092565b613de78161397c565b82525050565b600060a082019050613e026000830188613dde565b613e0f6020830187613dde565b613e1c6040830186613dde565b613e296060830185613dde565b613e366080830184613dde565b9695505050505050565b613e4981613b6b565b8114613e5457600080fd5b50565b600081359050613e6681613e40565b92915050565b60008060408385031215613e8357613e82613957565b5b6000613e9185828601613e57565b9250506020613ea285828601613e57565b9150509250929050565b60008060408385031215613ec357613ec2613957565b5b6000613ed1858286016139a5565b9250506020613ee2858286016139a5565b9150509250929050565b600063ffffffff82169050919050565b613f0581613eec565b8114613f1057600080fd5b50565b600081359050613f2281613efc565b92915050565b60008060008060808587031215613f4257613f41613957565b5b6000613f5087828801613f13565b9450506020613f6187828801613f13565b9350506040613f7287828801613f13565b9250506060613f8387828801613f13565b91505092959194509250565b6000613f9a8261395c565b9050919050565b613faa81613f8f565b8114613fb557600080fd5b50565b600081359050613fc781613fa1565b92915050565b600060208284031215613fe357613fe2613957565b5b6000613ff184828501613fb8565b91505092915050565b6000806000806080858703121561401457614013613957565b5b600061402287828801613e57565b945050602061403387828801613e57565b935050604061404487828801613e57565b925050606061405587828801613e57565b91505092959194509250565b6000806040838503121561407857614077613957565b5b600061408685828601613c53565b925050602061409785828601613c53565b9150509250929050565b7f4f6e6c7920636f6e7472616374205f6f776e65722063616e2063616c6c20746860008201527f69732066756e6374696f6e000000000000000000000000000000000000000000602082015250565b60006140fd602b836138b0565b9150614108826140a1565b604082019050919050565b6000602082019050818103600083015261412c816140f0565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b60006141696009836138b0565b915061417482614133565b602082019050919050565b600060208201905081810360008301526141988161415c565b9050919050565b7f4e6f2045544820696e20636f6e74726163740000000000000000000000000000600082015250565b60006141d56012836138b0565b91506141e08261419f565b602082019050919050565b60006020820190508181036000830152614204816141c8565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b60006142416015836138b0565b915061424c8261420b565b602082019050919050565b6000602082019050818103600083015261427081614234565b9050919050565b6000815190506142868161398e565b92915050565b6000602082840312156142a2576142a1613957565b5b60006142b084828501614277565b91505092915050565b60006040820190506142ce6000830185613dde565b6142db6020830184613dde565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561436857808604811115614344576143436142e2565b5b60018516156143535780820291505b808102905061436185614311565b9450614328565b94509492505050565b600082614381576001905061443d565b8161438f576000905061443d565b81600181146143a557600281146143af576143de565b600191505061443d565b60ff8411156143c1576143c06142e2565b5b8360020a9150848211156143d8576143d76142e2565b5b5061443d565b5060208310610133831016604e8410600b84101617156144135782820a90508381111561440e5761440d6142e2565b5b61443d565b614420848484600161431e565b92509050818404811115614437576144366142e2565b5b81810290505b9392505050565b600061444f826139ba565b915061445a83613b4f565b92506144877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614371565b905092915050565b600061449a826139ba565b91506144a5836139ba565b92508282026144b3816139ba565b915082820484148315176144ca576144c96142e2565b5b5092915050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b60006145076010836138b0565b9150614512826144d1565b602082019050919050565b60006020820190508181036000830152614536816144fa565b9050919050565b7f43616e6e6f74206368616e676520746865207072696d617279204c5000000000600082015250565b6000614573601c836138b0565b915061457e8261453d565b602082019050919050565b600060208201905081810360008301526145a281614566565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b60006145df6010836138b0565b91506145ea826145a9565b602082019050919050565b6000602082019050818103600083015261460e816145d2565b9050919050565b6000614620826139ba565b915061462b836139ba565b9250828203905081811115614643576146426142e2565b5b92915050565b7f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000600082015250565b600061467f601a836138b0565b915061468a82614649565b602082019050919050565b600060208201905081810360008301526146ae81614672565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006146ef826139ba565b91506146fa836139ba565b92508261470a576147096146b5565b5b828204905092915050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b600061474b6009836138b0565b915061475682614715565b602082019050919050565b6000602082019050818103600083015261477a8161473e565b9050919050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b60006147b76015836138b0565b91506147c282614781565b602082019050919050565b600060208201905081810360008301526147e6816147aa565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b60006148236017836138b0565b915061482e826147ed565b602082019050919050565b6000602082019050818103600083015261485281614816565b9050919050565b6000614864826139ba565b915061486f836139ba565b9250828201905080821115614887576148866142e2565b5b92915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b60006148c36010836138b0565b91506148ce8261488d565b602082019050919050565b600060208201905081810360008301526148f2816148b6565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b600061492f6014836138b0565b915061493a826148f9565b602082019050919050565b6000602082019050818103600083015261495e81614922565b9050919050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b600061499b6014836138b0565b91506149a682614965565b602082019050919050565b600060208201905081810360008301526149ca8161498e565b9050919050565b7f4d696e4d6178206572726f720000000000000000000000000000000000000000600082015250565b6000614a07600c836138b0565b9150614a12826149d1565b602082019050919050565b60006020820190508181036000830152614a36816149fa565b9050919050565b7f5570706572207468726573686f6c6420746f6f206c6f77000000000000000000600082015250565b6000614a736017836138b0565b9150614a7e82614a3d565b602082019050919050565b60006020820190508181036000830152614aa281614a66565b9050919050565b7f5570706572207468726573686f6c6420746f6f20686967680000000000000000600082015250565b6000614adf6018836138b0565b9150614aea82614aa9565b602082019050919050565b60006020820190508181036000830152614b0e81614ad2565b9050919050565b6000819050919050565b6000614b3a614b35614b308461395c565b614b15565b61395c565b9050919050565b6000614b4c82614b1f565b9050919050565b6000614b5e82614b41565b9050919050565b614b6e81614b53565b82525050565b6000602082019050614b896000830184614b65565b92915050565b6000614b9a82613b6b565b9150614ba583613b6b565b9250828201905061ffff811115614bbf57614bbe6142e2565b5b92915050565b7f416c6c2063616e6e6f7420626520300000000000000000000000000000000000600082015250565b6000614bfb600f836138b0565b9150614c0682614bc5565b602082019050919050565b60006020820190508181036000830152614c2a81614bee565b9050919050565b6000614c3c82613b4f565b9150614c4783613b4f565b9250828201905060ff811115614c6057614c5f6142e2565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b6000614c9c6012836138b0565b9150614ca782614c66565b602082019050919050565b60006020820190508181036000830152614ccb81614c8f565b9050919050565b6000819050919050565b6000614cf7614cf2614ced84614cd2565b614b15565b6139ba565b9050919050565b614d0781614cdc565b82525050565b600060c082019050614d226000830189613dde565b614d2f6020830188613a66565b614d3c6040830187614cfe565b614d496060830186614cfe565b614d566080830185613dde565b614d6360a0830184613a66565b979650505050505050565b600081519050614d7d816139c4565b92915050565b600080600060608486031215614d9c57614d9b613957565b5b6000614daa86828701614d6e565b9350506020614dbb86828701614d6e565b9250506040614dcc86828701614d6e565b9150509250925092565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000614e0c601d836138b0565b9150614e1782614dd6565b602082019050919050565b60006020820190508181036000830152614e3b81614dff565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000614e786011836138b0565b9150614e8382614e42565b602082019050919050565b60006020820190508181036000830152614ea781614e6b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f418161397c565b82525050565b6000614f538383614f38565b60208301905092915050565b6000602082019050919050565b6000614f7782614f0c565b614f818185614f17565b9350614f8c83614f28565b8060005b83811015614fbd578151614fa48882614f47565b9750614faf83614f5f565b925050600181019050614f90565b5085935050505092915050565b600060a082019050614fdf6000830188613a66565b614fec6020830187614cfe565b8181036040830152614ffe8186614f6c565b905061500d6060830185613dde565b61501a6080830184613a66565b969550505050505056fea2646970667358221220e4c218e474472850f3ea4cfb7bbb2793871491e9ee97a5b5f00d5719076bcf1164736f6c63430008110033

Verified Source Code Full Match

Compiler: v0.8.17+commit.8df45f5f EVM: london Optimization: No
JOE.sol 353 lines
//SPDX-License-Identifier: MIT

/*
AI JOE - THE ULTIMATE POWERED AI MACHINE
https://t.me/aijoe_online -Telegram
https://aijoe.online      -Website
*/

pragma solidity 0.8.17;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    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);
}

abstract contract Auth {
    address internal _owner;
    constructor(address creatorOwner) { _owner = creatorOwner; }
    modifier onlyOwner() { require(msg.sender == _owner, "Only contract _owner can call this function"); _; }
    function transferOwnership(address payable newOwner) external onlyOwner { _owner = newOwner; emit OwnershipTransferred(newOwner); }
    event OwnershipTransferred(address _owner);
}

interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); }
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function WETH() external pure returns (address);
    function factory() external pure returns (address);
    function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract JOE is IERC20, Auth {
    uint8 private constant _decimals      = 9;
    uint256 private constant _totalSupply = 250_000 * (10**_decimals);
    string private constant _name         = "AI JOE";
    string private constant _symbol       = "JOE";

    uint8 private _buyTaxRate  = 5;
    uint8 private _sellTaxRate = 5;

    uint16 private _taxSharesMarketing   = 7;
    uint16 private _taxSharesDevelopment = 3;
    uint16 private _taxSharesBurn        = 0;
    uint16 private _taxSharesLP          = 0;
    uint16 private _totalTaxShares = _taxSharesMarketing + _taxSharesDevelopment + _taxSharesBurn + _taxSharesLP;

    address payable private _walletMarketing = payable(0x8589f65d4FBCfcdf160A6FA075f052285c9317E9); 
    address payable private _walletDevelopment = payable(0x95eF9F61568e228ec85d0Ee87EBC88f28e005A78); 

    uint256 private _maxTxAmount     = _totalSupply; 
    uint256 private _maxWalletAmount = _totalSupply;
    uint256 private _taxSwapMin = _totalSupply * 10 / 100000;
    uint256 private _taxSwapMax = _totalSupply * 69 / 100000;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _noFees;
    mapping (address => bool) private _noLimits;

    address constant private _burnWallet = address(0);
    address private _lpOwner;

    address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress);
    address private _primaryLP;
    mapping (address => bool) private _isLP;

    bool private _tradingOpen;

    bool private _inTaxSwap = false;
    modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; }

    event TokensAirdropped(uint256 totalWallets, uint256 totalTokens);
    event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount);

    constructor() Auth(msg.sender) {
        _lpOwner = msg.sender;

        _balances[address(this)] =  250_000 * (10 ** _decimals);
        emit Transfer(address(0), address(this), _balances[address(this)]);

        _balances[_owner] = _totalSupply - _balances[address(this)];
        emit Transfer(address(0), _owner, _balances[_owner]);

        _noFees[_owner] = true;
        _noFees[address(this)] = true;
        _noFees[_swapRouterAddress] = true;
        _noFees[_walletMarketing] = true;
        _noFees[_walletDevelopment] = true;
        _noFees[_burnWallet] = true;
        _noLimits[_owner] = true;
        _noLimits[address(this)] = true;
        _noLimits[_swapRouterAddress] = true;
        _noLimits[_walletMarketing] = true;
        _noLimits[_walletDevelopment] = true;
        _noLimits[_burnWallet] = true;  
    }

    receive() external payable {}
    
    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(sender), "Trading not open");
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }
        return _transferFrom(sender, recipient, amount);
    }

    function openTrading() external onlyOwner {
        require(!_tradingOpen, "trading already open");
        _openTrading();
    }

    function _approveRouter(uint256 _tokenAmount) internal {
        if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) {
            _allowances[address(this)][_swapRouterAddress] = type(uint256).max;
            emit Approval(address(this), _swapRouterAddress, type(uint256).max);
        }
    }

    function addInitialLiquidity() external onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP exists");
        require(address(this).balance>0, "No ETH in contract");
        require(_balances[address(this)]>0, "No tokens in contract");
        _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH());
        _addLiquidity(_balances[address(this)], address(this).balance, false);
        _isLP[_primaryLP] = true;
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal {
        address lpTokenRecipient = _lpOwner;
        if ( autoburn ) { lpTokenRecipient = address(0); }
        _approveRouter(_tokenAmount);
        _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp );
    }

    function _openTrading() internal {
        _maxTxAmount     = _totalSupply * 1 / 100; 
        _maxWalletAmount = _totalSupply * 1 / 100;
        _tradingOpen = true;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from Zero wallet");
        if (!_tradingOpen) { require(_noFees[sender] && _noLimits[sender], "Trading not open"); }
        if ( !_inTaxSwap && _isLP[recipient] ) { _swapTaxAndLiquify(); }
        
        if ( sender != address(this) && recipient != address(this) && sender != _owner ) { require(_checkLimits(sender, recipient, amount), "TX exceeds limits"); }
        uint256 _taxAmount = _calculateTax(sender, recipient, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] = _balances[sender] - amount;
        if ( _taxAmount > 0 ) { _balances[address(this)] = _balances[address(this)] + _taxAmount; }
        _balances[recipient] = _balances[recipient] + _transferAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _checkLimits(address sender, address recipient, uint256 transferAmount) internal view returns (bool) {
        bool limitCheckPassed = true;
        if ( _tradingOpen && !_noLimits[sender] && !_noLimits[recipient] ) {
            if ( transferAmount > _maxTxAmount ) { limitCheckPassed = false; }
            else if ( !_isLP[recipient] && (_balances[recipient] + transferAmount > _maxWalletAmount) ) { limitCheckPassed = false; }
        }
        return limitCheckPassed;
    }

    function _checkTradingOpen(address sender) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_noFees[sender] && _noLimits[sender]) { checkResult = true; } 

        return checkResult;
    }

    function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        if ( !_tradingOpen || _noFees[sender] || _noFees[recipient] ) { taxAmount = 0; }
        else if ( _isLP[sender] ) { taxAmount = amount * _buyTaxRate / 100; }
        else if ( _isLP[recipient] ) { taxAmount = amount * _sellTaxRate / 100; }
        return taxAmount;
    }


    function getExemptions(address wallet) external view returns (bool noFees, bool noLimits) {
        return ( _noFees[wallet], _noLimits[wallet] );
    }
    function setExemptions(address wallet, bool noFees, bool noLimits) external onlyOwner {
        if (noLimits || noFees) { require(!_isLP[wallet], "Cannot exempt LP"); }
        _noFees[ wallet ] = noFees;
        _noLimits[ wallet ] = noLimits;
    }
    function setExtraLP(address lpContractAddress, bool isLiquidityPool) external onlyOwner { 
        require(lpContractAddress != _primaryLP, "Cannot change the primary LP");
        _isLP[lpContractAddress] = isLiquidityPool; 
        if (isLiquidityPool) { 
            _noFees[lpContractAddress] = false; 
            _noLimits[lpContractAddress] = false; 
        }
    }
    function isLP(address wallet) external view returns (bool) {
        return _isLP[wallet];
    }

    function getTaxInfo() external view returns (uint8 buyTax, uint8 sellTax, uint16 sharesMarketing, uint16 sharesDevelopment, uint16 sharesLP, uint16 sharesTokenBurn ) {
        return ( _buyTaxRate, _sellTaxRate, _taxSharesMarketing, _taxSharesDevelopment, _taxSharesLP, _taxSharesBurn);
    }
    function setTaxRates(uint8 newBuyTax, uint8 newSellTax) external onlyOwner {
        require(newBuyTax + newSellTax <= 99, "Roundtrip too high");
        _buyTaxRate = newBuyTax;
        _sellTaxRate = newSellTax;
    }  
    function setTaxDistribution(uint16 sharesTokenBurn, uint16 sharesAutoLP, uint16 sharesMarketing, uint16 sharesDevelopment) external onlyOwner {
        uint16 totalShares = sharesTokenBurn + sharesAutoLP + sharesMarketing + sharesDevelopment;
        require( totalShares > 0, "All cannot be 0");
        _taxSharesLP = sharesAutoLP;
        _taxSharesMarketing = sharesMarketing;
        _taxSharesDevelopment = sharesDevelopment;
        _totalTaxShares = totalShares;
    }

    function getAddresses() external view returns (address owner, address primaryLP, address marketing, address development, address LPowner ) {
        return ( _owner, _primaryLP, _walletMarketing, _walletDevelopment, _lpOwner);
    }
    function setTaxWallets(address newMarketing, address newDevelopment, address newLpOwner) external onlyOwner {
        require(!_isLP[newMarketing] && !_isLP[newDevelopment] && !_isLP[newLpOwner], "LP cannot be tax wallet");
        _walletMarketing = payable(newMarketing);
        _walletDevelopment = payable(newDevelopment);
        _lpOwner = newLpOwner;
        _noFees[newMarketing] = true;
        _noFees[newDevelopment] = true;
        _noLimits[newMarketing] = true;
        _noLimits[newDevelopment] = true;
    }

    function getLimitsInfo() external view returns (uint256 maxTX, uint256 maxWallet, uint256 taxSwapMin, uint256 taxSwapMax ) {
        return ( _maxTxAmount, _maxWalletAmount, _taxSwapMin, _taxSwapMax);
    }
    function increaseLimits(uint16 maxTxAmtPermile, uint16 maxWalletAmtPermile) external onlyOwner {
        uint256 newTxAmt = _totalSupply * maxTxAmtPermile / 1000 + 1;
        require(newTxAmt >= _maxTxAmount, "tx limit too low");
        _maxTxAmount = newTxAmt;
        uint256 newWalletAmt = _totalSupply * maxWalletAmtPermile / 1000 + 1;
        require(newWalletAmt >= _maxWalletAmount, "wallet limit too low");
        _maxWalletAmount = newWalletAmt;
    }
    function setTaxSwapLimits(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner {
        _taxSwapMin = _totalSupply * minValue / minDivider;
        _taxSwapMax = _totalSupply * maxValue / maxDivider;
        require(_taxSwapMax>=_taxSwapMin, "MinMax error");
        require(_taxSwapMax>_totalSupply / 100000, "Upper threshold too low");
        require(_taxSwapMax<_totalSupply / 100, "Upper threshold too high");
    }

    function _burnTokens(address fromWallet, uint256 amount) private {
        if ( amount > 0 ) {
            _balances[fromWallet] -= amount;
            _balances[_burnWallet] += amount;
            emit Transfer(fromWallet, _burnWallet, amount);
        }
    }

    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokensAvailable = balanceOf(address(this));

        if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) {
            if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; }

            uint256 _tokensForLP = _taxTokensAvailable * _taxSharesLP / _totalTaxShares / 2;
            uint256 _tokensToBurn = _taxTokensAvailable * _taxSharesBurn / _totalTaxShares;
            _burnTokens(address(this), _tokensToBurn);
            
            uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP - _tokensToBurn;
            if( _tokensToSwap > 10**_decimals ) {
                uint256 _ethPreSwap = address(this).balance;
                _swapTaxTokensForEth(_tokensToSwap);
                uint256 _ethSwapped = address(this).balance - _ethPreSwap;
                if ( _taxSharesLP > 0 ) {
                    uint256 _ethWeiAmount = _ethSwapped * _taxSharesLP / _totalTaxShares ;
                    _approveRouter(_tokensForLP);
                    _addLiquidity(_tokensForLP, _ethWeiAmount, false);
                }
            }
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
        }
    }

    function _swapTaxTokensForEth(uint256 tokenAmount) private {
        _approveRouter(tokenAmount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _primarySwapRouter.WETH();
        _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp);
    }

    function _distributeTaxEth(uint256 amount) private {
        uint16 _taxShareTotal = _taxSharesMarketing + _taxSharesDevelopment;
        if (_taxShareTotal > 0) {
            uint256 marketingAmount = amount * _taxSharesMarketing / _taxShareTotal;
            uint256 developmentAmount = amount * _taxSharesDevelopment / _taxShareTotal;
            if ( marketingAmount > 0 ) { _walletMarketing.transfer(marketingAmount); }
            if ( developmentAmount > 0 ) { _walletDevelopment.transfer(developmentAmount); }
        }
    }

    function manualTaxSwapAndSend(uint8 swapTokenPercent, bool sendEth) external onlyOwner lockTaxSwap {
        require(swapTokenPercent <= 100, "Cannot swap more than 100%");
        uint256 tokensToSwap = balanceOf(address(this)) * swapTokenPercent / 100;
        if (tokensToSwap > 10 ** _decimals) {
            _swapTaxTokensForEth(tokensToSwap);
        }
        if (sendEth) { 
            uint256 ethBalance = address(this).balance;
            require(ethBalance > 0, "No tokens");
            _distributeTaxEth(address(this).balance); 
        }
    }

    function burnTokens(uint256 amount) external {
        uint256 _tokensAvailable = balanceOf(msg.sender);
        require(amount <= _tokensAvailable, "Token balance too low");
        _burnTokens(msg.sender, amount);
        emit TokensBurned(msg.sender, amount);
    }

}

Read Contract

allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
getAddresses 0xa39fac12 → address, address, address, address, address
getExemptions 0x931b68ea → bool, bool
getLimitsInfo 0x6f013db9 → uint256, uint256, uint256, uint256
getTaxInfo 0x22a62e1e → uint8, uint8, uint16, uint16, uint16, uint16
isLP 0x7df0f767 → bool
name 0x06fdde03 → string
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 15 functions

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

addInitialLiquidity 0x0210a83d
No parameters
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
burnTokens 0x6d1b229d
uint256 amount
increaseLimits 0xb1421803
uint16 maxTxAmtPermile
uint16 maxWalletAmtPermile
manualTaxSwapAndSend 0x2fb528ba
uint8 swapTokenPercent
bool sendEth
openTrading 0xc9567bf9
No parameters
setExemptions 0x18839bc3
address wallet
bool noFees
bool noLimits
setExtraLP 0x21c42e11
address lpContractAddress
bool isLiquidityPool
setTaxDistribution 0xf9fdeae3
uint16 sharesTokenBurn
uint16 sharesAutoLP
uint16 sharesMarketing
uint16 sharesDevelopment
setTaxRates 0xfd965024
uint8 newBuyTax
uint8 newSellTax
setTaxSwapLimits 0xe4dbc45b
uint32 minValue
uint32 minDivider
uint32 maxValue
uint32 maxDivider
setTaxWallets 0x9fda0581
address newMarketing
address newDevelopment
address newLpOwner
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