ETH Price: $3,428.79 (-2.14%)
Gas: 2 Gwei

Contract

0x508B27902C6c14972a10a4e413B9cFA449e9ceDB
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve201408982024-06-21 15:09:232 days ago1718982563IN
0x508B2790...449e9ceDB
0 ETH0.000369947.94243313
Transfer201408872024-06-21 15:07:112 days ago1718982431IN
0x508B2790...449e9ceDB
0 ETH0.000551358.52764565
Approve201303202024-06-20 3:40:233 days ago1718854823IN
0x508B2790...449e9ceDB
0 ETH0.00024225.23097924
Approve200930962024-06-14 22:41:238 days ago1718404883IN
0x508B2790...449e9ceDB
0 ETH0.000268755.80592293
Transfer200930762024-06-14 22:37:238 days ago1718404643IN
0x508B2790...449e9ceDB
0 ETH0.000383098.05183438
Transfer200930712024-06-14 22:36:238 days ago1718404583IN
0x508B2790...449e9ceDB
0 ETH0.000497017.158334
Approve200904992024-06-14 13:59:239 days ago1718373563IN
0x508B2790...449e9ceDB
0 ETH0.0004817510.41810492
Transfer200863902024-06-14 0:12:599 days ago1718323979IN
0x508B2790...449e9ceDB
0 ETH0.000488197.55070199
Approve200842002024-06-13 16:49:4710 days ago1718297387IN
0x508B2790...449e9ceDB
0 ETH0.0008276217.86527426
Approve200833932024-06-13 14:07:2310 days ago1718287643IN
0x508B2790...449e9ceDB
0 ETH0.0007682116.58704475
Approve200796962024-06-13 1:43:1110 days ago1718242991IN
0x508B2790...449e9ceDB
0 ETH0.000448889.63719668
Approve200732762024-06-12 4:10:5911 days ago1718165459IN
0x508B2790...449e9ceDB
0 ETH0.00029236.32119537
Approve200705242024-06-11 18:57:3512 days ago1718132255IN
0x508B2790...449e9ceDB
0 ETH0.0004842910.39751552
Approve200702022024-06-11 17:53:1112 days ago1718128391IN
0x508B2790...449e9ceDB
0 ETH0.0006730714.54784317
Approve200676892024-06-11 9:27:5912 days ago1718098079IN
0x508B2790...449e9ceDB
0 ETH0.000386298.34723414
Approve200658352024-06-11 3:14:4712 days ago1718075687IN
0x508B2790...449e9ceDB
0 ETH0.000420259.09054975
Approve200632082024-06-10 18:26:1113 days ago1718043971IN
0x508B2790...449e9ceDB
0 ETH0.0007659916.54770829
Transfer200629422024-06-10 17:32:3513 days ago1718040755IN
0x508B2790...449e9ceDB
0 ETH0.001000214.40318022
Approve200626262024-06-10 16:28:5913 days ago1718036939IN
0x508B2790...449e9ceDB
0 ETH0.0004202114.37816334
Approve200626092024-06-10 16:25:3513 days ago1718036735IN
0x508B2790...449e9ceDB
0 ETH0.0004426616.7664303
Approve200625962024-06-10 16:22:5913 days ago1718036579IN
0x508B2790...449e9ceDB
0 ETH0.0006861914.81988951
Approve200552492024-06-09 15:45:5914 days ago1717947959IN
0x508B2790...449e9ceDB
0 ETH0.0007387915.96840501
Transfer200552392024-06-09 15:43:5914 days ago1717947839IN
0x508B2790...449e9ceDB
0 ETH0.0012703619.64099797
Transfer200550132024-06-09 14:58:2314 days ago1717945103IN
0x508B2790...449e9ceDB
0 ETH0.0007235910.41997319
Approve200332352024-06-06 13:58:4717 days ago1717682327IN
0x508B2790...449e9ceDB
0 ETH0.0010239422.14882725
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AISignalToken

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 20000 runs

Other Settings:
paris EvmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-11
*/

//SPDX-License-Identifier: MIT

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

    function WETH() external pure returns (address);

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

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

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

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

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

    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(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

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

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

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

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

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

    event Transfer(address indexed from, address indexed to, uint256 value);

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, msg.sender, currentAllowance - amount);
        }

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

        _afterTokenTransfer(address(0), account, amount);
    }

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

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

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

        _afterTokenTransfer(account, address(0), amount);
    }

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

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

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

pragma solidity ^0.8.17;

