Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x92098551e613dFDcd4D7c7b2C35615709e4E0397
Balance 0 ETH
Nonce 1
Code Size 17830 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

17830 bytes
0x608060405260043610610233575f3560e01c8063864701a51161012d578063aa35822c116100aa578063e01af92c1161006e578063e01af92c14610829578063ec28438a14610851578063f2fde38b14610879578063f66895a3146108a1578063f887ea40146108cc5761023a565b8063aa35822c14610735578063aa4bde281461075d578063c04a541414610787578063dbe66ca0146107b1578063dd62ed3e146107ed5761023a565b80639d0014b1116100f15780639d0014b114610643578063a11a16821461066b578063a457c2d714610693578063a8aa1b31146106cf578063a9059cbb146106f95761023a565b8063864701a5146105725780638c0b5e221461059d5780638da5cb5b146105c757806395d89b41146105f15780639aed73701461061b5761023a565b806339509351116101bb57806370a082311161017f57806370a08231146104a4578063715018a6146104e057806372ac2486146104f657806375f0a8741461051e5780638091f3bf146105485761023a565b806339509351146103d8578063590ffdce146104145780635d098b381461043c57806367c45349146104645780636ddd17131461047a5761023a565b806318160ddd1161020257806318160ddd146102e457806323b872dd1461030e57806325b86edf1461034a57806327a14fc214610386578063313ce567146103ae5761023a565b806301339c211461023e5780630445b6671461025457806306fdde031461027e578063095ea7b3146102a85761023a565b3661023a57005b5f80fd5b348015610249575f80fd5b506102526108f6565b005b34801561025f575f80fd5b50610268610a26565b6040516102759190613021565b60405180910390f35b348015610289575f80fd5b50610292610a2c565b60405161029f91906130c4565b60405180910390f35b3480156102b3575f80fd5b506102ce60048036038101906102c9919061316c565b610abc565b6040516102db91906131c4565b60405180910390f35b3480156102ef575f80fd5b506102f8610ad9565b6040516103059190613021565b60405180910390f35b348015610319575f80fd5b50610334600480360381019061032f91906131dd565b610ae2565b60405161034191906131c4565b60405180910390f35b348015610355575f80fd5b50610370600480360381019061036b919061322d565b610bdd565b60405161037d91906131c4565b60405180910390f35b348015610391575f80fd5b506103ac60048036038101906103a7919061326b565b610d92565b005b3480156103b9575f80fd5b506103c2610e9d565b6040516103cf91906132b1565b60405180910390f35b3480156103e3575f80fd5b506103fe60048036038101906103f9919061316c565b610ea5565b60405161040b91906131c4565b60405180910390f35b34801561041f575f80fd5b5061043a600480360381019061043591906132f4565b610f4c565b005b348015610447575f80fd5b50610462600480360381019061045d9190613332565b61104c565b005b34801561046f575f80fd5b5061047861121a565b005b348015610485575f80fd5b5061048e61141a565b60405161049b91906131c4565b60405180910390f35b3480156104af575f80fd5b506104ca60048036038101906104c59190613332565b61142d565b6040516104d79190613021565b60405180910390f35b3480156104eb575f80fd5b506104f4611472565b005b348015610501575f80fd5b5061051c60048036038101906105179190613332565b6114f9565b005b348015610529575f80fd5b506105326116c7565b60405161053f919061336c565b60405180910390f35b348015610553575f80fd5b5061055c6116ec565b60405161056991906131c4565b60405180910390f35b34801561057d575f80fd5b506105866116ff565b604051610594929190613385565b60405180910390f35b3480156105a8575f80fd5b506105b1611710565b6040516105be9190613021565b60405180910390f35b3480156105d2575f80fd5b506105db611716565b6040516105e8919061336c565b60405180910390f35b3480156105fc575f80fd5b5061060561173e565b60405161061291906130c4565b60405180910390f35b348015610626575f80fd5b50610641600480360381019061063c919061326b565b6117ce565b005b34801561064e575f80fd5b506106696004803603810190610664919061326b565b6118d9565b005b348015610676575f80fd5b50610691600480360381019061068c91906133ac565b611a29565b005b34801561069e575f80fd5b506106b960048036038101906106b4919061316c565b611ba0565b6040516106c691906131c4565b60405180910390f35b3480156106da575f80fd5b506106e3611c8f565b6040516106f0919061336c565b60405180910390f35b348015610704575f80fd5b5061071f600480360381019061071a919061316c565b611cb4565b60405161072c91906131c4565b60405180910390f35b348015610740575f80fd5b5061075b600480360381019061075691906133ac565b611cd1565b005b348015610768575f80fd5b50610771611e02565b60405161077e9190613021565b60405180910390f35b348015610792575f80fd5b5061079b611e08565b6040516107a8919061336c565b60405180910390f35b3480156107bc575f80fd5b506107d760048036038101906107d29190613332565b611e2d565b6040516107e491906131c4565b60405180910390f35b3480156107f8575f80fd5b50610813600480360381019061080e919061322d565b611e4a565b6040516108209190613021565b60405180910390f35b348015610834575f80fd5b5061084f600480360381019061084a91906133ea565b611ecc565b005b34801561085c575f80fd5b506108776004803603810190610872919061326b565b611f91565b005b348015610884575f80fd5b5061089f600480360381019061089a9190613332565b61209c565b005b3480156108ac575f80fd5b506108b5612192565b6040516108c3929190613385565b60405180910390f35b3480156108d7575f80fd5b506108e06121a3565b6040516108ed9190613470565b60405180910390f35b6108fe6121c8565b73ffffffffffffffffffffffffffffffffffffffff1661091c611716565b73ffffffffffffffffffffffffffffffffffffffff1614610972576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610969906134d3565b60405180910390fd5b600760169054906101000a900460ff16156109c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b99061353b565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055507fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c860405160405180910390a1565b60085481565b606060038054610a3b90613586565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6790613586565b8015610ab25780601f10610a8957610100808354040283529160200191610ab2565b820191905f5260205f20905b815481529060010190602001808311610a9557829003601f168201915b5050505050905090565b5f610acf610ac86121c8565b84846121cf565b6001905092915050565b5f600254905090565b5f610aee848484612392565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b356121c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bab90613626565b60405180910390fd5b610bd185610bc06121c8565b8584610bcc9190613671565b6121cf565b60019150509392505050565b5f610be66121c8565b73ffffffffffffffffffffffffffffffffffffffff16610c04611716565b73ffffffffffffffffffffffffffffffffffffffff1614610c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c51906134d3565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c94919061336c565b602060405180830381865afa158015610caf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd391906136b8565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401610d109291906136e3565b6020604051808303815f875af1158015610d2c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d50919061371e565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051610d839291906136e3565b60405180910390a15092915050565b610d9a6121c8565b73ffffffffffffffffffffffffffffffffffffffff16610db8611716565b73ffffffffffffffffffffffffffffffffffffffff1614610e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e05906134d3565b60405180910390fd5b622625a0811015610e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4b906137b9565b60405180910390fd5b670de0b6b3a764000081610e6891906137d7565b600a819055507f49b5ebe6b6bd29b732eb93789df6cb9d7d384e64ab8600b8ab879f82a4fb1dec60405160405180910390a150565b5f6012905090565b5f610f42610eb16121c8565b848460015f610ebe6121c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610f3d9190613818565b6121cf565b6001905092915050565b610f546121c8565b73ffffffffffffffffffffffffffffffffffffffff16610f72611716565b73ffffffffffffffffffffffffffffffffffffffff1614610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf906134d3565b60405180910390fd5b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507fd03e5aecc1463f851cb441202cc200cd8754891d6b125b332588db1948d4cbed60405160405180910390a15050565b6110546121c8565b73ffffffffffffffffffffffffffffffffffffffff16611072611716565b73ffffffffffffffffffffffffffffffffffffffff16146110c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bf906134d3565b60405180910390fd5b5f60135f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a2906138bb565b60405180910390fd5b80600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fecc84d499d57318161ab7effa4a1797c7500e9cce582fce989611566acadb0e060405160405180910390a150565b6112226121c8565b73ffffffffffffffffffffffffffffffffffffffff16611240611716565b73ffffffffffffffffffffffffffffffffffffffff1614611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d906134d3565b60405180910390fd5b6001600760146101000a81548160ff0219169083151502179055506112c26112bd3061142d565b61284f565b5f4790505f6002826112d49190613906565b90505f81836112e39190613671565b90505f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161132b90613963565b5f6040518083038185875af1925050503d805f8114611365576040519150601f19603f3d011682016040523d82523d5f602084013e61136a565b606091505b505080915050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516113b590613963565b5f6040518083038185875af1925050503d805f81146113ef576040519150601f19603f3d011682016040523d82523d5f602084013e6113f4565b606091505b505080915050505050505f600760146101000a81548160ff021916908315150217905550565b600760159054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61147a6121c8565b73ffffffffffffffffffffffffffffffffffffffff16611498611716565b73ffffffffffffffffffffffffffffffffffffffff16146114ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e5906134d3565b60405180910390fd5b6114f75f612a85565b565b6115016121c8565b73ffffffffffffffffffffffffffffffffffffffff1661151f611716565b73ffffffffffffffffffffffffffffffffffffffff1614611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156c906134d3565b60405180910390fd5b5f60135f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164f906139e7565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f56c050a659ad3741e0a2373000420a1c3c060f7f39c95458be197a36a6e61ec260405160405180910390a150565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760169054906101000a900460ff1681565b600d805f0154908060010154905082565b60095481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461174d90613586565b80601f016020809104026020016040519081016040528092919081815260200182805461177990613586565b80156117c45780601f1061179b576101008083540402835291602001916117c4565b820191905f5260205f20905b8154815290600101906020018083116117a757829003601f168201915b5050505050905090565b6117d66121c8565b73ffffffffffffffffffffffffffffffffffffffff166117f4611716565b73ffffffffffffffffffffffffffffffffffffffff161461184a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611841906134d3565b60405180910390fd5b5f4790503373ffffffffffffffffffffffffffffffffffffffff166108fc6064848461187691906137d7565b6118809190613906565b90811502906040515f60405180830381858888f193505050501580156118a8573d5f803e3d5ffd5b507ff20a449062e534a116785d71bddf65609cfc0bc86030f808c97d76660ddb4bf960405160405180910390a15050565b6118e16121c8565b73ffffffffffffffffffffffffffffffffffffffff166118ff611716565b73ffffffffffffffffffffffffffffffffffffffff1614611955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194c906134d3565b60405180910390fd5b61271081101561199a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199190613a75565b60405180910390fd5b6301c9c3808111156119e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d890613b03565b60405180910390fd5b670de0b6b3a7640000816119f591906137d7565b6008819055507ee5ce26a39fffb27e333aa941bc88d6cc7491c7ad00e1dc92cae29c83aec93d60405160405180910390a150565b611a316121c8565b73ffffffffffffffffffffffffffffffffffffffff16611a4f611716565b73ffffffffffffffffffffffffffffffffffffffff1614611aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9c906134d3565b60405180910390fd5b604051806040016040528083815260200182815250600f5f820151815f0155602082015181600101559050508082611add9190613818565b6012819055506101916012541115611b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2190613b91565b60405180910390fd5b600a6012541015611b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6790613c1f565b60405180910390fd5b7f13f91d6936cb30f23ecef75125dc94fead23e2cb4beb9d95058df43aa8c3078560405160405180910390a15050565b5f8060015f611bad6121c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5e90613cad565b60405180910390fd5b611c84611c726121c8565b858584611c7f9190613671565b6121cf565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611cc7611cc06121c8565b8484612392565b6001905092915050565b611cd96121c8565b73ffffffffffffffffffffffffffffffffffffffff16611cf7611716565b73ffffffffffffffffffffffffffffffffffffffff1614611d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d44906134d3565b60405180910390fd5b604051806040016040528083815260200182815250600d5f820151815f0155602082015181600101559050508082611d859190613818565b6011819055506101916011541115611dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc990613d3b565b60405180910390fd5b7f5603f0cab8983038ffb2c31e46a497a67322819231397b1a4eff19e46e39851d60405160405180910390a15050565b600a5481565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6013602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611ed46121c8565b73ffffffffffffffffffffffffffffffffffffffff16611ef2611716565b73ffffffffffffffffffffffffffffffffffffffff1614611f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3f906134d3565b60405180910390fd5b80600760156101000a81548160ff0219169083151502179055507f41c787961cb389554b90a8dbfb700790a3f278f50ba1d330c0b555d884789b5a60405160405180910390a150565b611f996121c8565b73ffffffffffffffffffffffffffffffffffffffff16611fb7611716565b73ffffffffffffffffffffffffffffffffffffffff161461200d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612004906134d3565b60405180910390fd5b622625a0811015612053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204a906137b9565b60405180910390fd5b670de0b6b3a76400008161206791906137d7565b6009819055507f3fb2441f7fb0cf4882020ee77c4b9fb347bdbbf2fa439c76ca667e1b55f18b2b60405160405180910390a150565b6120a46121c8565b73ffffffffffffffffffffffffffffffffffffffff166120c2611716565b73ffffffffffffffffffffffffffffffffffffffff1614612118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210f906134d3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217d90613dc9565b60405180910390fd5b61218f81612a85565b50565b600f805f0154908060010154905082565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361223d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223490613e57565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a290613ee5565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123859190613021565b60405180910390a3505050565b5f81116123d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cb90613f73565b60405180910390fd5b60135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612472575060135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561248b5750600760149054906101000a900460ff16155b156125d257600760169054906101000a900460ff166124df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d690613fdb565b60405180910390fd5b600954811115612524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251b90614043565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125d157600a54816125858461142d565b61258f9190613818565b11156125d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c7906140d1565b60405180910390fd5b5b5b5f600760149054906101000a900460ff1680612634575060135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612685575060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612692575f9050612784565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612708576103e8601254836126f791906137d7565b6127019190613906565b9050612783565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361277e576103e86011548361276d91906137d7565b6127779190613906565b9050612782565b5f90505b5b5b600760159054906101000a900460ff1680156127ad5750600760149054906101000a900460ff16155b8015612806575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561281157505f81115b1561281f5761281e612b48565b5b612835848483856128309190613671565b612ca1565b5f81111561284957612848843083612ca1565b5b50505050565b5f600267ffffffffffffffff81111561286b5761286a6140ef565b5b6040519080825280602002602001820160405280156128995781602001602082028036833780820191505090505b50905030815f815181106128b0576128af61411c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612954573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612978919061415d565b8160018151811061298c5761298b61411c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129f23060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121cf565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612a54959493929190614278565b5f604051808303815f87803b158015612a6b575f80fd5b505af1158015612a7d573d5f803e3d5ffd5b505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612c9f576001600760146101000a81548160ff0219169083151502179055505f612b813061142d565b90506008548110612c83575f8190505f479050612b9d8261284f565b5f8147612baa9190613671565b90505f6064603283612bbc91906137d7565b612bc69190613906565b90505f8183612bd59190613671565b90505f821115612c2a57612c2982600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b5b5f811115612c7d57612c7c81600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b5b50505050505b505f600760146101000a81548160ff0219169083151502179055505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0690614340565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d74906143ce565b60405180910390fd5b612d88838383613004565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e029061445c565b60405180910390fd5b8181612e179190613671565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612ea29190613818565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f069190613021565b60405180910390a350505050565b80471015612f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4e906144c4565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682604051612f7c90613963565b5f6040518083038185875af1925050503d805f8114612fb6576040519150601f19603f3d011682016040523d82523d5f602084013e612fbb565b606091505b5050905080612fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff690614552565b60405180910390fd5b505050565b505050565b5f819050919050565b61301b81613009565b82525050565b5f6020820190506130345f830184613012565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613071578082015181840152602081019050613056565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6130968261303a565b6130a08185613044565b93506130b0818560208601613054565b6130b98161307c565b840191505092915050565b5f6020820190508181035f8301526130dc818461308c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613111826130e8565b9050919050565b61312181613107565b811461312b575f80fd5b50565b5f8135905061313c81613118565b92915050565b61314b81613009565b8114613155575f80fd5b50565b5f8135905061316681613142565b92915050565b5f8060408385031215613182576131816130e4565b5b5f61318f8582860161312e565b92505060206131a085828601613158565b9150509250929050565b5f8115159050919050565b6131be816131aa565b82525050565b5f6020820190506131d75f8301846131b5565b92915050565b5f805f606084860312156131f4576131f36130e4565b5b5f6132018682870161312e565b93505060206132128682870161312e565b925050604061322386828701613158565b9150509250925092565b5f8060408385031215613243576132426130e4565b5b5f6132508582860161312e565b92505060206132618582860161312e565b9150509250929050565b5f602082840312156132805761327f6130e4565b5b5f61328d84828501613158565b91505092915050565b5f60ff82169050919050565b6132ab81613296565b82525050565b5f6020820190506132c45f8301846132a2565b92915050565b6132d3816131aa565b81146132dd575f80fd5b50565b5f813590506132ee816132ca565b92915050565b5f806040838503121561330a576133096130e4565b5b5f6133178582860161312e565b9250506020613328858286016132e0565b9150509250929050565b5f60208284031215613347576133466130e4565b5b5f6133548482850161312e565b91505092915050565b61336681613107565b82525050565b5f60208201905061337f5f83018461335d565b92915050565b5f6040820190506133985f830185613012565b6133a56020830184613012565b9392505050565b5f80604083850312156133c2576133c16130e4565b5b5f6133cf85828601613158565b92505060206133e085828601613158565b9150509250929050565b5f602082840312156133ff576133fe6130e4565b5b5f61340c848285016132e0565b91505092915050565b5f819050919050565b5f61343861343361342e846130e8565b613415565b6130e8565b9050919050565b5f6134498261341e565b9050919050565b5f61345a8261343f565b9050919050565b61346a81613450565b82525050565b5f6020820190506134835f830184613461565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6134bd602083613044565b91506134c882613489565b602082019050919050565b5f6020820190508181035f8301526134ea816134b1565b9050919050565b7f54726164696e6720616c726561647920616374697665000000000000000000005f82015250565b5f613525601683613044565b9150613530826134f1565b602082019050919050565b5f6020820190508181035f83015261355281613519565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061359d57607f821691505b6020821081036135b0576135af613559565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613610602883613044565b915061361b826135b6565b604082019050919050565b5f6020820190508181035f83015261363d81613604565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61367b82613009565b915061368683613009565b925082820390508181111561369e5761369d613644565b5b92915050565b5f815190506136b281613142565b92915050565b5f602082840312156136cd576136cc6130e4565b5b5f6136da848285016136a4565b91505092915050565b5f6040820190506136f65f83018561335d565b6137036020830184613012565b9392505050565b5f81519050613718816132ca565b92915050565b5f60208284031215613733576137326130e4565b5b5f6137408482850161370a565b91505092915050565b7f43616e6e6f7420736574206d617853656c6c206c6f776572207468616e20302e5f8201527f3235250000000000000000000000000000000000000000000000000000000000602082015250565b5f6137a3602383613044565b91506137ae82613749565b604082019050919050565b5f6020820190508181035f8301526137d081613797565b9050919050565b5f6137e182613009565b91506137ec83613009565b92508282026137fa81613009565b9150828204841483151761381157613810613644565b5b5092915050565b5f61382282613009565b915061382d83613009565b925082820190508082111561384557613844613644565b5b92915050565b7f4d61726b6574696e672057616c6c65742063616e6e6f74206265207a65726f205f8201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b5f6138a5602783613044565b91506138b08261384b565b604082019050919050565b5f6020820190508181035f8301526138d281613899565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61391082613009565b915061391b83613009565b92508261392b5761392a6138d9565b5b828204905092915050565b5f81905092915050565b50565b5f61394e5f83613936565b915061395982613940565b5f82019050919050565b5f61396d82613943565b9150819050919050565b7f446576656c6f706d656e742057616c6c65742063616e6e6f74206265207a65725f8201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b5f6139d1602983613044565b91506139dc82613977565b604082019050919050565b5f6020820190508181035f8301526139fe816139c5565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613a5f603583613044565b9150613a6a82613a05565b604082019050919050565b5f6020820190508181035f830152613a8c81613a53565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20332520746f74616c20737570706c792e0000000000000000000000000000602082015250565b5f613aed603283613044565b9150613af882613a93565b604082019050919050565b5f6020820190508181035f830152613b1a81613ae1565b9050919050565b7f546f74616c2073656c6c20666565732063616e6e6f74206265206772656174655f8201527f72207468616e2034302500000000000000000000000000000000000000000000602082015250565b5f613b7b602a83613044565b9150613b8682613b21565b604082019050919050565b5f6020820190508181035f830152613ba881613b6f565b9050919050565b7f546f74616c2073656c6c20666565732063616e6e6f742062656c6573732020745f8201527f68616e2031250000000000000000000000000000000000000000000000000000602082015250565b5f613c09602683613044565b9150613c1482613baf565b604082019050919050565b5f6020820190508181035f830152613c3681613bfd565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613c97602583613044565b9150613ca282613c3d565b604082019050919050565b5f6020820190508181035f830152613cc481613c8b565b9050919050565b7f546f74616c2062757920666565732063616e6e6f7420626520677265617465725f8201527f207468616e203430250000000000000000000000000000000000000000000000602082015250565b5f613d25602983613044565b9150613d3082613ccb565b604082019050919050565b5f6020820190508181035f830152613d5281613d19565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613db3602683613044565b9150613dbe82613d59565b604082019050919050565b5f6020820190508181035f830152613de081613da7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613e41602483613044565b9150613e4c82613de7565b604082019050919050565b5f6020820190508181035f830152613e6e81613e35565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ecf602283613044565b9150613eda82613e75565b604082019050919050565b5f6020820190508181035f830152613efc81613ec3565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613f5d602983613044565b9150613f6882613f03565b604082019050919050565b5f6020820190508181035f830152613f8a81613f51565b9050919050565b7f54726164696e67206e6f742061637469766520796574000000000000000000005f82015250565b5f613fc5601683613044565b9150613fd082613f91565b602082019050919050565b5f6020820190508181035f830152613ff281613fb9565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e740000005f82015250565b5f61402d601d83613044565b915061403882613ff9565b602082019050919050565b5f6020820190508181035f83015261405a81614021565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e5f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f6140bb602183613044565b91506140c682614061565b604082019050919050565b5f6020820190508181035f8301526140e8816140af565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061415781613118565b92915050565b5f60208284031215614172576141716130e4565b5b5f61417f84828501614149565b91505092915050565b5f819050919050565b5f6141ab6141a66141a184614188565b613415565b613009565b9050919050565b6141bb81614191565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6141f381613107565b82525050565b5f61420483836141ea565b60208301905092915050565b5f602082019050919050565b5f614226826141c1565b61423081856141cb565b935061423b836141db565b805f5b8381101561426b57815161425288826141f9565b975061425d83614210565b92505060018101905061423e565b5085935050505092915050565b5f60a08201905061428b5f830188613012565b61429860208301876141b2565b81810360408301526142aa818661421c565b90506142b9606083018561335d565b6142c66080830184613012565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61432a602583613044565b9150614335826142d0565b604082019050919050565b5f6020820190508181035f8301526143578161431e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6143b8602383613044565b91506143c38261435e565b604082019050919050565b5f6020820190508181035f8301526143e5816143ac565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614446602683613044565b9150614451826143ec565b604082019050919050565b5f6020820190508181035f8301526144738161443a565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f6144ae601d83613044565b91506144b98261447a565b602082019050919050565b5f6020820190508181035f8301526144db816144a2565b9050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b5f61453c603a83613044565b9150614547826144e2565b604082019050919050565b5f6020820190508181035f83015261456981614530565b905091905056fea26469706673582212208a9b3a5b1c414621f17a068ed33ace3a7583bc1de22946e2b8173d85be9f2fa064736f6c63430008160033

