Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x4cB1e6c430Bb4b874869Fd6049ed07aE975b02f1
Balance 0 ETH
Nonce 1
Code Size 18298 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

18298 bytes
0x60806040526004361061035f575f3560e01c806370a08231116101c3578063b3295635116100f5578063d3459d0b11610099578063d3459d0b14610b04578063dd62ed3e14610b19578063e717fc3014610b5d578063eafb5a3c14610b72578063ee5d9c2d14610b91578063f94aa1b414610ba5578063fb78680d14610c09578063fdb78c0e14610c28578063feadde9c14610c48575f80fd5b8063b3295635146109c0578063b3d514fb1461055b578063b7df8b36146109df578063b9e0ddfa146109f8578063bd7c004714610a2f578063bfc2fc3514610a4e578063c3e981db14610a6d578063cf84770614610a8c575f80fd5b806395d89b411161016757806395d89b4114610865578063a1e900e014610894578063a224cee714610906578063a9059cbb14610925578063ab558e4d14610944578063abe57e7014610963578063ace96c3214610982578063b10e6c94146109a1578063b1b08f711461055b575f80fd5b806370a082311461078a5780637f4cdb1f146107a957806380c581d1146107bd57806386240a23146107dc578063893d20e8146107fb5780638a63bd9b1461081e5780638a8c523c146108325780638f28397014610846575f80fd5b806332cde6641161029c5780634e718e48116102405780634e718e48146106795780634fbee1931461069857806350a8e016146106cf578063590ffdce146106ef578063596cd99b1461070e5780635a6f09181461072d5780635c24b074146107425780636920b492146107615780636a50c66d14610775575f80fd5b806332cde664146105a057806335b90399146105c1578063452ed4f1146105df5780634ada218b146105fe5780634bbb93eb1461061e5780634c23bdbd1461063d5780634d9f486e146106515780634e4c7d9b14610665575f80fd5b8063158ef93e11610303578063158ef93e146104df57806318160ddd146104ff57806323b872dd1461051357806328577751146105325780632b112e49146105475780632b28fc7a1461055b5780632e8fa82114610570578063313ce56714610585575f80fd5b806303fd2a451461036a5780630445b66714610395578063069d955f146103b857806306fdde031461040c5780630758d9241461044157806307dd79e014610460578063095ea7b3146104895780630dcbcf1c146104a8575f80fd5b3661036657005b5f80fd5b348015610375575f80fd5b5061037f61dead81565b60405161038c9190613e03565b60405180910390f35b3480156103a0575f80fd5b506103aa60185481565b60405190815260200161038c565b3480156103c3575f80fd5b50601e546103e79061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161038c565b348015610417575f80fd5b506040805180820190915260048152632127222960e11b60208201525b60405161038c9190613e17565b34801561044c575f80fd5b5060165461037f906001600160a01b031681565b34801561046b575f80fd5b50601b546104799060ff1681565b604051901515815260200161038c565b348015610494575f80fd5b506104796104a3366004613e60565b610c67565b3480156104b3575f80fd5b506104796104c2366004613e8a565b6001600160a01b03165f908152600d602052604090205460ff1690565b3480156104ea575f80fd5b50601d5461047990600160b01b900460ff1681565b34801561050a575f80fd5b506103aa610c7d565b34801561051e575f80fd5b5061047961052d366004613ea5565b610c9d565b34801561053d575f80fd5b506103aa60155481565b348015610552575f80fd5b506103aa610d12565b348015610566575f80fd5b506103aa6103e881565b34801561057b575f80fd5b506103aa60195481565b348015610590575f80fd5b506040516009815260200161038c565b3480156105ab575f80fd5b506105bf6105ba366004613ef9565b610d55565b005b3480156105cc575f80fd5b50601b5461047990610100900460ff1681565b3480156105ea575f80fd5b5060175461037f906001600160a01b031681565b348015610609575f80fd5b50601d5461047990600160a81b900460ff1681565b348015610629575f80fd5b506103aa610638366004613f39565b610f06565b348015610648575f80fd5b50601a546103aa565b34801561065c575f80fd5b506105bf610f37565b348015610670575f80fd5b506105bf610f76565b348015610684575f80fd5b506105bf610693366004613f39565b611087565b3480156106a3575f80fd5b506104796106b2366004613e8a565b6001600160a01b03165f908152600e602052604090205460ff1690565b3480156106da575f80fd5b50601d5461047990600160a01b900460ff1681565b3480156106fa575f80fd5b506105bf610709366004613f5d565b611106565b348015610719575f80fd5b506105bf610728366004613f94565b611160565b348015610738575f80fd5b506103aa601c5481565b34801561074d575f80fd5b506105bf61075c366004613e8a565b611261565b34801561076c575f80fd5b506011546103aa565b348015610780575f80fd5b506103aa60125481565b348015610795575f80fd5b506103aa6107a4366004613e8a565b6113e3565b3480156107b4575f80fd5b506012546103aa565b3480156107c8575f80fd5b506105bf6107d7366004613f5d565b6113fd565b3480156107e7575f80fd5b506105bf6107f63660046140c8565b6115c2565b348015610806575f80fd5b50601b546201000090046001600160a01b031661037f565b348015610829575f80fd5b5061047961169f565b34801561083d575f80fd5b506105bf6116f0565b348015610851575f80fd5b506105bf610860366004613e8a565b611904565b348015610870575f80fd5b506040805180820190915260078152662453574950455360c81b6020820152610434565b34801561089f575f80fd5b506004546005546006546007546008546108cc946001600160a01b03908116948116938116928116911685565b604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152909116608082015260a00161038c565b348015610911575f80fd5b506105bf6109203660046140c8565b611a55565b348015610930575f80fd5b5061047961093f366004613e60565b6120e5565b34801561094f575f80fd5b506105bf61095e366004613e8a565b6120fb565b34801561096e575f80fd5b506105bf61097d3660046140f9565b61221a565b34801561098d575f80fd5b506105bf61099c366004613f5d565b61232a565b3480156109ac575f80fd5b506105bf6109bb366004614119565b612384565b3480156109cb575f80fd5b506105bf6109da366004614134565b6123ce565b3480156109ea575f80fd5b506014546104799060ff1681565b348015610a03575f80fd5b50610479610a12366004613e8a565b6001600160a01b03165f908152600f602052604090205460ff1690565b348015610a3a575f80fd5b506105bf610a49366004613f39565b612518565b348015610a59575f80fd5b506105bf610a68366004614185565b61254d565b348015610a78575f80fd5b506105bf610a873660046141a1565b6125e2565b348015610a97575f80fd5b50601f54610acf9061ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b9091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a00161038c565b348015610b0f575f80fd5b506103aa601a5481565b348015610b24575f80fd5b506103aa610b33366004614255565b6001600160a01b039182165f90815260136020908152604080832093909416825291909152205490565b348015610b68575f80fd5b506103aa60115481565b348015610b7d575f80fd5b506105bf610b8c366004613e8a565b612756565b348015610b9c575f80fd5b506105bf612b1f565b348015610bb0575f80fd5b505f54600154600254600354610bd6936001600160a01b03908116938116928116911684565b604080516001600160a01b039586168152938516602085015291841691830191909152909116606082015260800161038c565b348015610c14575f80fd5b506105bf610c23366004614281565b612bea565b348015610c33575f80fd5b5060175461047990600160a81b900460ff1681565b348015610c53575f80fd5b506105bf610c62366004613f5d565b612dfb565b5f610c73338484612e55565b5060015b92915050565b5f610c8a6009600a6143a4565b610c9890633b9aca006143b2565b905090565b6001600160a01b0383165f9081526013602090815260408083203384529091528120545f1914610cff576001600160a01b0384165f90815260136020908152604080832033845290915281208054849290610cf99084906143c9565b90915550505b610d0a848484612f19565b949350505050565b5f610d1c5f6113e3565b610d2761dead6113e3565b610d3191906143dc565b610d3d6009600a6143a4565b610d4b90633b9aca006143b2565b610c9891906143c9565b601b546201000090046001600160a01b03163314610d8e5760405162461bcd60e51b8152600401610d85906143ef565b60405180910390fd5b601b5460ff1615610dd55760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610d85565b601e5461ffff808416620100009092041611610e035760405162461bcd60e51b8152600401610d859061441a565b601e5461ffff808516911611610e2b5760405162461bcd60e51b8152600401610d859061441a565b601e805465ffffffff000019166201000061ffff8581169190910265ffff00000000191691909117600160201b848316021761ffff1916908516179055601c54610e78906203f4806143dc565b4210158015610e885750601c5415155b15610f01576103e88361ffff1611158015610ea957506103e88261ffff1611155b8015610ebb57506103e88161ffff1611155b610f015760405162461bcd60e51b815260206004820152601760248201527621b0b73737ba1032bc31b2b2b21036b0bc34b6bab6b99760491b6044820152606401610d85565b505050565b6017545f906103e8908390610f23906001600160a01b03166113e3565b610f2d91906143b2565b610c779190614465565b601b546201000090046001600160a01b03163314610f675760405162461bcd60e51b8152600401610d85906143ef565b601b805460ff19166001179055565b601b546201000090046001600160a01b03163314610fa65760405162461bcd60e51b8152600401610d85906143ef565b601b54610fc2906201000090046001600160a01b03165f611106565b601b805462010000600160b01b03198116909155604051620100009091046001600160a01b0316905f9082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3601d54600160a81b900460ff166110845760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610d85565b50565b601b546201000090046001600160a01b031633146110b75760405162461bcd60e51b8152600401610d85906143ef565b601581905560968111156110845760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610d85565b601b546201000090046001600160a01b031633146111365760405162461bcd60e51b8152600401610d85906143ef565b6001600160a01b03919091165f908152600e60205260409020805460ff1916911515919091179055565b601b546201000090046001600160a01b031633146111905760405162461bcd60e51b8152600401610d85906143ef565b600180546001600160a01b038085166001600160a01b03199283161790925560038054868416908316179055600280548484169083161790555f80549287169290911682179055158015906111ed57506001600160a01b03831615155b801561120157506001600160a01b03821615155b801561121557506001600160a01b03811615155b61125b5760405162461bcd60e51b815260206004820152601760248201527621b0b73737ba103132903d32b9379030b2323932b9b99760491b6044820152606401610d85565b50505050565b601b546201000090046001600160a01b031633146112915760405162461bcd60e51b8152600401610d85906143ef565b306001600160a01b038216036112da5760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610d85565b601d54600160a81b900460ff16156112f0575f80fd5b601d80546001600160a01b0319166001600160a01b038316908117909155604080516330fe427560e21b8152815163c3f909d49260048084019391929182900301815f875af1925050508015611363575060408051601f3d908101601f1916820190925261136091810190614484565b60015b61136b575f80fd5b601680546001600160a01b038085166001600160a01b0319928316178355601780548583169316831790555f918252600a6020526040909120805460ff1916600117905590546113bf913091165f19612e55565b601b54601654610f01916001600160a01b0362010000909104811691165f19612e55565b6001600160a01b03165f9081526009602052604090205490565b601b546201000090046001600160a01b0316331461142d5760405162461bcd60e51b8152600401610d85906143ef565b806114ab576001600160a01b038083165f908152600a6020526040808220805460ff19169055601d5490516380c581d160e01b81529216916380c581d19161147a918691906004016144b1565b5f604051808303815f87803b158015611491575f80fd5b505af11580156114a3573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f908152600a602052604090205460ff16156115115760405162461bcd60e51b815260206004820152601b60248201527a2830b4b91030b63932b0b23c9030b23232b2103a37903634b9ba1760291b6044820152606401610d85565b600b541561156a576203f480600b544261152b91906143c9565b1161156a5760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610d85565b42600b556001600160a01b038083165f908152600a602052604090819020805460ff19166001908117909155601d5491516380c581d160e01b815291909216916380c581d19161147a9186916004016144b1565b5050565b601b546201000090046001600160a01b031633146115f25760405162461bcd60e51b8152600401610d85906143ef565b5f5b81518110156115be575f600e5f848481518110611613576116136144cc565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f600f5f848481518110611666576116666144cc565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790556001016115f4565b601b545f906201000090046001600160a01b031633146116d15760405162461bcd60e51b8152600401610d85906143ef565b6016546116ea9030906001600160a01b03165f19612e55565b50600190565b601b546201000090046001600160a01b031633146117205760405162461bcd60e51b8152600401610d85906143ef565b601d546001600160a01b031661174357601d80546001600160a01b031916301790555b601d54600160a01b900460ff166117975760405162461bcd60e51b81526020600482015260186024820152772634b8bab4b234ba3c9036bab9ba1031329030b23232b21760411b6044820152606401610d85565b601d54600160a81b900460ff16156117ec5760405162461bcd60e51b815260206004820152601860248201527754726164696e6720616c726561647920656e61626c65642160401b6044820152606401610d85565b601d54601754604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff431660248201526001600160401b034216604482015260096064820152911690636c115c34906084015f604051808303815f87803b158015611854575f80fd5b505af1925050508015611865575060015b50601d546017546001600160a01b03918216916325a71cae9161188891166113e3565b6040518263ffffffff1660e01b81526004016118a691815260200190565b60408051808303815f875af19250505080156118df575060408051601f3d908101601f191682019092526118dc918101906144e0565b60015b156118eb576019556018555b42601c55601d805460ff60a81b1916600160a81b179055565b601b546201000090046001600160a01b031633146119345760405162461bcd60e51b8152600401610d85906143ef565b61deac196001600160a01b0382160161195f5760405162461bcd60e51b8152600401610d8590614502565b6001600160a01b0381166119855760405162461bcd60e51b8152600401610d8590614502565b611990816001611106565b601b546119ac906201000090046001600160a01b03165f611106565b601b545f906119c9906201000090046001600160a01b03166113e3565b11156119fa57601b546119f8906201000090046001600160a01b0316826119ef826113e3565b5f806001613422565b505b601b80546001600160a01b038381166201000081810262010000600160b01b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b601b546201000090046001600160a01b03163314611a855760405162461bcd60e51b8152600401610d85906143ef565b601d54600160b01b900460ff1615611ad55760405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610d85565b601d805460ff60b01b1916600160b01b1790557f152feca52e8f3fdde126fe21b8dd660e1f859eb6b4fafaa83368b183ff73b961805460ff1990811660019081179092557f6952827425c8afd3eba8a8768a6defbe71191752872f74297e726c054b3ae2d480548216831790557f5928c27a6fd40c8ed0e37a03e2e351082578ae0dedc08ce702ad6e3f7d65c58380548216831790556005546001600160a01b039081165f908152600f60205260408082208054851686179055600854831682528082208054851686179055600454831682528082208054851686179055600754831682528082208054851686179055600654909216815220805490911690911790556103e8611be76009600a6143a4565b611bf590633b9aca006143b2565b611c009060646143b2565b611c0a9190614465565b6005546001600160a01b03165f908152600960208190526040909120919091556103e890611c3990600a6143a4565b611c4790633b9aca006143b2565b611c539061028a6143b2565b611c5d9190614465565b6008546001600160a01b03165f908152600960208190526040909120919091556103e890611c8c90600a6143a4565b611c9a90633b9aca006143b2565b611ca59060646143b2565b611caf9190614465565b6004546001600160a01b03165f908152600960208190526040909120919091556103e890611cde90600a6143a4565b611cec90633b9aca006143b2565b611cf79060326143b2565b611d019190614465565b6007546001600160a01b03165f908152600960208190526040909120919091556103e890611d3090600a6143a4565b611d3e90633b9aca006143b2565b611d499060646143b2565b611d539190614465565b600680546001600160a01b039081165f90815260096020908152604080832095909555601b8054620100009081900485168452600c83528684208054600160ff199182168117909255600e8086527ff77e91909e61d18f67b875b2bfcae1f683a8d555e55382e3a6b082e2c59ea57a80548316841790559354929092048616855287852080548316821790553085528785208054831682179055600f845287852080548316821790556005548616855291909252858320805483168217905560085484168352858320805483168217905560045484168352858320805483168217905560075484168352858320805483168217905593549092168152928320805490911690911790555b8151811015611f0a576001600e5f848481518110611e7d57611e7d6144cc565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f848481518110611ed157611ed16144cc565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101611e5d565b506008546001600160a01b03165f5f805160206147258339815191526103e8611f356009600a6143a4565b611f4390633b9aca006143b2565b611f4f9061028a6143b2565b611f599190614465565b60405190815260200160405180910390a36004546001600160a01b03165f5f805160206147258339815191526103e8611f946009600a6143a4565b611fa290633b9aca006143b2565b611fad9060646143b2565b611fb79190614465565b60405190815260200160405180910390a36005546001600160a01b03165f5f805160206147258339815191526103e8611ff26009600a6143a4565b61200090633b9aca006143b2565b61200b9060646143b2565b6120159190614465565b60405190815260200160405180910390a36007546001600160a01b03165f5f805160206147258339815191526103e86120506009600a6143a4565b61205e90633b9aca006143b2565b6120699060326143b2565b6120739190614465565b60405190815260200160405180910390a36006546001600160a01b03165f5f805160206147258339815191526103e86120ae6009600a6143a4565b6120bc90633b9aca006143b2565b6120c79060646143b2565b6120d19190614465565b60405190815260200160405180910390a350565b5f6120f1338484612f19565b5060019392505050565b601b546201000090046001600160a01b0316331461212b5760405162461bcd60e51b8152600401610d85906143ef565b601b546040516370a0823160e01b815282916001600160a01b038084169263a9059cbb926201000090049091169083906370a082319061216f903090600401613e03565b602060405180830381865afa15801561218a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ae919061455a565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156121f6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f019190614571565b601b546201000090046001600160a01b0316331461224a5760405162461bcd60e51b8152600401610d85906143ef565b6103e88261225a6009600a6143a4565b61226890633b9aca006143b2565b61227291906143b2565b61227c9190614465565b6011556103e88161228f6009600a6143a4565b61229d90633b9aca006143b2565b6122a791906143b2565b6122b19190614465565b6012556122c06009600a6143a4565b6122ce90633b9aca006143b2565b60115411156122ef5760405162461bcd60e51b8152600401610d859061458c565b6122fb6009600a6143a4565b61230990633b9aca006143b2565b60125411156115be5760405162461bcd60e51b8152600401610d859061458c565b601b546201000090046001600160a01b0316331461235a5760405162461bcd60e51b8152600401610d85906143ef565b6001600160a01b03919091165f908152600f60205260409020805460ff1916911515919091179055565b601b546201000090046001600160a01b031633146123b45760405162461bcd60e51b8152600401610d85906143ef565b601b80549115156101000261ff0019909216919091179055565b601b546201000090046001600160a01b031633146123fe5760405162461bcd60e51b8152600401610d85906143ef565b601e545f906124199061ffff620100008204811691166145c1565b601f805467ffff0000ffff000019166201000061ffff8881169190910261ffff60301b191691909117600160301b878316021765ffff0000ffff1916600160201b8683160261ffff19161788821617909155169050828461247a84886145c1565b61248491906145c1565b61248e91906145c1565b601f805461ffff60401b1916600160401b61ffff938416810291909117918290559004168110156125115760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610d85565b5050505050565b601b546201000090046001600160a01b031633146125485760405162461bcd60e51b8152600401610d85906143ef565b601a55565b601b546201000090046001600160a01b0316331461257d5760405162461bcd60e51b8152600401610d85906143ef565b60405182151581527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a16014805460ff19169115159190911790556017805460ff60a81b1916600160a81b92151592909202919091179055565b601b546201000090046001600160a01b031633146126125760405162461bcd60e51b8152600401610d85906143ef565b5f5b82518161ffff16101561270c5761262d6009600a6143a4565b828261ffff1681518110612643576126436144cc565b602002602001015161265591906143b2565b61265e336113e3565b10156126a15760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610d85565b6126f933848361ffff16815181106126bb576126bb6144cc565b60200260200101516009600a6126d191906143a4565b858561ffff16815181106126e7576126e76144cc565b60200260200101516119ef91906143b2565b5080612704816145e3565b915050612614565b5080518251146115be5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610d85565b601b546201000090046001600160a01b031633146127865760405162461bcd60e51b8152600401610d85906143ef565b601d548190600160a01b900460ff16156127e25760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610d85565b5f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561281f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128439190614603565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561288e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128b29190614603565b6040518363ffffffff1660e01b81526004016128cf92919061461e565b602060405180830381865afa1580156128ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061290e9190614603565b6017546001600160a01b039081165f908152600a60205260409020805460ff191690559091508116612a8b57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612976573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061299a9190614603565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a099190614603565b6040518363ffffffff1660e01b8152600401612a2692919061461e565b6020604051808303815f875af1158015612a42573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a669190614603565b601780546001600160a01b0319166001600160a01b0392909216919091179055612aa7565b601780546001600160a01b0319166001600160a01b0383161790555b601780546001600160a01b039081165f908152600f602090815260408083208054600160ff19918216811790925589861685528285208054821683179055955485168452600a909252909120805490931617909155601680546001600160a01b0319169184169182179055610f019030905f19612e55565b601b546201000090046001600160a01b03163314612b4f5760405162461bcd60e51b8152600401610d85906143ef565b601b546040516001600160a01b036201000090920491909116904780156108fc02915f818181858888f19350505050158015612b8d573d5f803e3d5ffd5b50601d54600160a01b900460ff1615612be85760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610d85565b565b601b546201000090046001600160a01b03163314612c1a5760405162461bcd60e51b8152600401610d85906143ef565b8082612c286009600a6143a4565b612c3690633b9aca006143b2565b612c4091906143b2565b612c4a9190614465565b6019558284612c5b6009600a6143a4565b612c6990633b9aca006143b2565b612c7391906143b2565b612c7d9190614465565b6018556017546103e890612c99906001600160a01b03166113e3565b612ca49060966143b2565b612cae9190614465565b6019541115612d0b5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610d85565b620f4240612d1b6009600a6143a4565b612d2990633b9aca006143b2565b612d339190614465565b6019541015612d545760405162461bcd60e51b8152600401610d8590614638565b620f4240612d646009600a6143a4565b612d7290633b9aca006143b2565b612d7c9190614465565b6018541015612d9d5760405162461bcd60e51b8152600401610d8590614638565b601954601854111561125b5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610d85565b601b546201000090046001600160a01b03163314612e2b5760405162461bcd60e51b8152600401610d85906143ef565b6001600160a01b03919091165f908152600d60205260409020805460ff1916911515919091179055565b6001600160a01b038216612e7b5760405162461bcd60e51b8152600401610d8590614686565b6001600160a01b038316612ea15760405162461bcd60e51b8152600401610d8590614686565b816001600160a01b0316836001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ee691815260200190565b60405180910390a36001600160a01b039283165f9081526013602090815260408083209490951682529290925291902055565b5f6001600160a01b038316612f7c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d85565b5f8211612fdd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610d85565b6001600160a01b0384166130415760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d85565b6001600160a01b0384165f908152600a60205260408120548190819060ff161561306d57506001613118565b6001600160a01b0386165f908152600a602052604090205460ff1615613113576001600160a01b0387165f908152600f60205260409020546001935060ff1661310e5760125485111561310e5760405162461bcd60e51b815260206004820152602360248201527f5472616e73616374696f6e2045786365656473204d6178205472616e7361637460448201526234b7b760e91b6064820152608401610d85565b613118565b600191505b6001600160a01b0386165f908152600f602052604090205460ff166131ab576011546001600160a01b0387165f9081526009602052604090205461315d9087906143dc565b11156131ab5760405162461bcd60e51b815260206004820152601e60248201527f5472616e73616374696f6e2045786365656473204d61782057616c6c657400006044820152606401610d85565b6131b5878761360f565b156132b657601d54600160a81b900460ff166132b657816132135760405162461bcd60e51b815260206004820152601860248201527754726164696e67206e6f742079657420656e61626c65642160401b6044820152606401610d85565b6001600160a01b0387165f908152600d602052604090205460ff1615801561325357506001600160a01b0386165f908152600d602052604090205460ff16155b156132b65760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610d85565b8215613409576001600160a01b0387165f908152600e602052604090205460ff1661337757601a546001600160a01b0388165f908152601060205260409020544291613301916143dc565b1061335c5760405162461bcd60e51b815260206004820152602560248201527f596f75206e65656420746f2077616974206265666f72652073656c6c696e672060448201526430b3b0b4b760d91b6064820152608401610d85565b6001600160a01b0387165f9081526010602052604090204290555b601754600160a01b900460ff1661340957601754600160a81b900460ff1615613409575f6133a4306113e3565b905060185481106134075760195460145460ff16156133f1576015546017546103e891906133da906001600160a01b03166113e3565b6133e491906143b2565b6133ee9190614465565b90505b8082106133fc578091505b61340582613729565b505b505b613417878787848787613422565b979650505050505050565b6001600160a01b0386165f908152600e602052604081205460019060ff168061346257506001600160a01b0387165f908152600e602052604090205460ff165b1561346a57505f5b6001600160a01b0388165f90815260096020526040812080548892906134919084906143c9565b909155505f9050816134a357866134af565b6134af89888888613bf5565b6001600160a01b0389165f908152600960205260408120805492935083929091906134db9084906143dc565b92505081905550876001600160a01b0316896001600160a01b03165f805160206147258339815191528360405161351491815260200190565b60405180910390a3601d54600160a01b900460ff16613600576135378989613cbe565b601d54600160a01b900460ff161580156135565750613556898961360f565b801561357a57506001600160a01b0389165f908152600d602052604090205460ff16155b801561359e57506001600160a01b0388165f908152600d602052604090205460ff16155b80156135a8575083155b156136005760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610d85565b50600198975050505050505050565b601b545f906001600160a01b038481166201000090920416148015906136465750601b546201000090046001600160a01b03163214155b801561366a57506001600160a01b0382165f908152600c602052604090205460ff16155b801561368e57506001600160a01b0383165f908152600c602052604090205460ff16155b80156136a557506001600160a01b03821661dead14155b80156136b957506001600160a01b03821615155b80156136ce57506001600160a01b0383163014155b80156136e85750601d546001600160a01b03848116911614155b80156137025750601d546001600160a01b03838116911614155b80156137225750601b546001600160a01b03838116620100009092041614155b9392505050565b6017805460ff60a01b1916600160a01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061376f5761376f6144cc565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156137c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137ea9190614603565b816001815181106137fd576137fd6144cc565b6001600160a01b039092166020928302919091018201526040805160a081018252601f5461ffff8082168352620100008204811694830194909452600160201b8104841692820192909252600160301b820483166060820152600160401b909104909116608082018190525f03613875575050613be5565b305f9081526013602090815260408083206016546001600160a01b031684529091529020545f19146138ca57305f9081526013602090815260408083206016546001600160a01b0316845290915290205f1990555b60165460405163791ac94760e01b81526001600160a01b039091169063791ac947906139029086905f908790309042906004016146b3565b5f604051808303815f87803b158015613919575f80fd5b505af192505050801561392a575060015b613935575050613be5565b5f4790505f80836080015161ffff16846020015161ffff168461395891906143b2565b6139629190614465565b90505f846080015161ffff16856060015161ffff168561398291906143b2565b61398c9190614465565b90505f856080015161ffff16866040015161ffff16866139ac91906143b2565b6139b69190614465565b90505f826139c485846143dc565b6139ce91906143dc565b6139d890876143c9565b602088015190915061ffff1615613a43576001546040516001600160a01b039091169061d6d89086905f818181858888f193505050503d805f8114613a38576040519150601f19603f3d011682016040523d82523d5f602084013e613a3d565b606091505b50909550505b606087015161ffff1615613aab576002546040516001600160a01b039091169061d6d89085905f818181858888f193505050503d805f8114613aa0576040519150601f19603f3d011682016040523d82523d5f602084013e613aa5565b606091505b50909550505b865161ffff1615613b0f575f80546040516001600160a01b039091169161d6d8918491818181858888f193505050503d805f8114613b04576040519150601f19603f3d011682016040523d82523d5f602084013e613b09565b606091505b50909550505b604087015161ffff1615613bdc576003546040516001600160a01b039091169061d6d89084905f818181858888f193505050503d805f8114613b6c576040519150601f19603f3d011682016040523d82523d5f602084013e613b71565b606091505b5050601b54909550610100900460ff1615613bdc5760035460405163beceed3960e01b8152600481018490526001600160a01b039091169063beceed39906024015f604051808303815f87803b158015613bc9575f80fd5b505af1925050508015613bda575060015b505b50505050505050505b506017805460ff60a01b19169055565b5f808315613c0a5750601e5461ffff16613c33565b8215613c235750601e5462010000900461ffff16613c33565b50601e54600160201b900461ffff165b805f03613c435784915050610d0a565b5f6103e8613c5183886143b2565b613c5b9190614465565b90508015613cb457305f9081526009602052604081208054839290613c819084906143dc565b909155505060405181815230906001600160a01b038916905f805160206147258339815191529060200160405180910390a35b61341781876143c9565b601d54600160a01b900460ff1615613d245760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610d85565b613d2e828261360f565b158015613d4857506017546001600160a01b038281169116145b156115be576001600160a01b038083165f908152600e60209081526040808320805460ff199081166001908117909255601d805460ff60a01b1916600160a01b178155600c9094529190932080549091169092179091555416613db857601d80546001600160a01b031916301790555b604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a16017805460ff60a81b1916600160a81b1790555050565b6001600160a01b0391909116815260200190565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611084575f80fd5b5f8060408385031215613e71575f80fd5b8235613e7c81613e4c565b946020939093013593505050565b5f60208284031215613e9a575f80fd5b813561372281613e4c565b5f805f60608486031215613eb7575f80fd5b8335613ec281613e4c565b92506020840135613ed281613e4c565b929592945050506040919091013590565b803561ffff81168114613ef4575f80fd5b919050565b5f805f60608486031215613f0b575f80fd5b613f1484613ee3565b9250613f2260208501613ee3565b9150613f3060408501613ee3565b90509250925092565b5f60208284031215613f49575f80fd5b5035919050565b8015158114611084575f80fd5b5f8060408385031215613f6e575f80fd5b8235613f7981613e4c565b91506020830135613f8981613f50565b809150509250929050565b5f805f8060808587031215613fa7575f80fd5b8435613fb281613e4c565b93506020850135613fc281613e4c565b92506040850135613fd281613e4c565b91506060850135613fe281613e4c565b939692955090935050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561402957614029613fed565b604052919050565b5f6001600160401b0382111561404957614049613fed565b5060051b60200190565b5f82601f830112614062575f80fd5b8135602061407761407283614031565b614001565b8083825260208201915060208460051b870101935086841115614098575f80fd5b602086015b848110156140bd5780356140b081613e4c565b835291830191830161409d565b509695505050505050565b5f602082840312156140d8575f80fd5b81356001600160401b038111156140ed575f80fd5b610d0a84828501614053565b5f806040838503121561410a575f80fd5b50508035926020909101359150565b5f60208284031215614129575f80fd5b813561372281613f50565b5f805f8060808587031215614147575f80fd5b61415085613ee3565b935061415e60208601613ee3565b925061416c60408601613ee3565b915061417a60608601613ee3565b905092959194509250565b5f8060408385031215614196575f80fd5b8235613f7981613f50565b5f80604083850312156141b2575f80fd5b82356001600160401b03808211156141c8575f80fd5b6141d486838701614053565b93506020915081850135818111156141ea575f80fd5b85019050601f810186136141fc575f80fd5b803561420a61407282614031565b81815260059190911b82018301908381019088831115614228575f80fd5b928401925b828410156142465783358252928401929084019061422d565b80955050505050509250929050565b5f8060408385031215614266575f80fd5b823561427181613e4c565b91506020830135613f8981613e4c565b5f805f8060808587031215614294575f80fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156142fe57815f19048211156142e4576142e46142b0565b808516156142f157918102915b93841c93908002906142c9565b509250929050565b5f8261431457506001610c77565b8161432057505f610c77565b816001811461433657600281146143405761435c565b6001915050610c77565b60ff841115614351576143516142b0565b50506001821b610c77565b5060208310610133831016604e8410600b841016171561437f575081810a610c77565b61438983836142c4565b805f190482111561439c5761439c6142b0565b029392505050565b5f61372260ff841683614306565b8082028115828204841417610c7757610c776142b0565b81810381811115610c7757610c776142b0565b80820180821115610c7757610c776142b0565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b6020808252602b908201527f50726f746563747320636f6d6d756e69747920616761696e737420696e63726560408201526a6173696e6720746178657360a81b606082015260800190565b5f8261447f57634e487b7160e01b5f52601260045260245ffd5b500490565b5f8060408385031215614495575f80fd5b82516144a081613e4c565b6020840151909250613f8981613e4c565b6001600160a01b039290921682521515602082015260400190565b634e487b7160e01b5f52603260045260245ffd5b5f80604083850312156144f1575f80fd5b505080516020909101519092909150565b60208082526038908201527f43616c6c207265766f6b6541636365737320746f207472616e73666572206f776040820152773732b9103a37903a3432903d32b9379030b2323932b9b99760411b606082015260800190565b5f6020828403121561456a575f80fd5b5051919050565b5f60208284031215614581575f80fd5b815161372281613f50565b6020808252601b908201527a21b0b73737ba1032bc31b2b2b2102a37ba30b61039bab838363c9760291b604082015260600190565b61ffff8181168382160190808211156145dc576145dc6142b0565b5092915050565b5f61ffff8083168181036145f9576145f96142b0565b6001019392505050565b5f60208284031215614613575f80fd5b815161372281613e4c565b6001600160a01b0392831681529116602082015260400190565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b60208082526013908201527245524332303a205a65726f204164647265737360681b604082015260600190565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156147035784516001600160a01b0316835293830193918301916001016146de565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212204043f4038b83b0ea1aa2f34b45f4e5a68db83b545d75895fdc443694b7a262a564736f6c63430008190033