/// @notice Simple single owner authorization mixin.
/// @author Solady (https://github.com/vectorized/solady/blob/main/src/auth/Ownable.sol)
///
/// @dev Note:
/// This implementation does NOT auto-initialize the owner to `msg.sender`.
/// You MUST call the `_initializeOwner` in the constructor / initializer.
///
/// While the ownable portion follows
/// [EIP-173](https://eips.ethereum.org/EIPS/eip-173) for compatibility,
/// the nomenclature for the 2-step ownership handover may be unique to this codebase.
abstract contract Ownable {
    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                       CUSTOM ERRORS                        */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev The caller is not authorized to call the function.
    error Unauthorized();

    /// @dev The `newOwner` cannot be the zero address.
    error NewOwnerIsZeroAddress();

    /// @dev The `pendingOwner` does not have a valid handover request.
    error NoHandoverRequest();

    /// @dev Cannot double-initialize.
    error AlreadyInitialized();

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                           EVENTS                           */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev The ownership is transferred from `oldOwner` to `newOwner`.
    /// This event is intentionally kept the same as OpenZeppelin's Ownable to be
    /// compatible with indexers and [EIP-173](https://eips.ethereum.org/EIPS/eip-173),
    /// despite it not being as lightweight as a single argument event.
    event OwnershipTransferred(address indexed oldOwner, address indexed newOwner);

    /// @dev An ownership handover to `pendingOwner` has been requested.
    event OwnershipHandoverRequested(address indexed pendingOwner);

    /// @dev The ownership handover to `pendingOwner` has been canceled.
    event OwnershipHandoverCanceled(address indexed pendingOwner);

    /// @dev `keccak256(bytes("OwnershipTransferred(address,address)"))`.
    uint256 private constant _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE =
        0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0;

    /// @dev `keccak256(bytes("OwnershipHandoverRequested(address)"))`.
    uint256 private constant _OWNERSHIP_HANDOVER_REQUESTED_EVENT_SIGNATURE =
        0xdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d;

    /// @dev `keccak256(bytes("OwnershipHandoverCanceled(address)"))`.
    uint256 private constant _OWNERSHIP_HANDOVER_CANCELED_EVENT_SIGNATURE =
        0xfa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92;

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                          STORAGE                           */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev The owner slot is given by:
    /// `bytes32(~uint256(uint32(bytes4(keccak256("_OWNER_SLOT_NOT")))))`.
    /// It is intentionally chosen to be a high value
    /// to avoid collision with lower slots.
    /// The choice of manual storage layout is to enable compatibility
    /// with both regular and upgradeable contracts.
    bytes32 internal constant _OWNER_SLOT =
        0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927;

    /// The ownership handover slot of `newOwner` is given by:
    /// ```
    ///     mstore(0x00, or(shl(96, user), _HANDOVER_SLOT_SEED))
    ///     let handoverSlot := keccak256(0x00, 0x20)
    /// ```
    /// It stores the expiry timestamp of the two-step ownership handover.
    uint256 private constant _HANDOVER_SLOT_SEED = 0x389a75e1;

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                     INTERNAL FUNCTIONS                     */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev Override to return true to make `_initializeOwner` prevent double-initialization.
    function _guardInitializeOwner() internal pure virtual returns (bool guard) {}

    /// @dev Initializes the owner directly without authorization guard.
    /// This function must be called upon initialization,
    /// regardless of whether the contract is upgradeable or not.
    /// This is to enable generalization to both regular and upgradeable contracts,
    /// and to save gas in case the initial owner is not the caller.
    /// For performance reasons, this function will not check if there
    /// is an existing owner.
    function _initializeOwner(address newOwner) internal virtual {
        if (_guardInitializeOwner()) {
            /// @solidity memory-safe-assembly
            assembly {
                let ownerSlot := _OWNER_SLOT
                if sload(ownerSlot) {
                    mstore(0x00, 0x0dc149f0) // `AlreadyInitialized()`.
                    revert(0x1c, 0x04)
                }
                // Clean the upper 96 bits.
                newOwner := shr(96, shl(96, newOwner))
                // Store the new value.
                sstore(ownerSlot, or(newOwner, shl(255, iszero(newOwner))))
                // Emit the {OwnershipTransferred} event.
                log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, 0, newOwner)
            }
        } else {
            /// @solidity memory-safe-assembly
            assembly {
                // Clean the upper 96 bits.
                newOwner := shr(96, shl(96, newOwner))
                // Store the new value.
                sstore(_OWNER_SLOT, newOwner)
                // Emit the {OwnershipTransferred} event.
                log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, 0, newOwner)
            }
        }
    }

    /// @dev Sets the owner directly without authorization guard.
    function _setOwner(address newOwner) internal virtual {
        if (_guardInitializeOwner()) {
            /// @solidity memory-safe-assembly
            assembly {
                let ownerSlot := _OWNER_SLOT
                // Clean the upper 96 bits.
                newOwner := shr(96, shl(96, newOwner))
                // Emit the {OwnershipTransferred} event.
                log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, sload(ownerSlot), newOwner)
                // Store the new value.
                sstore(ownerSlot, or(newOwner, shl(255, iszero(newOwner))))
            }
        } else {
            /// @solidity memory-safe-assembly
            assembly {
                let ownerSlot := _OWNER_SLOT
                // Clean the upper 96 bits.
                newOwner := shr(96, shl(96, newOwner))
                // Emit the {OwnershipTransferred} event.
                log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, sload(ownerSlot), newOwner)
                // Store the new value.
                sstore(ownerSlot, newOwner)
            }
        }
    }

    /// @dev Throws if the sender is not the owner.
    function _checkOwner() internal view virtual {
        /// @solidity memory-safe-assembly
        assembly {
            // If the caller is not the stored owner, revert.
            if iszero(eq(caller(), sload(_OWNER_SLOT))) {
                mstore(0x00, 0x82b42900) // `Unauthorized()`.
                revert(0x1c, 0x04)
            }
        }
    }

    /// @dev Returns how long a two-step ownership handover is valid for in seconds.
    /// Override to return a different value if needed.
    /// Made internal to conserve bytecode. Wrap it in a public function if needed.
    function _ownershipHandoverValidFor() internal view virtual returns (uint64) {
        return 48 * 3600;
    }

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                  PUBLIC UPDATE FUNCTIONS                   */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev Allows the owner to transfer the ownership to `newOwner`.
    function transferOwnership(address newOwner) public payable virtual onlyOwner {
        /// @solidity memory-safe-assembly
        assembly {
            if iszero(shl(96, newOwner)) {
                mstore(0x00, 0x7448fbae) // `NewOwnerIsZeroAddress()`.
                revert(0x1c, 0x04)
            }
        }
        _setOwner(newOwner);
    }

    /// @dev Allows the owner to renounce their ownership.
    function renounceOwnership() public payable virtual onlyOwner {
        _setOwner(address(0));
    }

    /// @dev Request a two-step ownership handover to the caller.
    /// The request will automatically expire in 48 hours (172800 seconds) by default.
    function requestOwnershipHandover() public payable virtual {
        unchecked {
            uint256 expires = block.timestamp + _ownershipHandoverValidFor();
            /// @solidity memory-safe-assembly
            assembly {
                // Compute and set the handover slot to `expires`.
                mstore(0x0c, _HANDOVER_SLOT_SEED)
                mstore(0x00, caller())
                sstore(keccak256(0x0c, 0x20), expires)
                // Emit the {OwnershipHandoverRequested} event.
                log2(0, 0, _OWNERSHIP_HANDOVER_REQUESTED_EVENT_SIGNATURE, caller())
            }
        }
    }

    /// @dev Cancels the two-step ownership handover to the caller, if any.
    function cancelOwnershipHandover() public payable virtual {
        /// @solidity memory-safe-assembly
        assembly {
            // Compute and set the handover slot to 0.
            mstore(0x0c, _HANDOVER_SLOT_SEED)
            mstore(0x00, caller())
            sstore(keccak256(0x0c, 0x20), 0)
            // Emit the {OwnershipHandoverCanceled} event.
            log2(0, 0, _OWNERSHIP_HANDOVER_CANCELED_EVENT_SIGNATURE, caller())
        }
    }

    /// @dev Allows the owner to complete the two-step ownership handover to `pendingOwner`.
    /// Reverts if there is no existing ownership handover requested by `pendingOwner`.
    function completeOwnershipHandover(address pendingOwner) public payable virtual onlyOwner {
        /// @solidity memory-safe-assembly
        assembly {
            // Compute and set the handover slot to 0.
            mstore(0x0c, _HANDOVER_SLOT_SEED)
            mstore(0x00, pendingOwner)
            let handoverSlot := keccak256(0x0c, 0x20)
            // If the handover does not exist, or has expired.
            if gt(timestamp(), sload(handoverSlot)) {
                mstore(0x00, 0x6f5e8818) // `NoHandoverRequest()`.
                revert(0x1c, 0x04)
            }
            // Set the handover slot to 0.
            sstore(handoverSlot, 0)
        }
        _setOwner(pendingOwner);
    }

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                   PUBLIC READ FUNCTIONS                    */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev Returns the owner of the contract.
    function owner() public view virtual returns (address result) {
        /// @solidity memory-safe-assembly
        assembly {
            result := sload(_OWNER_SLOT)
        }
    }

    /// @dev Returns the expiry timestamp for the two-step ownership handover to `pendingOwner`.
    function ownershipHandoverExpiresAt(address pendingOwner)
        public
        view
        virtual
        returns (uint256 result)
    {
        /// @solidity memory-safe-assembly
        assembly {
            // Compute the handover slot.
            mstore(0x0c, _HANDOVER_SLOT_SEED)
            mstore(0x00, pendingOwner)
            // Load the handover slot.
            result := sload(keccak256(0x0c, 0x20))
        }
    }

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                         MODIFIERS                          */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev Marks a function as only callable by the owner.
    modifier onlyOwner() virtual {
        _checkOwner();
        _;
    }
}