Verified Source Code Partial Match

Compiler: v0.8.22+commit.4fc1097e EVM: shanghai Optimization: No
ArtemisAI.sol 484 lines
// SPDX-License-Identifier: MIT

/*

   █████╗ ██████╗ ████████╗███████╗███╗   ███╗██╗███████╗     █████╗ ██╗
  ██╔══██╗██╔══██╗╚══██╔══╝██╔════╝████╗ ████║██║██╔════╝    ██╔══██╗██║
  ███████║██████╔╝   ██║   █████╗  ██╔████╔██║██║███████╗    ███████║██║
  ██╔══██║██╔══██╗   ██║   ██╔══╝  ██║╚██╔╝██║██║╚════██║    ██╔══██║██║
  ██║  ██║██║  ██║   ██║   ███████╗██║ ╚═╝ ██║██║███████║    ██║  ██║██║
  ╚═╝  ╚═╝╚═╝  ╚═╝   ╚═╝   ╚══════╝╚═╝     ╚═╝╚═╝╚══════╝    ╚═╝  ╚═╝╚═╝
                                                                     
  Telegram: https://t.me/artemisai_erc
  X: https://twitter.com/artemisai_erc
  Website: https://artemisai.tech
  Whitepaper: https://docs.artemisai.tech

*/

