ETH Price: $2,517.96 (+1.61%)

Token

TRICK OR TREAT (CANDY)
 

Overview

Max Total Supply

100,000,000 CANDY

Holders

23

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
422,525.700107667208470409 CANDY

Value
$0.00
0x3EA855779010d85E3d21C2eAC35Be056E174519c
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
CandyToken

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
File 1 of 2 : Candy.sol
/**
    Website:  https://www.candytoken.app/
    Twitter:  https://twitter.com/candyerc20
    Telegram: https://t.me/candyerc20
    Docs:     https://docs.candytoken.app
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.18;

import "../IERC20.sol";

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

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

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

    function functionCall(
        address target,
        bytes memory data
    ) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: weiValue}(
            data
        );
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;

    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 waiveOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);

    function allPairs(uint) external view returns (address pair);

    function allPairsLength() external view returns (uint);

    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint);

    function balanceOf(address owner) external view returns (uint);

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

    function approve(address spender, uint value) external returns (bool);

    function transfer(address to, uint value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint);

    function permit(
        address owner,
        address spender,
        uint value,
        uint deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Burn(
        address indexed sender,
        uint amount0,
        uint amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint);

    function price1CumulativeLast() external view returns (uint);

    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);

    function swap(
        uint amount0Out,
        uint amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountToken, uint amountETH);

    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactETHForTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

    function swapTokensForExactETH(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactTokensForETH(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapETHForExactTokens(
        uint amountOut,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

    function quote(
        uint amountA,
        uint reserveA,
        uint reserveB
    ) external pure returns (uint amountB);

    function getAmountOut(
        uint amountIn,
        uint reserveIn,
        uint reserveOut
    ) external pure returns (uint amountOut);

    function getAmountIn(
        uint amountOut,
        uint reserveIn,
        uint reserveOut
    ) external pure returns (uint amountIn);

    function getAmountsOut(
        uint amountIn,
        address[] calldata path
    ) external view returns (uint[] memory amounts);

    function getAmountsIn(
        uint amountOut,
        address[] calldata path
    ) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountETH);

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

interface IStaking {
    function deposit(address _address, uint amount) external;
}

contract CandyToken is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    // Stake
    IStaking public stake;

    // Burn Stats

    uint256 public totalBurned = 0;
    uint256 public totalBurnRewards = 0;

    uint256 public burnCapDivisor = 10; // Divisor for burn reward cap per tx
    uint256 public burnSub1EthCap = 100000000000000000; // cap in gwei if rewards < 1 Eth

    string private _name = "TRICK OR TREAT";
    string private _symbol = "CANDY";
    uint8 private _decimals = 18;
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    // Supply / Max Tx tokenomics

    uint256 private _totalSupply = 100 * 10 ** 6 * 10 ** 18;
    uint256 public _maxTxAmount = 2 * 10 ** 6 * 10 ** 18;
    uint256 public _walletMax = 2 * 10 ** 6 * 10 ** 18;
    uint256 private minimumTokensBeforeSwap = 30 ** 5 * 10 ** 18;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;

    address payable private devMarketingWallet;

    uint256 public _buyJackpotFees = 10;
    uint256 public _buyDevFees = 5;
    uint256 public _buyBurnFees = 10;

    uint256 public _sellJackpotFees = 10;
    uint256 public _sellDevFees = 5;
    uint256 public _sellBurnFees = 10;

    uint256 public _jackpotShares = 2;
    uint256 public _devShares = 1;
    uint256 public _burnShares = 2;
    uint256 public _totalDistributionShares = 5;

    uint256 public _totalTaxIfBuying = 25;
    uint256 public _totalTaxIfSelling = 25;
    uint public buyCount = 0;

    // Fees / MaxWallet / TxLimit exemption mappings

    mapping(address => bool) public checkExcludedFromFees;
    mapping(address => bool) public checkWalletLimitExcept;
    mapping(address => bool) public checkTxLimitExcept;
    mapping(address => bool) public checkMarketPair;

    // Swap and liquify flags (for taxes)

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = true;
    bool public enableTrading;

    // events & modifiers

    event BurnedTokensForEth(
        address account,
        uint256 burnAmount,
        uint256 ethRecievedAmount
    );

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

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

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

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

    constructor(address _stakingAddress) {
        devMarketingWallet = payable(msg.sender);
        stake = IStaking(_stakingAddress);

        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        uniswapPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
        _approve(address(this), address(uniswapV2Router), _totalSupply);

        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        checkExcludedFromFees[owner()] = true;
        checkExcludedFromFees[address(this)] = true;
        checkExcludedFromFees[_stakingAddress] = true;

        _totalTaxIfBuying = _buyJackpotFees.add(_buyDevFees).add(_buyBurnFees);
        _totalTaxIfSelling = _sellJackpotFees.add(_sellDevFees).add(
            _sellBurnFees
        );
        _totalDistributionShares = _jackpotShares.add(_devShares).add(
            _burnShares
        );

        checkWalletLimitExcept[owner()] = true;
        checkWalletLimitExcept[address(uniswapPair)] = true;
        checkWalletLimitExcept[address(this)] = true;
        checkWalletLimitExcept[address(stake)] = true;

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

        checkMarketPair[address(uniswapPair)] = true;

        _balances[_msgSender()] = _totalSupply;

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

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

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

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

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

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

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

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

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function addMarketPair(address account) public onlyOwner {
        checkMarketPair[account] = true;
    }

    function setcheckTxLimitExcept(
        address holder,
        bool exempt
    ) external onlyOwner {
        checkTxLimitExcept[holder] = exempt;
    }

    function setcheckExcludedFromFees(
        address account,
        bool newValue
    ) public onlyOwner {
        checkExcludedFromFees[account] = newValue;
    }

    function setDistributionSettings(
        uint256 newLiquidityShare,
        uint256 newDevShare,
        uint256 newBurnShare
    ) external onlyOwner {
        _jackpotShares = newLiquidityShare;
        _devShares = newDevShare;
        _burnShares = newBurnShare;

        _totalDistributionShares = _jackpotShares.add(_devShares).add(
            _burnShares
        );
    }

    function adjustMaxTxAmount(uint256 maxTxAmount) external onlyOwner {
        require(
            maxTxAmount <= (100 * 10 ** 6 * 10 ** 18),
            "Max wallet should be less"
        );
        _maxTxAmount = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
        checkWalletLimit = newValue;
    }

    function setcheckWalletLimitExcept(
        address holder,
        bool exempt
    ) external onlyOwner {
        checkWalletLimitExcept[holder] = exempt;
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }

    function openTrading() external onlyOwner {
        require(!enableTrading, "trading opened");
        addLiquidity(balanceOf(address(this)), address(this).balance);
        enableTrading = true;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return
            _totalSupply.sub(
                balanceOf(0x000000000000000000000000000000000000dEaD)
            );
    }

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

    // msg.sender burns tokens and recieve uniswap rate TAX FREE, instead of selling.
    function burnForEth(uint256 amount) public returns (bool) {
        require(balanceOf(_msgSender()) >= amount, "not enough funds to burn");

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        uint[] memory a = uniswapV2Router.getAmountsOut(amount, path);

        uint256 cap;
        if (address(this).balance <= 1 ether) {
            cap = burnSub1EthCap;
        } else {
            cap = address(this).balance / burnCapDivisor;
        }

        require(a[a.length - 1] <= cap, "amount greater than cap");
        require(
            address(this).balance >= a[a.length - 1],
            "not enough funds in contract"
        );

        transferToAddressETH(_msgSender(), a[a.length - 1]);
        _burn(_msgSender(), amount);

        totalBurnRewards += a[a.length - 1];
        totalBurned += amount;

        emit BurnedTokensForEth(_msgSender(), amount, a[a.length - 1]);
        return true;
    }

    function transfer(
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(_msgSender(), recipient, 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 _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if ((recipient == address(this)) && (enableTrading)) {
            recipient = address(stake);
            stake.deposit(sender, amount);
        }

        if (inSwapAndLiquify) {
            _basicTransfer(sender, recipient, amount);
        } else {
            if (!checkTxLimitExcept[sender] && !checkTxLimitExcept[recipient]) {
                require(
                    amount <= _maxTxAmount,
                    "Transfer amount exceeds the maxTxAmount."
                );
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >=
                minimumTokensBeforeSwap;

            if (
                overMinimumTokenBalance &&
                !inSwapAndLiquify &&
                !checkMarketPair[sender] &&
                swapAndLiquifyEnabled
            ) {
                if (swapAndLiquifyByLimitOnly && enableTrading)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(
                    amount < contractTokenBalance
                        ? amount
                        : contractTokenBalance
                );
            }

            _balances[sender] = _balances[sender].sub(
                amount,
                "Insufficient Balance"
            );

            uint256 finalAmount = (checkExcludedFromFees[sender] ||
                checkExcludedFromFees[recipient])
                ? amount
                : takeFee(sender, recipient, amount);
            if (!enableTrading)
                finalAmount = takeFee(sender, recipient, amount);

            if (checkWalletLimit && !checkWalletLimitExcept[recipient])
                require(balanceOf(recipient).add(finalAmount) <= _walletMax);

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
        }
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
        if (!enableTrading) return;

        uint256 ethBalanceBeforeSwap = address(this).balance;

        swapTokensForEth(tAmount);
        uint256 amountReceived = address(this).balance.sub(
            ethBalanceBeforeSwap
        );

        uint256 amountETHJackpot = amountReceived.mul(_jackpotShares).div(
            _totalDistributionShares
        );
        uint256 amountETHDev = amountReceived.mul(_devShares).div(
            _totalDistributionShares
        );

        if (amountETHJackpot > 0)
            transferToAddressETH(payable(address(stake)), amountETHJackpot);

        if (amountETHDev > 0)
            transferToAddressETH(devMarketingWallet, amountETHDev);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );

        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeAmount = 0;

        if (checkMarketPair[sender]) {
            feeAmount = amount.mul(buyCount > 20 ? 5 : _totalTaxIfBuying).div(
                100
            );
            buyCount = buyCount.add(1);
        } else if (checkMarketPair[recipient]) {
            feeAmount = amount.mul(buyCount > 20 ? 5 : _totalTaxIfSelling).div(
                100
            );
        }

        if (feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    function setPair(address _address) external onlyOwner {
        uniswapPair = _address;
    }

    function getStats() public view returns (uint256, uint256, uint256) {
        return (totalBurned, totalBurnRewards, address(this).balance);
    }

    function recoverETH() external onlyOwner {
        owner().call{value: address(this).balance}("");
    }

    receive() external payable {}
}

File 2 of 2 : IERC20.sol
pragma solidity ^0.8.19;

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

Settings
{
  "remappings": [
    "@openzeppelin/=lib/openzeppelin-contracts/",
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "lib/forge-std:ds-test/=lib/forge-std/lib/ds-test/src/",
    "lib/openzeppelin-contracts:@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "lib/openzeppelin-contracts:ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/",
    "lib/openzeppelin-contracts:erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
    "lib/openzeppelin-contracts:forge-std/=lib/openzeppelin-contracts/lib/forge-std/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "paris",
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_stakingAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethRecievedAmount","type":"uint256"}],"name":"BurnedTokensForEth","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_burnShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyBurnFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDevFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyJackpotFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_jackpotShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellBurnFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDevFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellJackpotFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"adjustMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnCapDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnForEth","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnSub1EthCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkTxLimitExcept","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkWalletLimitExcept","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStats","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newDevShare","type":"uint256"},{"internalType":"uint256","name":"newBurnShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setcheckExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setcheckTxLimitExcept","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setcheckWalletLimitExcept","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stake","outputs":[{"internalType":"contract IStaking","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurnRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60006003819055600455600a60055567016345785d8a000060065560c0604052600e60809081526d15149250d2c813d488151491505560921b60a0526007906200004a908262000806565b5060408051808201909152600581526443414e445960d81b602082015260089062000076908262000806565b506009805460ff191660121790556a52b7d2dcc80cd2e4000000600c556a01a784379d99db42000000600d819055600e556a1419b9a3bada27fb800000600f55600a601381905560056014819055601582905560168290556017819055601891909155600260198181556001601a55601b91909155601c91909155601d819055601e556000601f5560248054630100010063ffffff00199091161790553480156200012057600080fd5b50604051620032e2380380620032e28339810160408190526200014391620008d2565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060128054336001600160a01b0319918216179091556002805482166001600160a01b03841617905560108054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000207573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022d9190620008d2565b6001600160a01b031663c9c6539630601060009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000290573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b69190620008d2565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000304573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032a9190620008d2565b601180546001600160a01b0319166001600160a01b03928316179055601054600c546200035b9230921690620005c9565b600c54306000908152600b602090815260408083206010546001600160a01b031684528252822092909255600191906200039d6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081529280528183208054851660019081179091559085168352912080549092161790556015546014546013546200041192916200040a9190620006f5565b90620006f5565b601d556018546017546016546200042f92916200040a9190620006f5565b601e55601b54601a546019546200044d92916200040a9190620006f5565b601c55600160216000620004696000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556011548216815260219093528183208054851660019081179091553084528284208054861682179055600254909116835290822080549093168117909255602290620004eb6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526022845282812080548616600190811790915560115490921681526023909352908220805490931617909155600c5490600a90620005573390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c54604051620005ba91815260200190565b60405180910390a3506200091f565b6001600160a01b038316620006315760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620006945760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000628565b6001600160a01b038381166000818152600b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080620007048385620008fd565b905083811015620007585760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000628565b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200078c57607f821691505b602082108103620007ad57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200080157600081815260208120601f850160051c81016020861015620007dc5750805b601f850160051c820191505b81811015620007fd57828155600101620007e8565b5050505b505050565b81516001600160401b0381111562000822576200082262000761565b6200083a8162000833845462000777565b84620007b3565b602080601f831160018114620008725760008415620008595750858301515b600019600386901b1c1916600185901b178555620007fd565b600085815260208120601f198616915b82811015620008a35788860151825594840194600190910190840162000882565b5085821015620008c25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620008e557600080fd5b81516001600160a01b03811681146200075857600080fd5b808201808211156200075b57634e487b7160e01b600052601160045260246000fd5b6129b3806200092f6000396000f3fe6080604052600436106103905760003560e01c806382eefb43116101dc578063c59d484711610102578063dd62ed3e116100a0578063f872858a1161006f578063f872858a14610a4a578063fabf706314610a6b578063fb34a33614610a9a578063fe47e0c914610ab057600080fd5b8063dd62ed3e146109ae578063e207a92b146109f4578063f0cd1dac14610a14578063f2fde38b14610a2a57600080fd5b8063c9567bf9116100dc578063c9567bf91461094d578063ca70307514610962578063d89135cd14610978578063da00097d1461098e57600080fd5b8063c59d4847146108ce578063c78a789b146108fd578063c816841b1461092d57600080fd5b8063a08e671f1161017a578063a9059cbb11610149578063a9059cbb1461084e578063af254b721461086e578063c2d4640e1461088e578063c49b9a80146108ae57600080fd5b8063a08e671f146107e2578063a40dcda3146107f8578063a457c2d71461080e578063a5d69d1f1461082e57600080fd5b80638e223341116101b65780638e223341146107825780638f03aad514610798578063914eb66a146107b857806395d89b41146107cd57600080fd5b806382eefb431461072d5780638a8c523c146107435780638da5cb5b1461076457600080fd5b80633d98b9af116102c157806357e6adcb1161025f5780637b3a3ec61161022e5780637b3a3ec6146106cb5780637d1db4a5146106e1578063807c2d9c146106f75780638187f5161461070d57600080fd5b806357e6adcb1461063f5780635e2524551461065f578063667b511c1461067557806370a082311461069557600080fd5b80634a74bb021161029b5780634a74bb02146105aa5780634f1c2aa4146105c9578063526012e8146105df57806355324fa91461060f57600080fd5b80633d98b9af146105685780633f2516881461057e5780634a728e241461059457600080fd5b80632b112e491161032e57806331eca57e1161030857806331eca57e146104fc57806332cd6bcb1461051257806339509351146105285780633a4b66f11461054857600080fd5b80632b112e49146104a55780632cdae5cb146104ba578063313ce567146104da57600080fd5b80631694505e1161036a5780631694505e1461040e57806318160ddd1461044657806323b872dd146104655780632563ae831461048557600080fd5b80630614117a1461039c57806306fdde03146103b3578063095ea7b3146103de57600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b1610ac6565b005b3480156103bf57600080fd5b506103c8610b59565b6040516103d59190612483565b60405180910390f35b3480156103ea57600080fd5b506103fe6103f93660046124e9565b610beb565b60405190151581526020016103d5565b34801561041a57600080fd5b5060105461042e906001600160a01b031681565b6040516001600160a01b0390911681526020016103d5565b34801561045257600080fd5b50600c545b6040519081526020016103d5565b34801561047157600080fd5b506103fe610480366004612515565b610c02565b34801561049157600080fd5b506103b16104a036600461256b565b610c6b565b3480156104b157600080fd5b50610457610cb3565b3480156104c657600080fd5b506103b16104d5366004612586565b610cf3565b3480156104e657600080fd5b5060095460405160ff90911681526020016103d5565b34801561050857600080fd5b5061045760065481565b34801561051e57600080fd5b5061045760135481565b34801561053457600080fd5b506103fe6105433660046124e9565b610d47565b34801561055457600080fd5b5060025461042e906001600160a01b031681565b34801561057457600080fd5b5061045760185481565b34801561058a57600080fd5b50610457601a5481565b3480156105a057600080fd5b5061045760145481565b3480156105b657600080fd5b506024546103fe90610100900460ff1681565b3480156105d557600080fd5b50610457601b5481565b3480156105eb57600080fd5b506103fe6105fa3660046125bb565b60216020526000908152604090205460ff1681565b34801561061b57600080fd5b506103fe61062a3660046125bb565b60236020526000908152604090205460ff1681565b34801561064b57600080fd5b506103b161065a366004612586565b610d7d565b34801561066b57600080fd5b5061045760155481565b34801561068157600080fd5b506103b1610690366004612586565b610dd2565b3480156106a157600080fd5b506104576106b03660046125bb565b6001600160a01b03166000908152600a602052604090205490565b3480156106d757600080fd5b5061045760055481565b3480156106ed57600080fd5b50610457600d5481565b34801561070357600080fd5b50610457600e5481565b34801561071957600080fd5b506103b16107283660046125bb565b610e27565b34801561073957600080fd5b50610457601e5481565b34801561074f57600080fd5b506024546103fe90600160201b900460ff1681565b34801561077057600080fd5b506000546001600160a01b031661042e565b34801561078e57600080fd5b5061045760195481565b3480156107a457600080fd5b506103b16107b33660046125d8565b610e73565b3480156107c457600080fd5b506103b1610efd565b3480156107d957600080fd5b506103c8610f71565b3480156107ee57600080fd5b50610457601c5481565b34801561080457600080fd5b5061045760175481565b34801561081a57600080fd5b506103fe6108293660046124e9565b610f80565b34801561083a57600080fd5b506103b161084936600461256b565b610fcf565b34801561085a57600080fd5b506103fe6108693660046124e9565b611015565b34801561087a57600080fd5b506103fe6108893660046125d8565b611022565b34801561089a57600080fd5b506103b16108a93660046125f1565b6113f2565b3480156108ba57600080fd5b506103b16108c936600461256b565b611447565b3480156108da57600080fd5b5060035460045447604080519384526020840192909252908201526060016103d5565b34801561090957600080fd5b506103fe6109183660046125bb565b60226020526000908152604090205460ff1681565b34801561093957600080fd5b5060115461042e906001600160a01b031681565b34801561095957600080fd5b506103b16114c5565b34801561096e57600080fd5b50610457601f5481565b34801561098457600080fd5b5061045760035481565b34801561099a57600080fd5b506024546103fe9062010000900460ff1681565b3480156109ba57600080fd5b506104576109c936600461261d565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b348015610a0057600080fd5b506103b1610a0f3660046125bb565b61156a565b348015610a2057600080fd5b50610457601d5481565b348015610a3657600080fd5b506103b1610a453660046125bb565b6115b8565b348015610a5657600080fd5b506024546103fe906301000000900460ff1681565b348015610a7757600080fd5b506103fe610a863660046125bb565b602080526000908152604090205460ff1681565b348015610aa657600080fd5b5061045760045481565b348015610abc57600080fd5b5061045760165481565b6000546001600160a01b03163314610af95760405162461bcd60e51b8152600401610af090612656565b60405180910390fd5b6000546001600160a01b03166001600160a01b03164760405160006040518083038185875af1925050503d8060008114610b4f576040519150601f19603f3d011682016040523d82523d6000602084013e505050565b606091505b505050565b606060078054610b689061268b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b949061268b565b8015610be15780601f10610bb657610100808354040283529160200191610be1565b820191906000526020600020905b815481529060010190602001808311610bc457829003601f168201915b5050505050905090565b6000610bf83384846116a2565b5060015b92915050565b6000610c0f8484846117c7565b610c618433610c5c85604051806060016040528060288152602001612911602891396001600160a01b038a166000908152600b602090815260408083203384529091529020549190611c3a565b6116a2565b5060019392505050565b6000546001600160a01b03163314610c955760405162461bcd60e51b8152600401610af090612656565b6024805491151563010000000263ff00000019909216919091179055565b61dead6000908152600a6020527f20677881080440a9b3c87e826370bb5d9c2f74efd4dede686d52d77a6a09f8bb54600c54610cee91611c74565b905090565b6000546001600160a01b03163314610d1d5760405162461bcd60e51b8152600401610af090612656565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b336000818152600b602090815260408083206001600160a01b03871684529091528120549091610bf8918590610c5c9086611cbd565b6000546001600160a01b03163314610da75760405162461bcd60e51b8152600401610af090612656565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610dfc5760405162461bcd60e51b8152600401610af090612656565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e515760405162461bcd60e51b8152600401610af090612656565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e9d5760405162461bcd60e51b8152600401610af090612656565b6a52b7d2dcc80cd2e4000000811115610ef85760405162461bcd60e51b815260206004820152601960248201527f4d61782077616c6c65742073686f756c64206265206c657373000000000000006044820152606401610af0565b600d55565b6000546001600160a01b03163314610f275760405162461bcd60e51b8152600401610af090612656565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060088054610b689061268b565b6000610bf83384610c5c8560405180606001604052806025815260200161295960259139336000908152600b602090815260408083206001600160a01b038d1684529091529020549190611c3a565b6000546001600160a01b03163314610ff95760405162461bcd60e51b8152600401610af090612656565b60248054911515620100000262ff000019909216919091179055565b6000610bf83384846117c7565b60008161102e336106b0565b101561107c5760405162461bcd60e51b815260206004820152601860248201527f6e6f7420656e6f7567682066756e647320746f206275726e00000000000000006044820152606401610af0565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106110b1576110b16126db565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561110a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112e91906126f1565b81600181518110611141576111416126db565b6001600160a01b03928316602091820292909201015260105460405163d06ca61f60e01b8152600092919091169063d06ca61f906111859087908690600401612752565b600060405180830381865afa1580156111a2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111ca9190810190612773565b90506000670de0b6b3a764000047116111e657506006546111f6565b6005546111f39047612847565b90505b8082600184516112069190612869565b81518110611216576112166126db565b6020026020010151111561126c5760405162461bcd60e51b815260206004820152601760248201527f616d6f756e742067726561746572207468616e206361700000000000000000006044820152606401610af0565b816001835161127b9190612869565b8151811061128b5761128b6126db565b60200260200101514710156112e25760405162461bcd60e51b815260206004820152601c60248201527f6e6f7420656e6f7567682066756e647320696e20636f6e7472616374000000006044820152606401610af0565b6113123383600185516112f59190612869565b81518110611305576113056126db565b6020026020010151611d1c565b61131c3386611d52565b816001835161132b9190612869565b8151811061133b5761133b6126db565b602002602001015160046000828254611354919061287c565b92505081905550846003600082825461136d919061287c565b909155507f6ca5c7c2d43ebd8c6d3049382038bb2df58288440912f41fcd488a779ed943819050338684600186516113a59190612869565b815181106113b5576113b56126db565b602090810291909101810151604080516001600160a01b0390951685529184019290925282015260600160405180910390a1506001949350505050565b6000546001600160a01b0316331461141c5760405162461bcd60e51b8152600401610af090612656565b6019839055601a829055601b81905561143f816114398585611cbd565b90611cbd565b601c55505050565b6000546001600160a01b031633146114715760405162461bcd60e51b8152600401610af090612656565b602480548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906114ba90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146114ef5760405162461bcd60e51b8152600401610af090612656565b602454600160201b900460ff161561153a5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99c81bdc195b995960921b6044820152606401610af0565b306000908152600a60205260409020546115549047611e86565b6024805464ff000000001916600160201b179055565b6000546001600160a01b031633146115945760405162461bcd60e51b8152600401610af090612656565b6001600160a01b03166000908152602360205260409020805460ff19166001179055565b6000546001600160a01b031633146115e25760405162461bcd60e51b8152600401610af090612656565b6001600160a01b0381166116475760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610af0565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166117045760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610af0565b6001600160a01b0382166117655760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610af0565b6001600160a01b038381166000818152600b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661182b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610af0565b6001600160a01b03821661188d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610af0565b6001600160a01b038216301480156118ae5750602454600160201b900460ff165b1561191d576002546040516311f9fbc960e21b81526001600160a01b03858116600483015260248201849052909116925082906347e7ef2490604401600060405180830381600087803b15801561190457600080fd5b505af1158015611918573d6000803e3d6000fd5b505050505b60245460ff161561193957611933838383611f5b565b50505050565b6001600160a01b03831660009081526022602052604090205460ff1615801561197b57506001600160a01b03821660009081526022602052604090205460ff16155b156119e357600d548111156119e35760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610af0565b306000908152600a6020526040902054600f5481108015908190611a0a575060245460ff16155b8015611a2f57506001600160a01b03851660009081526023602052604090205460ff16155b8015611a425750602454610100900460ff165b15611a895760245462010000900460ff168015611a685750602454600160201b900460ff165b15611a7357600f5491505b611a89828410611a83578261202f565b8361202f565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0388166000908152600a9091529190912054611adb918590611c3a565b6001600160a01b0386166000908152600a602090815260408083209390935580529081205460ff1680611b2557506001600160a01b038516600090815260208052604090205460ff165b611b3957611b348686866120f3565b611b3b565b835b602454909150600160201b900460ff16611b5d57611b5a8686866120f3565b90505b6024546301000000900460ff168015611b8f57506001600160a01b03851660009081526021602052604090205460ff16155b15611bc557600e54611bba82611439886001600160a01b03166000908152600a602052604090205490565b1115611bc557600080fd5b6001600160a01b0385166000908152600a6020526040902054611be89082611cbd565b6001600160a01b038087166000818152600a6020526040908190209390935591519088169060008051602061293983398151915290611c2a9085815260200190565b60405180910390a3505050505050565b60008184841115611c5e5760405162461bcd60e51b8152600401610af09190612483565b506000611c6b8486612869565b95945050505050565b6000611cb683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c3a565b9392505050565b600080611cca838561287c565b905083811015611cb65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610af0565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610b54573d6000803e3d6000fd5b6001600160a01b038216611db25760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610af0565b6001600160a01b0382166000908152600a602052604090205481811015611e265760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610af0565b6001600160a01b0383166000908152600a602052604081208383039055600c8054849290611e55908490612869565b90915550506040518281526000906001600160a01b03851690600080516020612939833981519152906020016117ba565b601054611e9e9030906001600160a01b0316846116a2565b6010546001600160a01b031663f305d719823085600080611ec76000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611f2f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f54919061288f565b5050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a90915291822054611fac918490611c3a565b6001600160a01b038086166000908152600a60205260408082209390935590851681522054611fdb9083611cbd565b6001600160a01b038085166000818152600a602052604090819020939093559151908616906000805160206129398339815191529061201d9086815260200190565b60405180910390a35060019392505050565b6024805460ff191660011790819055600160201b900460ff16156120e6574761205782612203565b60006120634783611c74565b90506000612088601c546120826019548561239690919063ffffffff16565b90612418565b905060006120a7601c54612082601a548661239690919063ffffffff16565b905081156120c5576002546120c5906001600160a01b031683611d1c565b80156120e1576012546120e1906001600160a01b031682611d1c565b505050505b506024805460ff19169055565b6001600160a01b038316600090815260236020526040812054819060ff16156121535761213a60646120826014601f541161213057601d54612133565b60055b8690612396565b601f5490915061214b906001611cbd565b601f55612191565b6001600160a01b03841660009081526023602052604090205460ff16156121915761218e60646120826014601f541161213057601e54612133565b90505b80156121f957306000908152600a60205260409020546121b19082611cbd565b306000818152600a6020526040908190209290925590516001600160a01b03871690600080516020612939833981519152906121f09085815260200190565b60405180910390a35b611c6b8382611c74565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612238576122386126db565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b591906126f1565b816001815181106122c8576122c86126db565b6001600160a01b0392831660209182029290920101526010546122ee91309116846116a2565b60105460405163791ac94760e01b81526001600160a01b039091169063791ac947906123279085906000908690309042906004016128bd565b600060405180830381600087803b15801561234157600080fd5b505af1158015612355573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161238a929190612752565b60405180910390a15050565b6000826000036123a857506000610bfc565b60006123b483856128f9565b9050826123c18583612847565b14611cb65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610af0565b6000611cb683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836124765760405162461bcd60e51b8152600401610af09190612483565b506000611c6b8486612847565b600060208083528351808285015260005b818110156124b057858101830151858201604001528201612494565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146124e657600080fd5b50565b600080604083850312156124fc57600080fd5b8235612507816124d1565b946020939093013593505050565b60008060006060848603121561252a57600080fd5b8335612535816124d1565b92506020840135612545816124d1565b929592945050506040919091013590565b8035801515811461256657600080fd5b919050565b60006020828403121561257d57600080fd5b611cb682612556565b6000806040838503121561259957600080fd5b82356125a4816124d1565b91506125b260208401612556565b90509250929050565b6000602082840312156125cd57600080fd5b8135611cb6816124d1565b6000602082840312156125ea57600080fd5b5035919050565b60008060006060848603121561260657600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561263057600080fd5b823561263b816124d1565b9150602083013561264b816124d1565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061269f57607f821691505b6020821081036126bf57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561270357600080fd5b8151611cb6816124d1565b600081518084526020808501945080840160005b838110156127475781516001600160a01b031687529582019590820190600101612722565b509495945050505050565b82815260406020820152600061276b604083018461270e565b949350505050565b6000602080838503121561278657600080fd5b825167ffffffffffffffff8082111561279e57600080fd5b818501915085601f8301126127b257600080fd5b8151818111156127c4576127c46126c5565b8060051b604051601f19603f830116810181811085821117156127e9576127e96126c5565b60405291825284820192508381018501918883111561280757600080fd5b938501935b828510156128255784518452938501939285019261280c565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b60008261286457634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610bfc57610bfc612831565b80820180821115610bfc57610bfc612831565b6000806000606084860312156128a457600080fd5b8351925060208401519150604084015190509250925092565b85815284602082015260a0604082015260006128dc60a083018661270e565b6001600160a01b0394909416606083015250608001529392505050565b8082028115828204841417610bfc57610bfc61283156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220730b71b374cbe64ccb23c957d23e170b4e8fd4a73e6d5f4d97202327dd89dc8e64736f6c63430008140033000000000000000000000000313aac4f15b0afea968233f5e375dfe556fabf0f

Deployed Bytecode

0x6080604052600436106103905760003560e01c806382eefb43116101dc578063c59d484711610102578063dd62ed3e116100a0578063f872858a1161006f578063f872858a14610a4a578063fabf706314610a6b578063fb34a33614610a9a578063fe47e0c914610ab057600080fd5b8063dd62ed3e146109ae578063e207a92b146109f4578063f0cd1dac14610a14578063f2fde38b14610a2a57600080fd5b8063c9567bf9116100dc578063c9567bf91461094d578063ca70307514610962578063d89135cd14610978578063da00097d1461098e57600080fd5b8063c59d4847146108ce578063c78a789b146108fd578063c816841b1461092d57600080fd5b8063a08e671f1161017a578063a9059cbb11610149578063a9059cbb1461084e578063af254b721461086e578063c2d4640e1461088e578063c49b9a80146108ae57600080fd5b8063a08e671f146107e2578063a40dcda3146107f8578063a457c2d71461080e578063a5d69d1f1461082e57600080fd5b80638e223341116101b65780638e223341146107825780638f03aad514610798578063914eb66a146107b857806395d89b41146107cd57600080fd5b806382eefb431461072d5780638a8c523c146107435780638da5cb5b1461076457600080fd5b80633d98b9af116102c157806357e6adcb1161025f5780637b3a3ec61161022e5780637b3a3ec6146106cb5780637d1db4a5146106e1578063807c2d9c146106f75780638187f5161461070d57600080fd5b806357e6adcb1461063f5780635e2524551461065f578063667b511c1461067557806370a082311461069557600080fd5b80634a74bb021161029b5780634a74bb02146105aa5780634f1c2aa4146105c9578063526012e8146105df57806355324fa91461060f57600080fd5b80633d98b9af146105685780633f2516881461057e5780634a728e241461059457600080fd5b80632b112e491161032e57806331eca57e1161030857806331eca57e146104fc57806332cd6bcb1461051257806339509351146105285780633a4b66f11461054857600080fd5b80632b112e49146104a55780632cdae5cb146104ba578063313ce567146104da57600080fd5b80631694505e1161036a5780631694505e1461040e57806318160ddd1461044657806323b872dd146104655780632563ae831461048557600080fd5b80630614117a1461039c57806306fdde03146103b3578063095ea7b3146103de57600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b1610ac6565b005b3480156103bf57600080fd5b506103c8610b59565b6040516103d59190612483565b60405180910390f35b3480156103ea57600080fd5b506103fe6103f93660046124e9565b610beb565b60405190151581526020016103d5565b34801561041a57600080fd5b5060105461042e906001600160a01b031681565b6040516001600160a01b0390911681526020016103d5565b34801561045257600080fd5b50600c545b6040519081526020016103d5565b34801561047157600080fd5b506103fe610480366004612515565b610c02565b34801561049157600080fd5b506103b16104a036600461256b565b610c6b565b3480156104b157600080fd5b50610457610cb3565b3480156104c657600080fd5b506103b16104d5366004612586565b610cf3565b3480156104e657600080fd5b5060095460405160ff90911681526020016103d5565b34801561050857600080fd5b5061045760065481565b34801561051e57600080fd5b5061045760135481565b34801561053457600080fd5b506103fe6105433660046124e9565b610d47565b34801561055457600080fd5b5060025461042e906001600160a01b031681565b34801561057457600080fd5b5061045760185481565b34801561058a57600080fd5b50610457601a5481565b3480156105a057600080fd5b5061045760145481565b3480156105b657600080fd5b506024546103fe90610100900460ff1681565b3480156105d557600080fd5b50610457601b5481565b3480156105eb57600080fd5b506103fe6105fa3660046125bb565b60216020526000908152604090205460ff1681565b34801561061b57600080fd5b506103fe61062a3660046125bb565b60236020526000908152604090205460ff1681565b34801561064b57600080fd5b506103b161065a366004612586565b610d7d565b34801561066b57600080fd5b5061045760155481565b34801561068157600080fd5b506103b1610690366004612586565b610dd2565b3480156106a157600080fd5b506104576106b03660046125bb565b6001600160a01b03166000908152600a602052604090205490565b3480156106d757600080fd5b5061045760055481565b3480156106ed57600080fd5b50610457600d5481565b34801561070357600080fd5b50610457600e5481565b34801561071957600080fd5b506103b16107283660046125bb565b610e27565b34801561073957600080fd5b50610457601e5481565b34801561074f57600080fd5b506024546103fe90600160201b900460ff1681565b34801561077057600080fd5b506000546001600160a01b031661042e565b34801561078e57600080fd5b5061045760195481565b3480156107a457600080fd5b506103b16107b33660046125d8565b610e73565b3480156107c457600080fd5b506103b1610efd565b3480156107d957600080fd5b506103c8610f71565b3480156107ee57600080fd5b50610457601c5481565b34801561080457600080fd5b5061045760175481565b34801561081a57600080fd5b506103fe6108293660046124e9565b610f80565b34801561083a57600080fd5b506103b161084936600461256b565b610fcf565b34801561085a57600080fd5b506103fe6108693660046124e9565b611015565b34801561087a57600080fd5b506103fe6108893660046125d8565b611022565b34801561089a57600080fd5b506103b16108a93660046125f1565b6113f2565b3480156108ba57600080fd5b506103b16108c936600461256b565b611447565b3480156108da57600080fd5b5060035460045447604080519384526020840192909252908201526060016103d5565b34801561090957600080fd5b506103fe6109183660046125bb565b60226020526000908152604090205460ff1681565b34801561093957600080fd5b5060115461042e906001600160a01b031681565b34801561095957600080fd5b506103b16114c5565b34801561096e57600080fd5b50610457601f5481565b34801561098457600080fd5b5061045760035481565b34801561099a57600080fd5b506024546103fe9062010000900460ff1681565b3480156109ba57600080fd5b506104576109c936600461261d565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b348015610a0057600080fd5b506103b1610a0f3660046125bb565b61156a565b348015610a2057600080fd5b50610457601d5481565b348015610a3657600080fd5b506103b1610a453660046125bb565b6115b8565b348015610a5657600080fd5b506024546103fe906301000000900460ff1681565b348015610a7757600080fd5b506103fe610a863660046125bb565b602080526000908152604090205460ff1681565b348015610aa657600080fd5b5061045760045481565b348015610abc57600080fd5b5061045760165481565b6000546001600160a01b03163314610af95760405162461bcd60e51b8152600401610af090612656565b60405180910390fd5b6000546001600160a01b03166001600160a01b03164760405160006040518083038185875af1925050503d8060008114610b4f576040519150601f19603f3d011682016040523d82523d6000602084013e505050565b606091505b505050565b606060078054610b689061268b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b949061268b565b8015610be15780601f10610bb657610100808354040283529160200191610be1565b820191906000526020600020905b815481529060010190602001808311610bc457829003601f168201915b5050505050905090565b6000610bf83384846116a2565b5060015b92915050565b6000610c0f8484846117c7565b610c618433610c5c85604051806060016040528060288152602001612911602891396001600160a01b038a166000908152600b602090815260408083203384529091529020549190611c3a565b6116a2565b5060019392505050565b6000546001600160a01b03163314610c955760405162461bcd60e51b8152600401610af090612656565b6024805491151563010000000263ff00000019909216919091179055565b61dead6000908152600a6020527f20677881080440a9b3c87e826370bb5d9c2f74efd4dede686d52d77a6a09f8bb54600c54610cee91611c74565b905090565b6000546001600160a01b03163314610d1d5760405162461bcd60e51b8152600401610af090612656565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b336000818152600b602090815260408083206001600160a01b03871684529091528120549091610bf8918590610c5c9086611cbd565b6000546001600160a01b03163314610da75760405162461bcd60e51b8152600401610af090612656565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610dfc5760405162461bcd60e51b8152600401610af090612656565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e515760405162461bcd60e51b8152600401610af090612656565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e9d5760405162461bcd60e51b8152600401610af090612656565b6a52b7d2dcc80cd2e4000000811115610ef85760405162461bcd60e51b815260206004820152601960248201527f4d61782077616c6c65742073686f756c64206265206c657373000000000000006044820152606401610af0565b600d55565b6000546001600160a01b03163314610f275760405162461bcd60e51b8152600401610af090612656565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060088054610b689061268b565b6000610bf83384610c5c8560405180606001604052806025815260200161295960259139336000908152600b602090815260408083206001600160a01b038d1684529091529020549190611c3a565b6000546001600160a01b03163314610ff95760405162461bcd60e51b8152600401610af090612656565b60248054911515620100000262ff000019909216919091179055565b6000610bf83384846117c7565b60008161102e336106b0565b101561107c5760405162461bcd60e51b815260206004820152601860248201527f6e6f7420656e6f7567682066756e647320746f206275726e00000000000000006044820152606401610af0565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106110b1576110b16126db565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561110a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112e91906126f1565b81600181518110611141576111416126db565b6001600160a01b03928316602091820292909201015260105460405163d06ca61f60e01b8152600092919091169063d06ca61f906111859087908690600401612752565b600060405180830381865afa1580156111a2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111ca9190810190612773565b90506000670de0b6b3a764000047116111e657506006546111f6565b6005546111f39047612847565b90505b8082600184516112069190612869565b81518110611216576112166126db565b6020026020010151111561126c5760405162461bcd60e51b815260206004820152601760248201527f616d6f756e742067726561746572207468616e206361700000000000000000006044820152606401610af0565b816001835161127b9190612869565b8151811061128b5761128b6126db565b60200260200101514710156112e25760405162461bcd60e51b815260206004820152601c60248201527f6e6f7420656e6f7567682066756e647320696e20636f6e7472616374000000006044820152606401610af0565b6113123383600185516112f59190612869565b81518110611305576113056126db565b6020026020010151611d1c565b61131c3386611d52565b816001835161132b9190612869565b8151811061133b5761133b6126db565b602002602001015160046000828254611354919061287c565b92505081905550846003600082825461136d919061287c565b909155507f6ca5c7c2d43ebd8c6d3049382038bb2df58288440912f41fcd488a779ed943819050338684600186516113a59190612869565b815181106113b5576113b56126db565b602090810291909101810151604080516001600160a01b0390951685529184019290925282015260600160405180910390a1506001949350505050565b6000546001600160a01b0316331461141c5760405162461bcd60e51b8152600401610af090612656565b6019839055601a829055601b81905561143f816114398585611cbd565b90611cbd565b601c55505050565b6000546001600160a01b031633146114715760405162461bcd60e51b8152600401610af090612656565b602480548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906114ba90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146114ef5760405162461bcd60e51b8152600401610af090612656565b602454600160201b900460ff161561153a5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99c81bdc195b995960921b6044820152606401610af0565b306000908152600a60205260409020546115549047611e86565b6024805464ff000000001916600160201b179055565b6000546001600160a01b031633146115945760405162461bcd60e51b8152600401610af090612656565b6001600160a01b03166000908152602360205260409020805460ff19166001179055565b6000546001600160a01b031633146115e25760405162461bcd60e51b8152600401610af090612656565b6001600160a01b0381166116475760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610af0565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166117045760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610af0565b6001600160a01b0382166117655760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610af0565b6001600160a01b038381166000818152600b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661182b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610af0565b6001600160a01b03821661188d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610af0565b6001600160a01b038216301480156118ae5750602454600160201b900460ff165b1561191d576002546040516311f9fbc960e21b81526001600160a01b03858116600483015260248201849052909116925082906347e7ef2490604401600060405180830381600087803b15801561190457600080fd5b505af1158015611918573d6000803e3d6000fd5b505050505b60245460ff161561193957611933838383611f5b565b50505050565b6001600160a01b03831660009081526022602052604090205460ff1615801561197b57506001600160a01b03821660009081526022602052604090205460ff16155b156119e357600d548111156119e35760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610af0565b306000908152600a6020526040902054600f5481108015908190611a0a575060245460ff16155b8015611a2f57506001600160a01b03851660009081526023602052604090205460ff16155b8015611a425750602454610100900460ff165b15611a895760245462010000900460ff168015611a685750602454600160201b900460ff165b15611a7357600f5491505b611a89828410611a83578261202f565b8361202f565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0388166000908152600a9091529190912054611adb918590611c3a565b6001600160a01b0386166000908152600a602090815260408083209390935580529081205460ff1680611b2557506001600160a01b038516600090815260208052604090205460ff165b611b3957611b348686866120f3565b611b3b565b835b602454909150600160201b900460ff16611b5d57611b5a8686866120f3565b90505b6024546301000000900460ff168015611b8f57506001600160a01b03851660009081526021602052604090205460ff16155b15611bc557600e54611bba82611439886001600160a01b03166000908152600a602052604090205490565b1115611bc557600080fd5b6001600160a01b0385166000908152600a6020526040902054611be89082611cbd565b6001600160a01b038087166000818152600a6020526040908190209390935591519088169060008051602061293983398151915290611c2a9085815260200190565b60405180910390a3505050505050565b60008184841115611c5e5760405162461bcd60e51b8152600401610af09190612483565b506000611c6b8486612869565b95945050505050565b6000611cb683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c3a565b9392505050565b600080611cca838561287c565b905083811015611cb65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610af0565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610b54573d6000803e3d6000fd5b6001600160a01b038216611db25760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610af0565b6001600160a01b0382166000908152600a602052604090205481811015611e265760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610af0565b6001600160a01b0383166000908152600a602052604081208383039055600c8054849290611e55908490612869565b90915550506040518281526000906001600160a01b03851690600080516020612939833981519152906020016117ba565b601054611e9e9030906001600160a01b0316846116a2565b6010546001600160a01b031663f305d719823085600080611ec76000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611f2f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f54919061288f565b5050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a90915291822054611fac918490611c3a565b6001600160a01b038086166000908152600a60205260408082209390935590851681522054611fdb9083611cbd565b6001600160a01b038085166000818152600a602052604090819020939093559151908616906000805160206129398339815191529061201d9086815260200190565b60405180910390a35060019392505050565b6024805460ff191660011790819055600160201b900460ff16156120e6574761205782612203565b60006120634783611c74565b90506000612088601c546120826019548561239690919063ffffffff16565b90612418565b905060006120a7601c54612082601a548661239690919063ffffffff16565b905081156120c5576002546120c5906001600160a01b031683611d1c565b80156120e1576012546120e1906001600160a01b031682611d1c565b505050505b506024805460ff19169055565b6001600160a01b038316600090815260236020526040812054819060ff16156121535761213a60646120826014601f541161213057601d54612133565b60055b8690612396565b601f5490915061214b906001611cbd565b601f55612191565b6001600160a01b03841660009081526023602052604090205460ff16156121915761218e60646120826014601f541161213057601e54612133565b90505b80156121f957306000908152600a60205260409020546121b19082611cbd565b306000818152600a6020526040908190209290925590516001600160a01b03871690600080516020612939833981519152906121f09085815260200190565b60405180910390a35b611c6b8382611c74565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612238576122386126db565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b591906126f1565b816001815181106122c8576122c86126db565b6001600160a01b0392831660209182029290920101526010546122ee91309116846116a2565b60105460405163791ac94760e01b81526001600160a01b039091169063791ac947906123279085906000908690309042906004016128bd565b600060405180830381600087803b15801561234157600080fd5b505af1158015612355573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161238a929190612752565b60405180910390a15050565b6000826000036123a857506000610bfc565b60006123b483856128f9565b9050826123c18583612847565b14611cb65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610af0565b6000611cb683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836124765760405162461bcd60e51b8152600401610af09190612483565b506000611c6b8486612847565b600060208083528351808285015260005b818110156124b057858101830151858201604001528201612494565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146124e657600080fd5b50565b600080604083850312156124fc57600080fd5b8235612507816124d1565b946020939093013593505050565b60008060006060848603121561252a57600080fd5b8335612535816124d1565b92506020840135612545816124d1565b929592945050506040919091013590565b8035801515811461256657600080fd5b919050565b60006020828403121561257d57600080fd5b611cb682612556565b6000806040838503121561259957600080fd5b82356125a4816124d1565b91506125b260208401612556565b90509250929050565b6000602082840312156125cd57600080fd5b8135611cb6816124d1565b6000602082840312156125ea57600080fd5b5035919050565b60008060006060848603121561260657600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561263057600080fd5b823561263b816124d1565b9150602083013561264b816124d1565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061269f57607f821691505b6020821081036126bf57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561270357600080fd5b8151611cb6816124d1565b600081518084526020808501945080840160005b838110156127475781516001600160a01b031687529582019590820190600101612722565b509495945050505050565b82815260406020820152600061276b604083018461270e565b949350505050565b6000602080838503121561278657600080fd5b825167ffffffffffffffff8082111561279e57600080fd5b818501915085601f8301126127b257600080fd5b8151818111156127c4576127c46126c5565b8060051b604051601f19603f830116810181811085821117156127e9576127e96126c5565b60405291825284820192508381018501918883111561280757600080fd5b938501935b828510156128255784518452938501939285019261280c565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b60008261286457634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610bfc57610bfc612831565b80820180821115610bfc57610bfc612831565b6000806000606084860312156128a457600080fd5b8351925060208401519150604084015190509250925092565b85815284602082015260a0604082015260006128dc60a083018661270e565b6001600160a01b0394909416606083015250608001529392505050565b8082028115828204841417610bfc57610bfc61283156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220730b71b374cbe64ccb23c957d23e170b4e8fd4a73e6d5f4d97202327dd89dc8e64736f6c63430008140033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000313aac4f15b0afea968233f5e375dfe556fabf0f

-----Decoded View---------------
Arg [0] : _stakingAddress (address): 0x313aac4f15b0AfEA968233f5E375DFE556fabf0F

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000313aac4f15b0afea968233f5e375dfe556fabf0f


Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.