contract AISignalToken is ERC20, Ownable {

    event TradingIsLive();
    event TotalSupplyReached();
    event StakingInitiated(address);
    event NewAutoSwapThreshold(uint256);
    event TokenBurned(address,uint256);

    address private immutable marketingWallet;
    address public immutable presale;
    address public staking;
    bool public live;
    bool public set;
    uint64 private start;
    uint64 private timeend;
    uint256 private max;

    bool private swapping;
    uint256 private swapTokensAtAmount;
    
    address private immutable deadAddress = address(0xdead);
    uint256 private immutable maxSwap;
    
    mapping (address => bool) private isExcluded;
    mapping (address => bool) private isPair;
    mapping (uint256 => uint256) private blockSwaps;

    IUniswapV2Router02 private immutable uniswapV2Router;

    constructor (
        address _presale,
        uint256 _totalSup,
        uint8 _lpAllo,
        address _team
    ) ERC20("AISignal","aisig") { 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        address uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);
        presale = _presale;
        max = _totalSup;
        maxSwap = _totalSup * 25 / 1000; //2.5%
        swapTokensAtAmount = max / 20000; //0.005%
        marketingWallet = _team;
        exclude(uniswapV2Pair, true);
        isPair[uniswapV2Pair] = true;
        exclude(address(this),true);
        _mint(_presale, _totalSup * _lpAllo / 100);
        _initializeOwner(msg.sender);
    }

    error token__notLive();
    error token__maxHolding();
    error token__invalidPool();
    error token__swapping();

    /// @dev initiates trading and specifies the main liquidity pool.
    function beginTrading() external onlyOwner {
        require(!live, "Already begun");
        start = uint64(block.timestamp);
        timeend = start + uint64(15 minutes);
        live = true;
        emit TradingIsLive();
    }

    function beginStaking(address _staking) external {
        require(msg.sender == marketingWallet, "Unauthorized");
        staking = _staking;
        exclude(staking, true);
        emit StakingInitiated(_staking);
    }

    /// @dev marketingWallet changes the threshold at which the contract autoswaps
    function editSwapThreshold(uint256 amount) external {
        require(msg.sender == marketingWallet, "Unauthorized");
        require(amount > max / 20000000 && amount < maxSwap); //%.000005 - %2.5
        swapTokensAtAmount = amount;
        emit NewAutoSwapThreshold(amount);
    }

    function manualswap(uint256 amount) external {
        require(msg.sender == marketingWallet, "Unauthorized");
        require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount");
        if(!swapping){
            swapping = true;
            swapTokensForEth(amount);
            swapping = false;
        }else{
            revert token__swapping();
        }
    }

    /// @dev used by presale contract to mint tokens to claimants in order to avoid presale contract holding more than 2.5% supply
    function presaleDon(address recip, uint256 value ) external returns (bool){
        require(msg.sender == presale, "unauthorized");
        require(set == false, "no more minting");
        require(totalSupply() + value <= max, "exceeds supply");
        _mint(recip,value);
        if(totalSupply() == max){
            complete();
        }
        return true;
    }

    function burn(uint256 value) external {
        _burn(msg.sender, value);
        emit TokenBurned(msg.sender, value);
    }

    function autoSwap(uint256 contractBalance) private {
        if (contractBalance == 0) {
            return;
        }
        if (contractBalance > maxSwap) {
            contractBalance = maxSwap;
        }
        uint256 amountToSwapForETH = contractBalance;
        swapTokensForEth(amountToSwapForETH);
    }

    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,
            marketingWallet,
            block.timestamp
        );
    }

    /// @dev excluded addresses may hold larger than 2.5% and are not taxed on swaps
    function exclude(address add, bool exc) internal {
        isExcluded[add] = exc;
    }

    function complete() internal {
        set = true;
        emit TotalSupplyReached();
    }

    function _calculateTax(uint256 amount, bool isSell) internal view returns (uint256) {
        uint64 end = timeend;
        uint64 time = uint64(block.timestamp);
        uint256 fee = 0;
        if(time < end){
            uint256 bracket = (((end - time) * 100) / (end - start)); // 100 to 0 to determine tax bracket
            if(bracket >= 66){
                fee = amount * 30 / 100;
            } else if (bracket < 66 && bracket > 33){
                if(isSell){
                    fee = amount * 20 / 100;
                }else {
                    fee = amount * 10 / 100;
                }
            } else if (bracket <= 33) {
                if(isSell){
                    fee = amount * 10 / 100;
                }else {
                    fee = amount * 5 / 100;
                }
            }
            return fee;
        } else {
            fee = amount * 5 / 100;
            return fee;
        }
    }

    

    /*
    // @dev overrides transfer function to tax the liquidity pool swaps linearly from 30% to 5% over the cool down period to prevent bot abuse
    // also enforces 2.5% holding cap per wallet
    */
    function _transfer(address from,address to,uint256 amount) internal override {

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if(live){
            bool excludedTo = isExcluded[to];
            bool isSell = isPair[to];

            //maximum 2.5% of supply per wallet enforced
            if(!excludedTo && balanceOf(to) + amount  > totalSupply() * 25 / 1000){
                revert token__maxHolding();
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= swapTokensAtAmount;
            if (
                canSwap && !swapping && isSell //buyers dont pay for autoswap gg
            ) {
                if (blockSwaps[block.number] < 3) {
                    swapping = true;
                    autoSwap(contractTokenBalance);
                    swapping = false;
                    blockSwaps[block.number] = blockSwaps[block.number] + 1;
                }
            }

            if((isSell && !isExcluded[from]) || (isPair[from] && !excludedTo)){
                uint256 fee = _calculateTax(amount, isSell);
                super._transfer(from, address(this), fee);
                amount -= fee;
                super._transfer(from, to, amount);
            }else{
                super._transfer(from, to, amount);
            }
        }else{
            if(from == address(0) || from == presale || to == presale || to == deadAddress ){
                super._transfer(from, to, amount);
            }else{
                revert token__notLive();
            }
        }
        return;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_presale","type":"address"},{"internalType":"uint256","name":"_totalSup","type":"uint256"},{"internalType":"uint8","name":"_lpAllo","type":"uint8"},{"internalType":"address","name":"_team","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"NewOwnerIsZeroAddress","type":"error"},{"inputs":[],"name":"NoHandoverRequest","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"token__invalidPool","type":"error"},{"inputs":[],"name":"token__maxHolding","type":"error"},{"inputs":[],"name":"token__notLive","type":"error"},{"inputs":[],"name":"token__swapping","type":"error"},{"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":"uint256","name":"","type":"uint256"}],"name":"NewAutoSwapThreshold","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"StakingInitiated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"TokenBurned","type":"event"},{"anonymous":false,"inputs":[],"name":"TotalSupplyReached","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingIsLive","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":[{"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":[{"internalType":"address","name":"_staking","type":"address"}],"name":"beginStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"beginTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"name":"completeOwnershipHandover","outputs":[],"stateMutability":"payable","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":"uint256","name":"amount","type":"uint256"}],"name":"editSwapThreshold","outputs":[],"stateMutability":"nonpayable","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":"live","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"name":"ownershipHandoverExpiresAt","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presale","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recip","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"presaleDon","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"requestOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"set","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"staking","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"payable","type":"function"}]

61012060405261dead60c0523480156200001857600080fd5b5060405162002ca138038062002ca18339810160408190526200003b91620003c9565b60405180604001604052806008815260200167105254da59db985b60c21b81525060405180604001604052806005815260200164616973696760d81b81525081600390816200008b9190620004c8565b5060046200009a8282620004c8565b5050737a250d5630b4cf539739df2c5dacb4c659f2488d6101008190526040805163c45a015560e01b81529051919250600091839163c45a01559160048083019260209291908290030181865afa158015620000fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000120919062000594565b6040516364e329cb60e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260248201526001600160a01b03919091169063c9c65396906044016020604051808303816000875af115801562000183573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a9919062000594565b6001600160a01b03871660a052600786905590506103e8620001cd866019620005cf565b620001d99190620005ef565b60e052600754620001ee90614e2090620005ef565b6009556001600160a01b0383811660805281166000908152600a602081815260408084208054600160ff199182168117909255600b8452828620805482168317905530865293909252909220805490911690911790556200026c8660646200025a60ff881689620005cf565b620002669190620005ef565b62000283565b62000277336200036b565b50505050505062000628565b6001600160a01b038216620002de5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620002f2919062000612565b90915550506001600160a01b038216600090815260208190526040812080548392906200032190849062000612565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b505050565b80516001600160a01b0381168114620003c457600080fd5b919050565b60008060008060808587031215620003e057600080fd5b620003eb85620003ac565b935060208501519250604085015160ff811681146200040957600080fd5b91506200041960608601620003ac565b905092959194509250565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200044f57607f821691505b6020821081036200047057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003a757600081815260208120601f850160051c810160208610156200049f5750805b601f850160051c820191505b81811015620004c057828155600101620004ab565b505050505050565b81516001600160401b03811115620004e457620004e462000424565b620004fc81620004f584546200043a565b8462000476565b602080601f8311600181146200053457600084156200051b5750858301515b600019600386901b1c1916600185901b178555620004c0565b600085815260208120601f198616915b82811015620005655788860151825594840194600190910190840162000544565b5085821015620005845787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620005a757600080fd5b620005b282620003ac565b9392505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620005e957620005e9620005b9565b92915050565b6000826200060d57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620005e957620005e9620005b9565b60805160a05160c05160e051610100516125ee620006b360003960008181611a2001528181611b000152611b6201526000818161068501528181612043015261206c0152600061169601526000818161056f01528181610dc6015281816115ea01526116400152600081816105dc015281816108e301528181610b1b0152611b9601526125ee6000f3fe6080604052600436106101b75760003560e01c8063881dce60116100ec578063b8e010de1161008a578063f04e283e11610064578063f04e283e14610537578063f2fde38b1461054a578063fdea8e0b1461055d578063fee81cf41461059157600080fd5b8063b8e010de1461049c578063c408c245146104cf578063dd62ed3e146104e457600080fd5b806395d89b41116100c657806395d89b4114610427578063a457c2d71461043c578063a7862c561461045c578063a9059cbb1461047c57600080fd5b8063881dce60146103a15780638da5cb5b146103c1578063957aa58c146103f557600080fd5b8063313ce567116101595780634cf088d9116101335780634cf088d9146102fc57806354d1f13d1461034e57806370a0823114610356578063715018a61461039957600080fd5b8063313ce567146102a057806339509351146102bc57806342966c68146102dc57600080fd5b806318160ddd1161019557806318160ddd1461023957806323b872dd14610258578063256929621461027857806329e6b5861461028057600080fd5b806304c2754d146101bc57806306fdde03146101de578063095ea7b314610209575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046121d2565b6105c4565b005b3480156101ea57600080fd5b506101f36106ec565b60405161020091906121eb565b60405180910390f35b34801561021557600080fd5b50610229610224366004612279565b61077e565b6040519015158152602001610200565b34801561024557600080fd5b506002545b604051908152602001610200565b34801561026457600080fd5b506102296102733660046122a5565b610795565b6101dc61087b565b34801561028c57600080fd5b506101dc61029b3660046122e6565b6108cb565b3480156102ac57600080fd5b5060405160128152602001610200565b3480156102c857600080fd5b506102296102d7366004612279565b610a2a565b3480156102e857600080fd5b506101dc6102f73660046121d2565b610a73565b34801561030857600080fd5b506005546103299073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610200565b6101dc610ab3565b34801561036257600080fd5b5061024a6103713660046122e6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101dc610aef565b3480156103ad57600080fd5b506101dc6103bc3660046121d2565b610b03565b3480156103cd57600080fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610329565b34801561040157600080fd5b506005546102299074010000000000000000000000000000000000000000900460ff1681565b34801561043357600080fd5b506101f3610cc5565b34801561044857600080fd5b50610229610457366004612279565b610cd4565b34801561046857600080fd5b50610229610477366004612279565b610dac565b34801561048857600080fd5b50610229610497366004612279565b610f6f565b3480156104a857600080fd5b50600554610229907501000000000000000000000000000000000000000000900460ff1681565b3480156104db57600080fd5b506101dc610f7c565b3480156104f057600080fd5b5061024a6104ff36600461230a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101dc6105453660046122e6565b611114565b6101dc6105583660046122e6565b611151565b34801561056957600080fd5b506103297f000000000000000000000000000000000000000000000000000000000000000081565b34801561059d57600080fd5b5061024a6105ac3660046122e6565b63389a75e1600c908152600091909152602090205490565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a6564000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6301312d0060075461067a91906123a1565b811180156106a757507f000000000000000000000000000000000000000000000000000000000000000081105b6106b057600080fd5b60098190556040518181527f9b974812a379eb5931633dc2560f78ae5fadaabeee527fcc2a22e8c9fbe40b74906020015b60405180910390a150565b6060600380546106fb906123b5565b80601f0160208091040260200160405190810160405280929190818152602001828054610727906123b5565b80156107745780601f1061074957610100808354040283529160200191610774565b820191906000526020600020905b81548152906001019060200180831161075757829003601f168201915b5050505050905090565b600061078b338484611178565b5060015b92915050565b60006107a284848461132b565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033845290915290205482811015610863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000606482015260840161065f565b6108708533858403611178565b506001949350505050565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461096a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015260640161065f565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556000908152600a6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560405173ffffffffffffffffffffffffffffffffffffffff821681527f9df2188765ac379366bdf3bf48f56bb4f96e2b5b7148371f88cf7149b7742cdd906020016106e1565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161078b918590610a6e908690612408565b611178565b610a7d3382611726565b60408051338152602081018390527f1af5163f80e79b5e554f61e1d052084d3a3fe1166e42a265798c4e2ddce8ffa291016106e1565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b610af7611913565b610b016000611949565b565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610ba2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015260640161065f565b306000908152602081905260409020548111158015610bc15750600081115b610c27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f57726f6e6720616d6f756e740000000000000000000000000000000000000000604482015260640161065f565b60085460ff16610c9057600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610c65816119af565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905550565b6040517fc958536a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6060600480546106fb906123b5565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205482811015610d95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161065f565b610da23385858403611178565b5060019392505050565b60003373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610e4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a65640000000000000000000000000000000000000000604482015260640161065f565b6005547501000000000000000000000000000000000000000000900460ff1615610ed3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f206d6f7265206d696e74696e670000000000000000000000000000000000604482015260640161065f565b60075482610ee060025490565b610eea9190612408565b1115610f52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6578636565647320737570706c79000000000000000000000000000000000000604482015260640161065f565b610f5c8383611bf6565b6007546002540361078b5761078b611d17565b600061078b33848461132b565b610f84611913565b60055474010000000000000000000000000000000000000000900460ff1615611009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f416c726561647920626567756e00000000000000000000000000000000000000604482015260640161065f565b600580547fffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000004267ffffffffffffffff9081168202929092179283905561106f92610384929190041661241b565b6006805467ffffffffffffffff929092167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909216919091179055600580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556040517f19eb523ff0a66e6c369d2a0c1e54c8b7d856b16ff8029f75280cf9f65bfc02cd90600090a1565b61111c611913565b63389a75e1600c52806000526020600c20805442111561114457636f5e88186000526004601cfd5b60009055610cc281611949565b611159611913565b8060601b61116f57637448fbae6000526004601cfd5b610cc281611949565b73ffffffffffffffffffffffffffffffffffffffff831661121a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff82166112bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b806000036113445761133f83836000611d82565b505050565b60055474010000000000000000000000000000000000000000900460ff16156115ca5773ffffffffffffffffffffffffffffffffffffffff82166000908152600a6020908152604080832054600b9092529091205460ff91821691168115801561140357506103e86113b560025490565b6113c0906019612443565b6113ca91906123a1565b836113f78673ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6114019190612408565b115b1561143a576040517f424d6cc700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3060009081526020819052604090205460095481108015908190611461575060085460ff16155b801561146a5750825b1561150f57436000908152600c60205260409020546003111561150f57600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556114bb82612036565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055436000908152600c60205260409020546114fe906001612408565b436000908152600c60205260409020555b828015611542575073ffffffffffffffffffffffffffffffffffffffff87166000908152600a602052604090205460ff16155b8061157b575073ffffffffffffffffffffffffffffffffffffffff87166000908152600b602052604090205460ff16801561157b575083155b156115b657600061158c8685612096565b9050611599883083611d82565b6115a3818761245a565b95506115b0888888611d82565b506115c1565b6115c1878787611d82565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316158061163857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061168e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806116e457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156116f45761133f838383611d82565b6040517f16d684f600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166117c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020548181101561187f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208383039055600280548492906118bb90849061245a565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b01576382b429006000526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106119e4576119e461246d565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aad919061249c565b81600181518110611ac057611ac061246d565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b25307f000000000000000000000000000000000000000000000000000000000000000084611178565b6040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611bc090859060009086907f00000000000000000000000000000000000000000000000000000000000000009042906004016124b9565b600060405180830381600087803b158015611bda57600080fd5b505af1158015611bee573d6000803e3d6000fd5b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216611c73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161065f565b8060026000828254611c859190612408565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290611cbf908490612408565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b5050565b600580547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040517f7be9badbf9fba52cc4d59989c81f80d9dd24cef9b8e9ef16c469274ae3809a8790600090a1565b73ffffffffffffffffffffffffffffffffffffffff8316611e25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff8216611ec8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015611f7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290611fc2908490612408565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161202891815260200190565b60405180910390a350505050565b806000036120415750565b7f000000000000000000000000000000000000000000000000000000000000000081111561208c57507f00000000000000000000000000000000000000000000000000000000000000005b80611d13816119af565b60065460009067ffffffffffffffff908116904290839082168311156121b0576005546000906120ea90760100000000000000000000000000000000000000000000900467ffffffffffffffff1685612544565b6120f48486612544565b6120ff906064612565565b6121099190612591565b67ffffffffffffffff1690506042811061213b57606461212a88601e612443565b61213491906123a1565b91506121a5565b60428110801561214b5750602181115b1561217057851561216357606461212a886014612443565b606461212a88600a612443565b602181116121a557851561218b57606461212a88600a612443565b6064612198886005612443565b6121a291906123a1565b91505b50925061078f915050565b60646121bd876005612443565b6121c791906123a1565b935061078f92505050565b6000602082840312156121e457600080fd5b5035919050565b600060208083528351808285015260005b81811015612218578581018301518582016040015282016121fc565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610cc257600080fd5b6000806040838503121561228c57600080fd5b823561229781612257565b946020939093013593505050565b6000806000606084860312156122ba57600080fd5b83356122c581612257565b925060208401356122d581612257565b929592945050506040919091013590565b6000602082840312156122f857600080fd5b813561230381612257565b9392505050565b6000806040838503121561231d57600080fd5b823561232881612257565b9150602083013561233881612257565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000826123b0576123b0612343565b500490565b600181811c908216806123c957607f821691505b602082108103612402577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561078f5761078f612372565b67ffffffffffffffff81811683821601908082111561243c5761243c612372565b5092915050565b808202811582820484141761078f5761078f612372565b8181038181111561078f5761078f612372565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156124ae57600080fd5b815161230381612257565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561251657845173ffffffffffffffffffffffffffffffffffffffff16835293830193918301916001016124e4565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b67ffffffffffffffff82811682821603908082111561243c5761243c612372565b67ffffffffffffffff81811683821602808216919082811461258957612589612372565b505092915050565b600067ffffffffffffffff808416806125ac576125ac612343565b9216919091049291505056fea264697066735822122083762292e5bbbb22085b4757a4cafbdf4be034af262aa316e72d42a948cda45264736f6c63430008140033000000000000000000000000c8b612fa3e2670c4355d510fa572dec1285f86400000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000000000000000000000000000000000000000000034000000000000000000000000321847122142b1ec20df45821464157a0d1cafe4

Deployed Bytecode

0x6080604052600436106101b75760003560e01c8063881dce60116100ec578063b8e010de1161008a578063f04e283e11610064578063f04e283e14610537578063f2fde38b1461054a578063fdea8e0b1461055d578063fee81cf41461059157600080fd5b8063b8e010de1461049c578063c408c245146104cf578063dd62ed3e146104e457600080fd5b806395d89b41116100c657806395d89b4114610427578063a457c2d71461043c578063a7862c561461045c578063a9059cbb1461047c57600080fd5b8063881dce60146103a15780638da5cb5b146103c1578063957aa58c146103f557600080fd5b8063313ce567116101595780634cf088d9116101335780634cf088d9146102fc57806354d1f13d1461034e57806370a0823114610356578063715018a61461039957600080fd5b8063313ce567146102a057806339509351146102bc57806342966c68146102dc57600080fd5b806318160ddd1161019557806318160ddd1461023957806323b872dd14610258578063256929621461027857806329e6b5861461028057600080fd5b806304c2754d146101bc57806306fdde03146101de578063095ea7b314610209575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046121d2565b6105c4565b005b3480156101ea57600080fd5b506101f36106ec565b60405161020091906121eb565b60405180910390f35b34801561021557600080fd5b50610229610224366004612279565b61077e565b6040519015158152602001610200565b34801561024557600080fd5b506002545b604051908152602001610200565b34801561026457600080fd5b506102296102733660046122a5565b610795565b6101dc61087b565b34801561028c57600080fd5b506101dc61029b3660046122e6565b6108cb565b3480156102ac57600080fd5b5060405160128152602001610200565b3480156102c857600080fd5b506102296102d7366004612279565b610a2a565b3480156102e857600080fd5b506101dc6102f73660046121d2565b610a73565b34801561030857600080fd5b506005546103299073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610200565b6101dc610ab3565b34801561036257600080fd5b5061024a6103713660046122e6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101dc610aef565b3480156103ad57600080fd5b506101dc6103bc3660046121d2565b610b03565b3480156103cd57600080fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610329565b34801561040157600080fd5b506005546102299074010000000000000000000000000000000000000000900460ff1681565b34801561043357600080fd5b506101f3610cc5565b34801561044857600080fd5b50610229610457366004612279565b610cd4565b34801561046857600080fd5b50610229610477366004612279565b610dac565b34801561048857600080fd5b50610229610497366004612279565b610f6f565b3480156104a857600080fd5b50600554610229907501000000000000000000000000000000000000000000900460ff1681565b3480156104db57600080fd5b506101dc610f7c565b3480156104f057600080fd5b5061024a6104ff36600461230a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101dc6105453660046122e6565b611114565b6101dc6105583660046122e6565b611151565b34801561056957600080fd5b506103297f000000000000000000000000c8b612fa3e2670c4355d510fa572dec1285f864081565b34801561059d57600080fd5b5061024a6105ac3660046122e6565b63389a75e1600c908152600091909152602090205490565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000321847122142b1ec20df45821464157a0d1cafe41614610668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a6564000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6301312d0060075461067a91906123a1565b811180156106a757507f00000000000000000000000000000000000000000014adf4b7320334b900000081105b6106b057600080fd5b60098190556040518181527f9b974812a379eb5931633dc2560f78ae5fadaabeee527fcc2a22e8c9fbe40b74906020015b60405180910390a150565b6060600380546106fb906123b5565b80601f0160208091040260200160405190810160405280929190818152602001828054610727906123b5565b80156107745780601f1061074957610100808354040283529160200191610774565b820191906000526020600020905b81548152906001019060200180831161075757829003601f168201915b5050505050905090565b600061078b338484611178565b5060015b92915050565b60006107a284848461132b565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033845290915290205482811015610863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000606482015260840161065f565b6108708533858403611178565b506001949350505050565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000321847122142b1ec20df45821464157a0d1cafe4161461096a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015260640161065f565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556000908152600a6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560405173ffffffffffffffffffffffffffffffffffffffff821681527f9df2188765ac379366bdf3bf48f56bb4f96e2b5b7148371f88cf7149b7742cdd906020016106e1565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161078b918590610a6e908690612408565b611178565b610a7d3382611726565b60408051338152602081018390527f1af5163f80e79b5e554f61e1d052084d3a3fe1166e42a265798c4e2ddce8ffa291016106e1565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b610af7611913565b610b016000611949565b565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000321847122142b1ec20df45821464157a0d1cafe41614610ba2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015260640161065f565b306000908152602081905260409020548111158015610bc15750600081115b610c27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f57726f6e6720616d6f756e740000000000000000000000000000000000000000604482015260640161065f565b60085460ff16610c9057600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610c65816119af565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905550565b6040517fc958536a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6060600480546106fb906123b5565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205482811015610d95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161065f565b610da23385858403611178565b5060019392505050565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c8b612fa3e2670c4355d510fa572dec1285f86401614610e4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a65640000000000000000000000000000000000000000604482015260640161065f565b6005547501000000000000000000000000000000000000000000900460ff1615610ed3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f206d6f7265206d696e74696e670000000000000000000000000000000000604482015260640161065f565b60075482610ee060025490565b610eea9190612408565b1115610f52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6578636565647320737570706c79000000000000000000000000000000000000604482015260640161065f565b610f5c8383611bf6565b6007546002540361078b5761078b611d17565b600061078b33848461132b565b610f84611913565b60055474010000000000000000000000000000000000000000900460ff1615611009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f416c726561647920626567756e00000000000000000000000000000000000000604482015260640161065f565b600580547fffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000004267ffffffffffffffff9081168202929092179283905561106f92610384929190041661241b565b6006805467ffffffffffffffff929092167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909216919091179055600580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556040517f19eb523ff0a66e6c369d2a0c1e54c8b7d856b16ff8029f75280cf9f65bfc02cd90600090a1565b61111c611913565b63389a75e1600c52806000526020600c20805442111561114457636f5e88186000526004601cfd5b60009055610cc281611949565b611159611913565b8060601b61116f57637448fbae6000526004601cfd5b610cc281611949565b73ffffffffffffffffffffffffffffffffffffffff831661121a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff82166112bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b806000036113445761133f83836000611d82565b505050565b60055474010000000000000000000000000000000000000000900460ff16156115ca5773ffffffffffffffffffffffffffffffffffffffff82166000908152600a6020908152604080832054600b9092529091205460ff91821691168115801561140357506103e86113b560025490565b6113c0906019612443565b6113ca91906123a1565b836113f78673ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6114019190612408565b115b1561143a576040517f424d6cc700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3060009081526020819052604090205460095481108015908190611461575060085460ff16155b801561146a5750825b1561150f57436000908152600c60205260409020546003111561150f57600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556114bb82612036565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055436000908152600c60205260409020546114fe906001612408565b436000908152600c60205260409020555b828015611542575073ffffffffffffffffffffffffffffffffffffffff87166000908152600a602052604090205460ff16155b8061157b575073ffffffffffffffffffffffffffffffffffffffff87166000908152600b602052604090205460ff16801561157b575083155b156115b657600061158c8685612096565b9050611599883083611d82565b6115a3818761245a565b95506115b0888888611d82565b506115c1565b6115c1878787611d82565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316158061163857507f000000000000000000000000c8b612fa3e2670c4355d510fa572dec1285f864073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061168e57507f000000000000000000000000c8b612fa3e2670c4355d510fa572dec1285f864073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806116e457507f000000000000000000000000000000000000000000000000000000000000dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156116f45761133f838383611d82565b6040517f16d684f600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166117c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020548181101561187f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208383039055600280548492906118bb90849061245a565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b01576382b429006000526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106119e4576119e461246d565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aad919061249c565b81600181518110611ac057611ac061246d565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b25307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611178565b6040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611bc090859060009086907f000000000000000000000000321847122142b1ec20df45821464157a0d1cafe49042906004016124b9565b600060405180830381600087803b158015611bda57600080fd5b505af1158015611bee573d6000803e3d6000fd5b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216611c73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161065f565b8060026000828254611c859190612408565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290611cbf908490612408565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b5050565b600580547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040517f7be9badbf9fba52cc4d59989c81f80d9dd24cef9b8e9ef16c469274ae3809a8790600090a1565b73ffffffffffffffffffffffffffffffffffffffff8316611e25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff8216611ec8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015611f7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290611fc2908490612408565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161202891815260200190565b60405180910390a350505050565b806000036120415750565b7f00000000000000000000000000000000000000000014adf4b7320334b900000081111561208c57507f00000000000000000000000000000000000000000014adf4b7320334b90000005b80611d13816119af565b60065460009067ffffffffffffffff908116904290839082168311156121b0576005546000906120ea90760100000000000000000000000000000000000000000000900467ffffffffffffffff1685612544565b6120f48486612544565b6120ff906064612565565b6121099190612591565b67ffffffffffffffff1690506042811061213b57606461212a88601e612443565b61213491906123a1565b91506121a5565b60428110801561214b5750602181115b1561217057851561216357606461212a886014612443565b606461212a88600a612443565b602181116121a557851561218b57606461212a88600a612443565b6064612198886005612443565b6121a291906123a1565b91505b50925061078f915050565b60646121bd876005612443565b6121c791906123a1565b935061078f92505050565b6000602082840312156121e457600080fd5b5035919050565b600060208083528351808285015260005b81811015612218578581018301518582016040015282016121fc565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610cc257600080fd5b6000806040838503121561228c57600080fd5b823561229781612257565b946020939093013593505050565b6000806000606084860312156122ba57600080fd5b83356122c581612257565b925060208401356122d581612257565b929592945050506040919091013590565b6000602082840312156122f857600080fd5b813561230381612257565b9392505050565b6000806040838503121561231d57600080fd5b823561232881612257565b9150602083013561233881612257565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000826123b0576123b0612343565b500490565b600181811c908216806123c957607f821691505b602082108103612402577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561078f5761078f612372565b67ffffffffffffffff81811683821601908082111561243c5761243c612372565b5092915050565b808202811582820484141761078f5761078f612372565b8181038181111561078f5761078f612372565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156124ae57600080fd5b815161230381612257565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561251657845173ffffffffffffffffffffffffffffffffffffffff16835293830193918301916001016124e4565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b67ffffffffffffffff82811682821603908082111561243c5761243c612372565b67ffffffffffffffff81811683821602808216919082811461258957612589612372565b505092915050565b600067ffffffffffffffff808416806125ac576125ac612343565b9216919091049291505056fea264697066735822122083762292e5bbbb22085b4757a4cafbdf4be034af262aa316e72d42a948cda45264736f6c63430008140033

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

000000000000000000000000c8b612fa3e2670c4355d510fa572dec1285f86400000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000000000000000000000000000000000000000000034000000000000000000000000321847122142b1ec20df45821464157a0d1cafe4

-----Decoded View---------------
Arg [0] : _presale (address): 0xc8b612fa3E2670c4355d510Fa572dEc1285f8640
Arg [1] : _totalSup (uint256): 1000000000000000000000000000
Arg [2] : _lpAllo (uint8): 52
Arg [3] : _team (address): 0x321847122142b1eC20Df45821464157A0d1cAfE4

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000c8b612fa3e2670c4355d510fa572dec1285f8640
Arg [1] : 0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000034
Arg [3] : 000000000000000000000000321847122142b1ec20df45821464157a0d1cafe4


Deployed Bytecode Sourcemap

20460:7967:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22964:288;;;;;;;;;;-1:-1:-1;22964:288:0;;;;;:::i;:::-;;:::i;:::-;;3213:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4125:167;;;;;;;;;;-1:-1:-1;4125:167:0;;;;;:::i;:::-;;:::i;:::-;;;1455:14:1;;1448:22;1430:41;;1418:2;1403:18;4125:167:0;1290:187:1;3534:108:0;;;;;;;;;;-1:-1:-1;3622:12:0;;3534:108;;;1628:25:1;;;1616:2;1601:18;3534:108:0;1482:177:1;4300:454:0;;;;;;;;;;-1:-1:-1;4300:454:0;;;;;:::i;:::-;;:::i;16841:630::-;;;:::i;22646:226::-;;;;;;;;;;-1:-1:-1;22646:226:0;;;;;:::i;:::-;;:::i;3433:93::-;;;;;;;;;;-1:-1:-1;3433:93:0;;3516:2;2519:36:1;;2507:2;2492:18;3433:93:0;2377:184:1;4762:211:0;;;;;;;;;;-1:-1:-1;4762:211:0;;;;;:::i;:::-;;:::i;24178:127::-;;;;;;;;;;-1:-1:-1;24178:127:0;;;;;:::i;:::-;;:::i;20781:22::-;;;;;;;;;;-1:-1:-1;20781:22:0;;;;;;;;;;;2742:42:1;2730:55;;;2712:74;;2700:2;2685:18;20781:22:0;2566:226:1;17556:466:0;;;:::i;3650:127::-;;;;;;;;;;-1:-1:-1;3650:127:0;;;;;:::i;:::-;3751:18;;3724:7;3751:18;;;;;;;;;;;;3650:127;16576:102;;;:::i;23260:392::-;;;;;;;;;;-1:-1:-1;23260:392:0;;;;;:::i;:::-;;:::i;19281:187::-;;;;;;;;;;-1:-1:-1;19438:11:0;19432:18;19281:187;;20810:16;;;;;;;;;;-1:-1:-1;20810:16:0;;;;;;;;;;;3321:104;;;;;;;;;;;;;:::i;4981:409::-;;;;;;;;;;-1:-1:-1;4981:409:0;;;;;:::i;:::-;;:::i;23792:378::-;;;;;;;;;;-1:-1:-1;23792:378:0;;;;;:::i;:::-;;:::i;3785:173::-;;;;;;;;;;-1:-1:-1;3785:173:0;;;;;:::i;:::-;;:::i;20833:15::-;;;;;;;;;;-1:-1:-1;20833:15:0;;;;;;;;;;;22403:235;;;;;;;;;;;;;:::i;3966:151::-;;;;;;;;;;-1:-1:-1;3966:151:0;;;;;:::i;:::-;4082:18;;;;4055:7;4082:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3966:151;18213:724;;;;;;:::i;:::-;;:::i;16150:358::-;;;;;;:::i;:::-;;:::i;20742:32::-;;;;;;;;;;;;;;;19574:449;;;;;;;;;;-1:-1:-1;19574:449:0;;;;;:::i;:::-;19853:19;19847:4;19840:33;;;19697:14;19887:26;;;;19999:4;19983:21;;19977:28;;19574:449;22964:288;23035:10;:29;23049:15;23035:29;;23027:54;;;;;;;3392:2:1;23027:54:0;;;3374:21:1;3431:2;3411:18;;;3404:30;3470:14;3450:18;;;3443:42;3502:18;;23027:54:0;;;;;;;;;23115:8;23109:3;;:14;;;;:::i;:::-;23100:6;:23;:43;;;;;23136:7;23127:6;:16;23100:43;23092:52;;;;;;23173:18;:27;;;23216:28;;1628:25:1;;;23216:28:0;;1616:2:1;1601:18;23216:28:0;;;;;;;;22964:288;:::o;3213:100::-;3267:13;3300:5;3293:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3213:100;:::o;4125:167::-;4208:4;4225:37;4234:10;4246:7;4255:6;4225:8;:37::i;:::-;-1:-1:-1;4280:4:0;4125:167;;;;;:::o;4300:454::-;4406:4;4423:36;4433:6;4441:9;4452:6;4423:9;:36::i;:::-;4499:19;;;4472:24;4499:19;;;:11;:19;;;;;;;;4519:10;4499:31;;;;;;;;4549:26;;;;4541:79;;;;;;;4678:2:1;4541:79:0;;;4660:21:1;4717:2;4697:18;;;4690:30;4756:34;4736:18;;;4729:62;4827:10;4807:18;;;4800:38;4855:19;;4541:79:0;4476:404:1;4541:79:0;4656:55;4665:6;4673:10;4704:6;4685:16;:25;4656:8;:55::i;:::-;-1:-1:-1;4742:4:0;;4300:454;-1:-1:-1;;;;4300:454:0:o;16841:630::-;16936:15;15766:9;16954:46;;:15;:46;16936:64;;17172:19;17166:4;17159:33;17223:8;17217:4;17210:22;17280:7;17273:4;17267;17257:21;17250:38;17429:8;17382:45;17379:1;17376;17371:67;17072:381;16841:630::o;22646:226::-;22714:10;:29;22728:15;22714:29;;22706:54;;;;;;;3392:2:1;22706:54:0;;;3374:21:1;3431:2;3411:18;;;3404:30;3470:14;3450:18;;;3443:42;3502:18;;22706:54:0;3190:336:1;22706:54:0;22771:7;:18;;;;;;;;;;;;;-1:-1:-1;25389:15:0;;;:10;:15;;;;;:21;;;;-1:-1:-1;25389:21:0;;;22838:26;;2742:42:1;2730:55;;2712:74;;22838:26:0;;2700:2:1;2685:18;22838:26:0;2566:226:1;4762:211:0;4876:10;4850:4;4897:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;4850:4;;4867:76;;4888:7;;4897:45;;4932:10;;4897:45;:::i;:::-;4867:8;:76::i;24178:127::-;24227:24;24233:10;24245:5;24227;:24::i;:::-;24267:30;;;24279:10;5189:74:1;;5294:2;5279:18;;5272:34;;;24267:30:0;;5162:18:1;24267:30:0;5015:297:1;17556:466:0;17762:19;17756:4;17749:33;17809:8;17803:4;17796:22;17862:1;17855:4;17849;17839:21;17832:32;17995:8;17949:44;17946:1;17943;17938:66;17556:466::o;16576:102::-;20420:13;:11;:13::i;:::-;16649:21:::1;16667:1;16649:9;:21::i;:::-;16576:102::o:0;23260:392::-;23324:10;:29;23338:15;23324:29;;23316:54;;;;;;;3392:2:1;23316:54:0;;;3374:21:1;3431:2;3411:18;;;3404:30;3470:14;3450:18;;;3443:42;3502:18;;23316:54:0;3190:336:1;23316:54:0;23417:4;3724:7;3751:18;;;;;;;;;;;23389:6;:34;;:48;;;;;23436:1;23427:6;:10;23389:48;23381:73;;;;;;;5519:2:1;23381:73:0;;;5501:21:1;5558:2;5538:18;;;5531:30;5597:14;5577:18;;;5570:42;5629:18;;23381:73:0;5317:336:1;23381:73:0;23469:8;;;;23465:180;;23493:8;:15;;;;23504:4;23493:15;;;23523:24;23540:6;23523:16;:24::i;:::-;23562:8;:16;;;;;;23260:392;:::o;23465:180::-;23616:17;;;;;;;;;;;;;;23465:180;23260:392;:::o;3321:104::-;3377:13;3410:7;3403:14;;;;;:::i;4981:409::-;5130:10;5074:4;5118:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;5169:35;;;;5161:85;;;;;;;5860:2:1;5161:85:0;;;5842:21:1;5899:2;5879:18;;;5872:30;5938:34;5918:18;;;5911:62;6009:7;5989:18;;;5982:35;6034:19;;5161:85:0;5658:401:1;5161:85:0;5282:65;5291:10;5303:7;5331:15;5312:16;:34;5282:8;:65::i;:::-;-1:-1:-1;5378:4:0;;4981:409;-1:-1:-1;;;4981:409:0:o;23792:378::-;23861:4;23885:10;:21;23899:7;23885:21;;23877:46;;;;;;;6266:2:1;23877:46:0;;;6248:21:1;6305:2;6285:18;;;6278:30;6344:14;6324:18;;;6317:42;6376:18;;23877:46:0;6064:336:1;23877:46:0;23942:3;;;;;;;:12;23934:40;;;;;;;6607:2:1;23934:40:0;;;6589:21:1;6646:2;6626:18;;;6619:30;6685:17;6665:18;;;6658:45;6720:18;;23934:40:0;6405:339:1;23934:40:0;24018:3;;24009:5;23993:13;3622:12;;;3534:108;23993:13;:21;;;;:::i;:::-;:28;;23985:55;;;;;;;6951:2:1;23985:55:0;;;6933:21:1;6990:2;6970:18;;;6963:30;7029:16;7009:18;;;7002:44;7063:18;;23985:55:0;6749:338:1;23985:55:0;24051:18;24057:5;24063;24051;:18::i;:::-;24100:3;;3622:12;;24083:20;24080:61;;24119:10;:8;:10::i;3785:173::-;3871:4;3888:40;3898:10;3910:9;3921:6;3888:9;:40::i;22403:235::-;20420:13;:11;:13::i;:::-;22466:4:::1;::::0;;;::::1;;;22465:5;22457:31;;;::::0;::::1;::::0;;7294:2:1;22457:31:0::1;::::0;::::1;7276:21:1::0;7333:2;7313:18;;;7306:30;7372:15;7352:18;;;7345:43;7405:18;;22457:31:0::1;7092:337:1::0;22457:31:0::1;22499:5;:31:::0;;;::::1;::::0;22514:15:::1;22499:31;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;22551:26:::1;::::0;22566:10:::1;::::0;22551:5;;::::1;;:26;:::i;:::-;22541:7;:36:::0;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;22588:4:::1;:11:::0;;;::::1;::::0;::::1;::::0;;22615:15:::1;::::0;::::1;::::0;22541:7:::1;::::0;22615:15:::1;22403:235::o:0;18213:724::-;20420:13;:11;:13::i;:::-;18451:19:::1;18445:4;18438:33;18498:12;18492:4;18485:26;18561:4;18555;18545:21;18669:12;18663:19;18650:11;18647:36;18644:160;;;18716:10;18710:4;18703:24;18784:4;18778;18771:18;18644:160;18883:1;18862:23:::0;;18906::::1;18916:12:::0;18906:9:::1;:23::i;16150:358::-:0;20420:13;:11;:13::i;:::-;16325:8:::1;16321:2;16317:17;16307:153;;16368:10;16362:4;16355:24;16440:4;16434;16427:18;16307:153;16481:19;16491:8;16481:9;:19::i;7111:346::-:0;7213:19;;;7205:68;;;;;;;7821:2:1;7205:68:0;;;7803:21:1;7860:2;7840:18;;;7833:30;7899:34;7879:18;;;7872:62;7970:6;7950:18;;;7943:34;7994:19;;7205:68:0;7619:400:1;7205:68:0;7292:21;;;7284:68;;;;;;;8226:2:1;7284:68:0;;;8208:21:1;8265:2;8245:18;;;8238:30;8304:34;8284:18;;;8277:62;8375:4;8355:18;;;8348:32;8397:19;;7284:68:0;8024:398:1;7284:68:0;7365:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7417:32;;1628:25:1;;;7417:32:0;;1601:18:1;7417:32:0;;;;;;;7111:346;;;:::o;26714:1710::-;26808:6;26818:1;26808:11;26804:93;;26836:28;26852:4;26858:2;26862:1;26836:15;:28::i;:::-;26714:1710;;;:::o;26804:93::-;26920:4;;;;;;;26917:1483;;;26958:14;;;26940:15;26958:14;;;:10;:14;;;;;;;;;27001:6;:10;;;;;;;26958:14;;;;;27001:10;27089:11;;:66;;;;;27151:4;27130:13;3622:12;;;3534:108;27130:13;:18;;27146:2;27130:18;:::i;:::-;:25;;;;:::i;:::-;27120:6;27104:13;27114:2;3751:18;;3724:7;3751:18;;;;;;;;;;;;3650:127;27104:13;:22;;;;:::i;:::-;:51;27089:66;27086:131;;;27182:19;;;;;;;;;;;;;;27086:131;27282:4;27233:28;3751:18;;;;;;;;;;;27342;;27318:42;;;;;;;27397:20;;-1:-1:-1;27409:8:0;;;;27408:9;27397:20;:30;;;;;27421:6;27397:30;27375:398;;;27511:12;27500:24;;;;:10;:24;;;;;;27527:1;-1:-1:-1;27496:262:0;;;27553:8;:15;;;;27564:4;27553:15;;;27591:30;27600:20;27591:8;:30::i;:::-;27644:8;:16;;;;;;27721:12;27655:5;27710:24;;;:10;:24;;;;;;:28;;27644:16;27710:28;:::i;:::-;27694:12;27683:24;;;;:10;:24;;;;;:55;27496:262;27793:6;:27;;;;-1:-1:-1;27804:16:0;;;;;;;:10;:16;;;;;;;;27803:17;27793:27;27792:62;;;-1:-1:-1;27826:12:0;;;;;;;:6;:12;;;;;;;;:27;;;;;27843:10;27842:11;27826:27;27789:360;;;27874:11;27888:29;27902:6;27910;27888:13;:29::i;:::-;27874:43;;27936:41;27952:4;27966;27973:3;27936:15;:41::i;:::-;27996:13;28006:3;27996:13;;:::i;:::-;;;28028:33;28044:4;28050:2;28054:6;28028:15;:33::i;:::-;27855:222;27789:360;;;28100:33;28116:4;28122:2;28126:6;28100:15;:33::i;:::-;26925:1235;;;;26714:1710;;;:::o;26917:1483::-;28182:18;;;;;:37;;;28212:7;28204:15;;:4;:15;;;28182:37;:54;;;;28229:7;28223:13;;:2;:13;;;28182:54;:75;;;;28246:11;28240:17;;:2;:17;;;28182:75;28179:210;;;28278:33;28294:4;28300:2;28304:6;28278:15;:33::i;28179:210::-;28357:16;;;;;;;;;;;;;;6512:591;6596:21;;;6588:67;;;;;;;8935:2:1;6588:67:0;;;8917:21:1;8974:2;8954:18;;;8947:30;9013:34;8993:18;;;8986:62;9084:3;9064:18;;;9057:31;9105:19;;6588:67:0;8733:397:1;6588:67:0;6755:18;;;6730:22;6755:18;;;;;;;;;;;6792:24;;;;6784:71;;;;;;;9337:2:1;6784:71:0;;;9319:21:1;9376:2;9356:18;;;9349:30;9415:34;9395:18;;;9388:62;9486:4;9466:18;;;9459:32;9508:19;;6784:71:0;9135:398:1;6784:71:0;6891:18;;;:9;:18;;;;;;;;;;6912:23;;;6891:44;;6957:12;:22;;6929:6;;6891:9;6957:22;;6929:6;;6957:22;:::i;:::-;;;;-1:-1:-1;;6997:37:0;;1628:25:1;;;7023:1:0;;6997:37;;;;;;1616:2:1;1601:18;6997:37:0;;;;;;;26714:1710;;;:::o;15071:364::-;15287:11;15281:18;15271:8;15268:32;15258:159;;15334:10;15328:4;15321:24;15397:4;15391;15384:18;13897:1113;14624:11;14864:16;;14710:26;;;;;;;14824:38;14821:1;;14813:78;14950:27;13897:1113::o;24644:591::-;24794:16;;;24808:1;24794:16;;;;;;;;24770:21;;24794:16;;;;;;;;;;-1:-1:-1;24794:16:0;24770:40;;24839:4;24821;24826:1;24821:7;;;;;;;;:::i;:::-;;;;;;:23;;;;;;;;;;;24865:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24855:4;24860:1;24855:7;;;;;;;;:::i;:::-;;;;;;:32;;;;;;;;;;;24900:62;24917:4;24932:15;24950:11;24900:8;:62::i;:::-;25001:226;;;;;:66;:15;:66;;;;:226;;25082:11;;25108:1;;25152:4;;25171:15;;25201;;25001:226;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24699:536;24644:591;:::o;6105:399::-;6189:21;;;6181:65;;;;;;;11405:2:1;6181:65:0;;;11387:21:1;11444:2;11424:18;;;11417:30;11483:33;11463:18;;;11456:61;11534:18;;6181:65:0;11203:355:1;6181:65:0;6337:6;6321:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;6354:18:0;;;:9;:18;;;;;;;;;;:28;;6376:6;;6354:9;:28;;6376:6;;6354:28;:::i;:::-;;;;-1:-1:-1;;6398:37:0;;1628:25:1;;;6398:37:0;;;;6415:1;;6398:37;;1616:2:1;1601:18;6398:37:0;;;;;;;6448:48;6105:399;;:::o;25426:94::-;25466:3;:10;;;;;;;;25492:20;;;;25466:10;;25492:20;25426:94::o;5398:699::-;5504:20;;;5496:70;;;;;;;11765:2:1;5496:70:0;;;11747:21:1;11804:2;11784:18;;;11777:30;11843:34;11823:18;;;11816:62;11914:7;11894:18;;;11887:35;11939:19;;5496:70:0;11563:401:1;5496:70:0;5585:23;;;5577:71;;;;;;;12171:2:1;5577:71:0;;;12153:21:1;12210:2;12190:18;;;12183:30;12249:34;12229:18;;;12222:62;12320:5;12300:18;;;12293:33;12343:19;;5577:71:0;11969:399:1;5577:71:0;5745:17;;;5721:21;5745:17;;;;;;;;;;;5781:23;;;;5773:74;;;;;;;12575:2:1;5773:74:0;;;12557:21:1;12614:2;12594:18;;;12587:30;12653:34;12633:18;;;12626:62;12724:8;12704:18;;;12697:36;12750:19;;5773:74:0;12373:402:1;5773:74:0;5883:17;;;;:9;:17;;;;;;;;;;;5903:22;;;5883:42;;5947:20;;;;;;;;:30;;5919:6;;5883:9;5947:30;;5919:6;;5947:30;:::i;:::-;;;;;;;;6012:9;5995:35;;6004:6;5995:35;;;6023:6;5995:35;;;;1628:25:1;;1616:2;1601:18;;1482:177;5995:35:0;;;;;;;;5485:612;5398:699;;;:::o;24313:323::-;24379:15;24398:1;24379:20;24375:59;;24313:323;:::o;24375:59::-;24466:7;24448:15;:25;24444:83;;;-1:-1:-1;24508:7:0;24444:83;24566:15;24592:36;24566:15;24592:16;:36::i;25528:960::-;25636:7;;25603;;25636;;;;;25675:15;;25603:7;;25731:10;;;-1:-1:-1;25728:753:0;;;25806:5;;25757:15;;25800:11;;25806:5;;;;;25800:3;:11;:::i;:::-;25778:10;25784:4;25778:3;:10;:::i;:::-;25777:18;;25792:3;25777:18;:::i;:::-;25776:36;;;;:::i;:::-;25757:56;;;;25879:2;25868:7;:13;25865:500;;25921:3;25907:11;:6;25916:2;25907:11;:::i;:::-;:17;;;;:::i;:::-;25901:23;;25865:500;;;25960:2;25950:7;:12;:28;;;;;25976:2;25966:7;:12;25950:28;25946:419;;;26001:6;25998:147;;;26051:3;26037:11;:6;26046:2;26037:11;:::i;25998:147::-;26122:3;26108:11;:6;26117:2;26108:11;:::i;25946:419::-;26181:2;26170:7;:13;26166:199;;26207:6;26204:146;;;26257:3;26243:11;:6;26252:2;26243:11;:::i;26204:146::-;26327:3;26314:10;:6;26323:1;26314:10;:::i;:::-;:16;;;;:::i;:::-;26308:22;;26204:146;-1:-1:-1;26386:3:0;-1:-1:-1;26379:10:0;;-1:-1:-1;;26379:10:0;25728:753;26441:3;26428:10;:6;26437:1;26428:10;:::i;:::-;:16;;;;:::i;:::-;26422:22;-1:-1:-1;26459:10:0;;-1:-1:-1;;;26459:10:0;14:180:1;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:607::-;311:4;340:2;369;358:9;351:21;401:6;395:13;444:6;439:2;428:9;424:18;417:34;469:1;479:140;493:6;490:1;487:13;479:140;;;588:14;;;584:23;;578:30;554:17;;;573:2;550:26;543:66;508:10;;479:140;;;483:3;668:1;663:2;654:6;643:9;639:22;635:31;628:42;797:2;727:66;722:2;714:6;710:15;706:88;695:9;691:104;687:113;679:121;;;;199:607;;;;:::o;811:154::-;897:42;890:5;886:54;879:5;876:65;866:93;;955:1;952;945:12;970:315;1038:6;1046;1099:2;1087:9;1078:7;1074:23;1070:32;1067:52;;;1115:1;1112;1105:12;1067:52;1154:9;1141:23;1173:31;1198:5;1173:31;:::i;:::-;1223:5;1275:2;1260:18;;;;1247:32;;-1:-1:-1;;;970:315:1:o;1664:456::-;1741:6;1749;1757;1810:2;1798:9;1789:7;1785:23;1781:32;1778:52;;;1826:1;1823;1816:12;1778:52;1865:9;1852:23;1884:31;1909:5;1884:31;:::i;:::-;1934:5;-1:-1:-1;1991:2:1;1976:18;;1963:32;2004:33;1963:32;2004:33;:::i;:::-;1664:456;;2056:7;;-1:-1:-1;;;2110:2:1;2095:18;;;;2082:32;;1664:456::o;2125:247::-;2184:6;2237:2;2225:9;2216:7;2212:23;2208:32;2205:52;;;2253:1;2250;2243:12;2205:52;2292:9;2279:23;2311:31;2336:5;2311:31;:::i;:::-;2361:5;2125:247;-1:-1:-1;;;2125:247:1:o;2797:388::-;2865:6;2873;2926:2;2914:9;2905:7;2901:23;2897:32;2894:52;;;2942:1;2939;2932:12;2894:52;2981:9;2968:23;3000:31;3025:5;3000:31;:::i;:::-;3050:5;-1:-1:-1;3107:2:1;3092:18;;3079:32;3120:33;3079:32;3120:33;:::i;:::-;3172:7;3162:17;;;2797:388;;;;;:::o;3531:184::-;3583:77;3580:1;3573:88;3680:4;3677:1;3670:15;3704:4;3701:1;3694:15;3720:184;3772:77;3769:1;3762:88;3869:4;3866:1;3859:15;3893:4;3890:1;3883:15;3909:120;3949:1;3975;3965:35;;3980:18;;:::i;:::-;-1:-1:-1;4014:9:1;;3909:120::o;4034:437::-;4113:1;4109:12;;;;4156;;;4177:61;;4231:4;4223:6;4219:17;4209:27;;4177:61;4284:2;4276:6;4273:14;4253:18;4250:38;4247:218;;4321:77;4318:1;4311:88;4422:4;4419:1;4412:15;4450:4;4447:1;4440:15;4247:218;;4034:437;;;:::o;4885:125::-;4950:9;;;4971:10;;;4968:36;;;4984:18;;:::i;7434:180::-;7501:18;7539:10;;;7551;;;7535:27;;7574:11;;;7571:37;;;7588:18;;:::i;:::-;7571:37;7434:180;;;;:::o;8427:168::-;8500:9;;;8531;;8548:15;;;8542:22;;8528:37;8518:71;;8569:18;;:::i;8600:128::-;8667:9;;;8688:11;;;8685:37;;;8702:18;;:::i;9727:184::-;9779:77;9776:1;9769:88;9876:4;9873:1;9866:15;9900:4;9897:1;9890:15;9916:251;9986:6;10039:2;10027:9;10018:7;10014:23;10010:32;10007:52;;;10055:1;10052;10045:12;10007:52;10087:9;10081:16;10106:31;10131:5;10106:31;:::i;10172:1026::-;10434:4;10482:3;10471:9;10467:19;10513:6;10502:9;10495:25;10539:2;10577:6;10572:2;10561:9;10557:18;10550:34;10620:3;10615:2;10604:9;10600:18;10593:31;10644:6;10679;10673:13;10710:6;10702;10695:22;10748:3;10737:9;10733:19;10726:26;;10787:2;10779:6;10775:15;10761:29;;10808:1;10818:218;10832:6;10829:1;10826:13;10818:218;;;10897:13;;10912:42;10893:62;10881:75;;11011:15;;;;10976:12;;;;10854:1;10847:9;10818:218;;;-1:-1:-1;;11104:42:1;11092:55;;;;11087:2;11072:18;;11065:83;-1:-1:-1;;;11179:3:1;11164:19;11157:35;11053:3;10172:1026;-1:-1:-1;;;10172:1026:1:o;12780:183::-;12848:18;12899:10;;;12887;;;12883:27;;12922:12;;;12919:38;;;12937:18;;:::i;12968:257::-;13039:18;13089:10;;;13101;;;13085:27;13132:20;;;;13039:18;13171:24;;;13161:58;;13199:18;;:::i;:::-;13161:58;;12968:257;;;;:::o;13230:199::-;13269:1;13295:18;13340:2;13337:1;13333:10;13362:3;13352:37;;13369:18;;:::i;:::-;13407:10;;13403:20;;;;;13230:199;-1:-1:-1;;13230:199:1:o

Swarm Source

ipfs://83762292e5bbbb22085b4757a4cafbdf4be034af262aa316e72d42a948cda452

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.