Verified Source Code Partial Match

Compiler: v0.8.25+commit.b61c2a91 EVM: cancun Optimization: Yes (50 runs)
Bndr.sol 802 lines
// SPDX-License-Identifier: MIT


pragma solidity >=0.6.0 <0.9.0;


interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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 IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}


interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}


interface IRouter01 {
    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 addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin,
        address[] calldata path,
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}


interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}


interface IInitializer {
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getConfig() external returns (address, address);
    function getInits(uint256 amount) external returns (uint256, uint256);
    function setLpPair(address pair, bool enabled) external;
}


interface IStaking {
    function addRewards(uint256 rewardAmount) external;
}


contract Bndr is IERC20 {
    struct Fees {
        uint16 buyFee;
        uint16 sellFee;
        uint16 transferFee;
    }


    struct Ratios {
        uint16 marketing;
        uint16 development;
        uint16 staking;
        uint16 team;
        uint16 totalSwap;
    }


    struct TaxWallets {
        address payable marketing;
        address payable development;
        address payable team;
        address payable staking;
    }


    struct TokenDistributionWallets {
        address team_advisors;
        address marketing;
        address dev_wallet;
        address private_sell;
        address liquidity_operations;
    }


    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0xB6BE6742242E401035be7032CF6C705415e08760),
        development: payable(0xBCF40d3b26c932aDE09A2c53D3ACcc3172A68666),
        team: payable(0xd0405F6d830feFc8E0223337c701418d91d41cDA),
        staking: payable(0xcf27f53f2279a2F92660F6729943FD04122aa003)
    });


    TokenDistributionWallets public tokenDistributionWallets = TokenDistributionWallets({
        team_advisors: 0x3838e628448f2Ab5ff424e8867B856455A092399,
        marketing: 0xE9A624575D3379fD841A17E1e7Aae6c8423FCcDa,
        dev_wallet: 0xB8749d4a399C875f2F17eB34053521137AfEBf84,
        private_sell: 0xE2ec39d3911740d8BbF540f04b8A34124342A4fA,
        liquidity_operations: 0xCdd889740122dDd4C319A5B97F642de0b8afF9A0
    });


    uint8 constant private _decimals = 9;
    string constant private _symbol = "$SWIPES";
    string constant private _name = "BNDR";
    uint256 constant private startingSupply = 1_000_000_000;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;


    mapping (address => uint256) private _tOwned;


    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;


    uint256 constant public maxSellTaxes = 1000;
    uint256 constant public maxTransferTaxes = 1000;
    uint256 constant masterTaxDivisor = 1000;
    uint256 constant public maxBuyTaxes = 1000;


    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromWallet;
    mapping(address => uint256) private _lastSwapTime;

    uint256 public max_wallet = _tTotal * 30 /1000;
    uint256 public max_transaction = _tTotal * 30 /1000;


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


    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;


    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;


    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    uint256 public sellCooldownTime = 299;


    bool public taxesAreLocked;
    bool public addRewardsEnabled;


    address private _owner;
    uint256 public launchStamp;
    IInitializer initializer;


    bool public _hasLiqBeenAdded = false;
    bool public tradingEnabled = false;


    bool public initialized;


    Fees public _taxRates = Fees({
        buyFee: 1000,
        sellFee: 1000,
        transferFee: 0
    });


    Ratios public _ratios = Ratios({
        marketing: 1,
        development: 1,
        staking: 1,
        team: 1,
        totalSwap: 4
    });


    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


    modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }


    modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; }


    constructor () {
        _owner = msg.sender;
    }


    function initialize(address[] memory _whlist) external onlyOwner {
        require(!initialized, "already initialized");
        initialized = true;
        _isExcludedFromFees[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // Unicrypt (ETH)
        _isExcludedFromFees[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // Unicrypt (ETH)
        _isExcludedFromFees[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock


        _isExcludedFromWallet[tokenDistributionWallets.marketing] = true;
        _isExcludedFromWallet[tokenDistributionWallets.liquidity_operations] = true;
        _isExcludedFromWallet[tokenDistributionWallets.team_advisors] = true;
        _isExcludedFromWallet[tokenDistributionWallets.private_sell] = true;
        _isExcludedFromWallet[tokenDistributionWallets.dev_wallet] = true;
       
        _tOwned[tokenDistributionWallets.marketing] = _tTotal * 100 / 1000;
        _tOwned[tokenDistributionWallets.liquidity_operations] = _tTotal * 650 / 1000;
        _tOwned[tokenDistributionWallets.team_advisors] = _tTotal * 100 / 1000;
        _tOwned[tokenDistributionWallets.private_sell] = _tTotal * 50 / 1000;
        _tOwned[tokenDistributionWallets.dev_wallet] = _tTotal * 100 / 1000;


        _liquidityHolders[_owner] = true;
        _isExcludedFromFees[DEAD] = true;
        _isExcludedFromFees[_owner] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromWallet[address(this)] = true;

        _isExcludedFromFees[tokenDistributionWallets.marketing] = true;
        _isExcludedFromFees[tokenDistributionWallets.liquidity_operations] = true;
        _isExcludedFromFees[tokenDistributionWallets.team_advisors] = true;
        _isExcludedFromFees[tokenDistributionWallets.private_sell] = true;
        _isExcludedFromFees[tokenDistributionWallets.dev_wallet] = true;
       
        for (uint i = 0; i < _whlist.length; i++) {
            _isExcludedFromFees[_whlist[i]] = true;
            _isExcludedFromWallet[_whlist[i]] = true;
        }


        emit Transfer(address(0), tokenDistributionWallets.liquidity_operations,  _tTotal * 650 / 1000);
        emit Transfer(address(0), tokenDistributionWallets.team_advisors, _tTotal * 100 / 1000);
        emit Transfer(address(0), tokenDistributionWallets.marketing,  _tTotal * 100 / 1000);
        emit Transfer(address(0), tokenDistributionWallets.private_sell,  _tTotal * 50 / 1000);
        emit Transfer(address(0), tokenDistributionWallets.dev_wallet,  _tTotal * 100 / 1000);
    }


    function applyTaxes(address from, uint256 amount, bool buy, bool sell) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        if (currentFee == 0) { return amount; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }
        return amount - feeAmount;
    }


    function settleUpdate(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }


        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? applyTaxes(from, amount, buy, sell) : amount;
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }
        return true;
    }


    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _isExcludedFromFees[from] = true;
            _hasLiqBeenAdded = true;
            _liquidityHolders[from] = true;
            if (address(initializer) == address(0)){
                initializer = IInitializer(address(this));
            }
            emit ContractSwapEnabledUpdated(true);
            contractSwapEnabled = true;
        }
    }


    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();


        Ratios memory ratios = _ratios;
        if (ratios.totalSwap == 0) {
            return;
        }


        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }


        try dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }


        uint256 amtBalance = address(this).balance;
        bool success;
        uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap;
        uint256 teamBalance = (amtBalance * ratios.team) / ratios.totalSwap;
        uint256 stakingBalance = (amtBalance * ratios.staking) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - (stakingBalance + developmentBalance + teamBalance);
        if (ratios.development > 0) {
            (success,) = _taxWallets.development.call{value: developmentBalance, gas: 55000}("");
        }
        if (ratios.team > 0) {
            (success,) = _taxWallets.team.call{value: teamBalance, gas: 55000}("");
        }
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 55000}("");
        }
        if (ratios.staking > 0) {
            (success,) = _taxWallets.staking.call{value: stakingBalance, gas: 55000}("");
            if (addRewardsEnabled) {
                try IStaking(_taxWallets.staking).addRewards(stakingBalance) {} catch {}
            }
        }
    }


    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(from != address(0), "ERC20: transfer from the zero address");


        bool sell = false;
        bool other = false;
        bool buy = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
            if(!_isExcludedFromWallet[from]){
                if (amount>max_transaction){
                    revert("Transaction Exceeds Max Transaction");}
                    }
        } else {
            other = true;
        }

        if (!_isExcludedFromWallet[to]){
            if (_tOwned[to]+amount>max_wallet){
                revert("Transaction Exceeds Max Wallet");
            }
        }


        if (_hasLimits(from, to)) {
            if(!tradingEnabled) {
                if (!other) {
                    revert("Trading not yet enabled!");
                } else if (!_isExcludedFromProtection[from] && !_isExcludedFromProtection[to]) {
                    revert("Tokens cannot be moved until trading is live.");
                }
            }
        }


        if (sell) {
            if (!_isExcludedFromFees[from]){
                require(_lastSwapTime[from]+sellCooldownTime < block.timestamp, "You need to wait before selling again");
                _lastSwapTime[from]=block.timestamp;
            }
            if (!inSwap) {
                if (contractSwapEnabled) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        uint256 swapAmt = swapAmount;
                        if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; }
                        if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
                        contractSwap(contractTokenBalance);
                    }
                }
            }
        }
        return settleUpdate(from, to, amount, buy, sell, other);
    }


    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != _owner
            && tx.origin != _owner
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this)
            && from != address(initializer)
            && to != address(initializer)
            && to != _owner;
    }


    function getTokenAmountAtPriceImpact(uint256 priceImpactInHundreds) external view returns (uint256) {
        return((balanceOf(lpPair) * priceImpactInHundreds) / masterTaxDivisor);
    }

    
    function getCirculatingSupply() public view returns (uint256) {
        return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0))));
    }


    function isExcludedFromProtection(address account) external view returns (bool) {
        return _isExcludedFromProtection[account];
    }


    function isExcludedFromFees(address account) external view returns(bool) {
        return _isExcludedFromFees[account];
    }
   
    function isExcludedFromWallet(address account) external view returns(bool) {
        return _isExcludedFromWallet[account];
    }
    function CoolDownTime() external view returns(uint256)  {
        return sellCooldownTime;
    }
    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }


        return _transfer(sender, recipient, amount);
    }
    function MaxWalletTokens() external view returns(uint256)  {
        return max_wallet;
    }
    function MaxTransactionTokens() external view returns(uint256)  {
        return max_transaction;
    }
    function _approve(address sender, address spender, uint256 amount) internal {
        require(spender != address(0), "ERC20: Zero Address");
        require(sender != address(0), "ERC20: Zero Address");


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


    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }


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


    /** OWNER FUNCTIONS */


    function startStaking(bool _enable) external onlyOwner {
        addRewardsEnabled = _enable;
    }

    function resetWallets(address[] memory _whlist) external onlyOwner {
        for (uint i = 0; i < _whlist.length; i++) {
            _isExcludedFromFees[_whlist[i]] = false;
            _isExcludedFromWallet[_whlist[i]] = false;
        }
    }
    
    function distributeCoins(address[] memory accounts, uint256[] memory amounts) external onlyOwner {
        for (uint16 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]*10**_decimals, "Not enough tokens.");
            settleUpdate(msg.sender, accounts[i], amounts[i]*10**_decimals, false, false, true);
        }
        require(accounts.length == amounts.length, "Lengths do not match.");
    }


    function sweepExternalTokens(address token) external onlyOwner {
        IERC20 TOKEN = IERC20(token);
        TOKEN.transfer(_owner, TOKEN.balanceOf(address(this)));
    }


    function sweepContingency() external onlyOwner {
        payable(_owner).transfer(address(this).balance);
        require(!_hasLiqBeenAdded, "Cannot call after liquidity.");
    }


    function enableTrading() public onlyOwner {
        if (address(initializer) == address(0)){
            initializer = IInitializer(address(this));
        }
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        require(!tradingEnabled, "Trading already enabled!");
        try initializer.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        try initializer.getInits(balanceOf(lpPair)) returns (uint256 initThreshold, uint256 initSwapAmount) {
            swapAmount = initSwapAmount;
            swapThreshold = initThreshold;
        } catch {}
        launchStamp = block.timestamp;
        tradingEnabled = true;
    }


    function setContractSwapEnabled(bool swapEnabled, bool priceImpactSwapEnabled) external onlyOwner {
        emit ContractSwapEnabledUpdated(swapEnabled);
        piContractSwapsEnabled = priceImpactSwapEnabled;
        contractSwapEnabled = swapEnabled;
    }


    function setPriceImpactSwapAmount(uint256 priceImpactSwapPercent) external onlyOwner {
        piSwapPercent = priceImpactSwapPercent;
        require(priceImpactSwapPercent <= 150, "Cannot set above 1.5%.");
    }


    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        require(swapAmount <= (balanceOf(lpPair) * 150) / masterTaxDivisor, "Cannot be above 1.5% of current PI.");
        require(swapAmount >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
        require(swapThreshold >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
        require(swapThreshold <= swapAmount, "Threshold cannot be above amount.");
    }


    function setRecipients(address payable marketing, address payable staking, address payable development, address payable team) external onlyOwner {
        _taxWallets.development = payable(development);
        _taxWallets.staking = payable(staking);
        _taxWallets.team = payable(team);
        _taxWallets.marketing = payable(marketing);
        require(marketing != address(0) && staking != address(0) && development != address(0) && team != address(0), "Cannot be zero address.");
    }


    function setAllocations(uint16 marketing, uint16 development, uint16 team, uint16 staking) external onlyOwner {
        uint256 total = _taxRates.buyFee + _taxRates.sellFee;


        _ratios.development = development;
        _ratios.team = team;
        _ratios.staking = staking;
        _ratios.marketing = marketing;
        _ratios.totalSwap = marketing + staking + development + team;


        require(_ratios.totalSwap <= total, "Cannot exceed sum of buy and sell fees.");
    }
   
    function setMaxWallet(uint256 maxWallet, uint256 maxTransaction) external onlyOwner {
        max_wallet = _tTotal * maxWallet / 1000;
        max_transaction = _tTotal * maxTransaction / 1000;
        require(max_wallet <= _tTotal, "Cannot exceed Total supply.");
        require(max_transaction <= _tTotal, "Cannot exceed Total supply.");
    }


    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(!taxesAreLocked, "Taxes are locked.");
        require(_taxRates.sellFee>sellFee,"Protects community against increasing taxes");
        require(_taxRates.buyFee>buyFee, "Protects community against increasing taxes");


        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
        _taxRates.buyFee = buyFee;


        if (block.timestamp >= launchStamp + 3 days && launchStamp != 0) {
            require(buyFee <= maxBuyTaxes
                    && sellFee <= maxSellTaxes
                    && transferFee <= maxTransferTaxes,
                    "Cannot exceed maximums.");
        }


    }


    function freezeTaxes() external onlyOwner {
        // This will lock taxes at their current value forever, do not call this unless you're sure.
        taxesAreLocked = true;
    }


    function setExcludedFromProtection(address account, bool enabled) external onlyOwner {
        _isExcludedFromProtection[account] = enabled;
    }


    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }
   
    function setSellCooldownTime(uint256 selltime) public onlyOwner {
        sellCooldownTime = selltime;
    }


    function setExcludedFromWallet(address account, bool enabled) public onlyOwner {
        _isExcludedFromWallet[account] = enabled;
    }


    function setInitializer(address init) public onlyOwner {
        require(init != address(this), "Can't be self.");
        require(!tradingEnabled);
        initializer = IInitializer(init);
        try initializer.getConfig() returns (address router, address constructorLP) {
            dexRouter = IRouter02(router); lpPair = constructorLP; lpPairs[lpPair] = true;
            _approve(address(this), address(dexRouter), type(uint256).max);
            _approve(_owner, address(dexRouter), type(uint256).max);
        } catch { revert(); }
    }


    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (!enabled) {
            lpPairs[pair] = false;
            initializer.setLpPair(pair, false);
        } else {
            require(!lpPairs[pair], "Pair already added to list.");
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.");
            }
            timeSinceLastPair = block.timestamp;
            lpPairs[pair] = true;
            initializer.setLpPair(pair, true);
        }
    }


    function setNewRouter(address newRouter) external onlyOwner {
        IRouter02 _newRouter = IRouter02(newRouter);
        require(!_hasLiqBeenAdded, "Cannot change after liquidity.");


        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        lpPairs[lpPair] = false;
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }


        _isExcludedFromWallet[lpPair]=true;
        _isExcludedFromWallet[newRouter]=true;


        lpPairs[lpPair] = true;
        dexRouter = _newRouter;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }


    function approveContractContingency() external onlyOwner returns (bool) {
        _approve(address(this), address(dexRouter), type(uint256).max);
        return true;
    }


    function revokeAccess() external onlyOwner {
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);


        emit OwnershipTransferred(oldOwner, address(0));
        require(tradingEnabled, "Cannot renounce until trading has been enabled.");
    }


    function changeAdmin(address newOwner) external onlyOwner {
        require(newOwner != DEAD, "Call revokeAccess to transfer owner to the zero address.");
        require(newOwner != address(0), "Call revokeAccess to transfer owner to the zero address.");
        setExcludedFromFees(newOwner, true);
        setExcludedFromFees(_owner, false);
       
        if (balanceOf(_owner) > 0) {
            settleUpdate(_owner, newOwner, balanceOf(_owner), false, false, true);
        }
       
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
       
    }


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