pragma solidity 0.8.22;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; 
        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);
}

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}


contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping (address => uint256) internal _balances;

    mapping (address => mapping (address => uint256)) internal _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }


    function name() public view virtual override returns (string memory) {
        return _name;
    }

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

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

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

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        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 _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

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

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);
    function WETH() 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);

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

contract ArtemisAI is ERC20, Ownable{
    using Address for address payable;
    
    IRouter public router;
    address public pair;
    
    bool private swapping;
    bool public swapEnabled;
    bool public launched;


    modifier lockSwapping() {
        swapping = true;
        _;
        swapping = false;
    }
    
    event TransferForeignToken(address token, uint256 amount);
    event Launched();
    event SwapEnabled();
    event SwapThresholdUpdated();
    event BuyTaxesUpdated();
    event SellTaxesUpdated();
    event MarketingWalletUpdated();
    event DevelopmentWalletUpdated();
    event ExcludedFromFeesUpdated();
    event MaxTxAmountUpdated();
    event MaxWalletAmountUpdated();
    event StuckEthersCleared();
    
    uint256 public swapThreshold = 1000000 * 10**18; //0.1% of total supply
    uint256 public maxTxAmount = 10000000 * 10**18; //1% of total supply 
    uint256 public maxWalletAmount = 20000000 * 10**18; //2% of total supply
    
    address public marketingWallet = 0x00ed21ad010247b699719C97e62E1058F156fe11;
    address public developmentWallet = 0x8b6Ebe5e8a24A3A4a4d9761B04CA32Ce0A883df3;
    
    struct Taxes {
        uint256 marketing;
        uint256 development;
     }
    
    Taxes public buyTaxes = Taxes(25,25);
    Taxes public sellTaxes = Taxes(25,25);
    uint256 private totBuyTax = 50; //5% as denominator is 1,000
    uint256 private totSellTax = 50; //5% as denominator is 1,000
    
    mapping (address => bool) public excludedFromFees;
    
    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }

    constructor() ERC20("ArtemisAI", "ATAI") {
        _mint(msg.sender, 1000000000 * 10 ** decimals());
        excludedFromFees[msg.sender] = true;

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        excludedFromFees[address(this)] = true;
        excludedFromFees[marketingWallet] = true;
        excludedFromFees[developmentWallet] = true;
    }
    
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
                
        
        if(!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping){
            require(launched, "Trading not active yet");
            require(amount <= maxTxAmount, "You are exceeding maxTxAmount");
            if(recipient != pair){
                require(balanceOf(recipient) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount");
            }
        }

        uint256 fee;
          
        if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) fee = 0;
         
        else{
            if(recipient == pair) fee = amount * totSellTax / 1000;
            else if(sender == pair) fee = amount * totBuyTax / 1000;
            else fee = 0;
        }
        
        if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees();

        super._transfer(sender, recipient, amount - fee);
        if(fee > 0) super._transfer(sender, address(this) ,fee);
    }

    function swapForFees() private inSwap {
        uint256 contractBalance = balanceOf(address(this));

        if (contractBalance >= swapThreshold) {
            uint256 toSwap = contractBalance;
    
            uint256 initialBalance = address(this).balance;
    
            swapTokensForETH(toSwap);
    
            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 marketingAmt = deltaBalance * 50 / 100; 
            uint256 developmentAmt = deltaBalance - marketingAmt;

            if(marketingAmt > 0){
                payable(marketingWallet).sendValue(marketingAmt);
            }

            if(developmentAmt > 0){
                payable(developmentWallet).sendValue(developmentAmt);
            }
        }
    }
    
    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
    }

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

        // add the liquidity
        router.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(0xdead),
            block.timestamp
        );
    }
    function setSwapEnabled(bool state) external onlyOwner { // to be used only in case of dire emergency
        swapEnabled = state;
        emit SwapEnabled();
    }

    function setSwapThreshold(uint256 new_amount) external onlyOwner {
        require(new_amount >= 10000, "Swap amount cannot be lower than 0.001% total supply.");
        require(new_amount <= 30000000, "Swap amount cannot be higher than 3% total supply.");
        swapThreshold = new_amount * (10**18);
        emit SwapThresholdUpdated();
    }

    function launch() external onlyOwner{
        require(!launched, "Trading already active");
        launched = true;
        swapEnabled = true;
        emit Launched();
    }

    function setBuyTaxes(uint256 _marketing, uint256 _development) external onlyOwner{
        buyTaxes = Taxes(_marketing, _development);
        totBuyTax = _marketing + _development;
        require(totBuyTax <= 401,"Total buy fees cannot be greater than 40%");
        emit BuyTaxesUpdated();
    }

    function setSellTaxes(uint256 _marketing, uint256 _development) external onlyOwner{
        sellTaxes = Taxes(_marketing, _development);
        totSellTax = _marketing + _development;
        require(totSellTax <= 401,"Total sell fees cannot be greater than 40%");
        require(totSellTax >= 10,"Total sell fees cannot beless  than 1%");
        emit SellTaxesUpdated();
    }
    
    function setMarketingWallet(address newWallet) external onlyOwner{
        excludedFromFees[marketingWallet] = false;
        require(newWallet != address(0), "Marketing Wallet cannot be zero address");
        marketingWallet = newWallet;
        emit MarketingWalletUpdated();     
    }
   
    function setDevelopmentWallet(address newWallet) external onlyOwner{
        excludedFromFees[developmentWallet] = false;
        require(newWallet != address(0), "Development Wallet cannot be zero address");
        developmentWallet = newWallet;
        emit DevelopmentWalletUpdated();
    }

    function setExcludedFromFees(address _address, bool state) external onlyOwner {
        excludedFromFees[_address] = state;
        emit ExcludedFromFeesUpdated();
    }
    
    function setMaxTxAmount(uint256 amount) external onlyOwner{
        require(amount >= 2500000, "Cannot set maxSell lower than 0.25%");
        maxTxAmount = amount * (10**18);
        emit MaxTxAmountUpdated();
    }
    
    function setMaxWalletAmount(uint256 amount) external onlyOwner{
        require(amount >= 2500000, "Cannot set maxSell lower than 0.25%");
        maxWalletAmount = amount * (10**18);
        emit MaxWalletAmountUpdated();
    }

    function withdrawStuckTokens(address _token, address _to) external onlyOwner returns (bool _sent) {
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    function clearStuckEthers(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer((amountETH * amountPercentage) / 100);
        emit StuckEthersCleared();
    }

    function unclog() public onlyOwner lockSwapping {
        swapTokensForETH(
            balanceOf(address(this))
        );

        uint256 ethBalance = address(this).balance;
        uint256 ethMarketing = ethBalance / 2;
        uint256 ethDevelopment = ethBalance - ethMarketing;

        bool success;
        (success, ) = address(marketingWallet).call{value: ethMarketing}("");

        (success, ) = address(developmentWallet).call{value: ethDevelopment}(
            ""
        );
    }

    // fallbacks
    receive() external payable {}
}