Read Contract

CoolDownTime 0x4c23bdbd → uint256
DEAD 0x03fd2a45 → address
MaxTransactionTokens 0x7f4cdb1f → uint256
MaxWalletTokens 0x6920b492 → uint256
_hasLiqBeenAdded 0x50a8e016 → bool
_ratios 0xcf847706 → uint16, uint16, uint16, uint16, uint16
_taxRates 0x069d955f → uint16, uint16, uint16
_taxWallets 0xf94aa1b4 → address, address, address, address
addRewardsEnabled 0x35b90399 → bool
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
contractSwapEnabled 0xfdb78c0e → bool
decimals 0x313ce567 → uint8
dexRouter 0x0758d924 → address
getCirculatingSupply 0x2b112e49 → uint256
getOwner 0x893d20e8 → address
getTokenAmountAtPriceImpact 0x4bbb93eb → uint256
initialized 0x158ef93e → bool
isExcludedFromFees 0x4fbee193 → bool
isExcludedFromProtection 0x0dcbcf1c → bool
isExcludedFromWallet 0xb9e0ddfa → bool
launchStamp 0x5a6f0918 → uint256
lpPair 0x452ed4f1 → address
maxBuyTaxes 0x2b28fc7a → uint256
maxSellTaxes 0xb3d514fb → uint256
maxTransferTaxes 0xb1b08f71 → uint256
max_transaction 0x6a50c66d → uint256
max_wallet 0xe717fc30 → uint256
name 0x06fdde03 → string
piContractSwapsEnabled 0xb7df8b36 → bool
piSwapPercent 0x28577751 → uint256
sellCooldownTime 0xd3459d0b → uint256
swapAmount 0x2e8fa821 → uint256
swapThreshold 0x0445b667 → uint256
symbol 0x95d89b41 → string
taxesAreLocked 0x07dd79e0 → bool
tokenDistributionWallets 0xa1e900e0 → address, address, address, address, address
totalSupply 0x18160ddd → uint256
tradingEnabled 0x4ada218b → bool

Write Contract 28 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
approveContractContingency 0x8a63bd9b
No parameters
returns: bool
changeAdmin 0x8f283970
address newOwner
distributeCoins 0xc3e981db
address[] accounts
uint256[] amounts
enableTrading 0x8a8c523c
No parameters
freezeTaxes 0x4d9f486e
No parameters
initialize 0xa224cee7
address[] _whlist
resetWallets 0x86240a23
address[] _whlist
revokeAccess 0x4e4c7d9b
No parameters
setAllocations 0xb3295635
uint16 marketing
uint16 development
uint16 team
uint16 staking
setContractSwapEnabled 0xbfc2fc35
bool swapEnabled
bool priceImpactSwapEnabled
setExcludedFromFees 0x590ffdce
address account
bool enabled
setExcludedFromProtection 0xfeadde9c
address account
bool enabled
setExcludedFromWallet 0xace96c32
address account
bool enabled
setInitializer 0x5c24b074
address init
setLpPair 0x80c581d1
address pair
bool enabled
setMaxWallet 0xabe57e70
uint256 maxWallet
uint256 maxTransaction
setNewRouter 0xeafb5a3c
address newRouter
setPriceImpactSwapAmount 0x4e718e48
uint256 priceImpactSwapPercent
setRecipients 0x596cd99b
address marketing
address staking
address development
address team
setSellCooldownTime 0xbd7c0047
uint256 selltime
setSwapSettings 0xfb78680d
uint256 thresholdPercent
uint256 thresholdDivisor
uint256 amountPercent
uint256 amountDivisor
setTaxes 0x32cde664
uint16 buyFee
uint16 sellFee
uint16 transferFee
startStaking 0xb10e6c94
bool _enable
sweepContingency 0xee5d9c2d
No parameters
sweepExternalTokens 0xab558e4d
address token
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool

Recent Transactions

No transactions found for this address