Read Contract

allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
buyTaxes 0x864701a5 → uint256, uint256
decimals 0x313ce567 → uint8
developmentWallet 0xc04a5414 → address
excludedFromFees 0xdbe66ca0 → bool
launched 0x8091f3bf → bool
marketingWallet 0x75f0a874 → address
maxTxAmount 0x8c0b5e22 → uint256
maxWalletAmount 0xaa4bde28 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
pair 0xa8aa1b31 → address
router 0xf887ea40 → address
sellTaxes 0xf66895a3 → uint256, uint256
swapEnabled 0x6ddd1713 → bool
swapThreshold 0x0445b667 → uint256
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 20 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
clearStuckEthers 0x9aed7370
uint256 amountPercentage
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
launch 0x01339c21
No parameters
renounceOwnership 0x715018a6
No parameters
setBuyTaxes 0xaa35822c
uint256 _marketing
uint256 _development
setDevelopmentWallet 0x72ac2486
address newWallet
setExcludedFromFees 0x590ffdce
address _address
bool state
setMarketingWallet 0x5d098b38
address newWallet
setMaxTxAmount 0xec28438a
uint256 amount
setMaxWalletAmount 0x27a14fc2
uint256 amount
setSellTaxes 0xa11a1682
uint256 _marketing
uint256 _development
setSwapEnabled 0xe01af92c
bool state
setSwapThreshold 0x9d0014b1
uint256 new_amount
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
unclog 0x67c45349
No parameters
withdrawStuckTokens 0x25b86edf
address _token
address _to
returns: bool

Recent Transactions

No transactions found for this address