ETH Price: $3,921.04 (+0.97%)

Contract

0xBc31802e3F11626C2d2b34AB809aD309610665fE
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve210887932024-10-31 23:04:5945 days ago1730415899IN
0xBc31802e...9610665fE
0 ETH0.000165826.84307713
Approve198587752024-05-13 4:41:59217 days ago1715575319IN
0xBc31802e...9610665fE
0 ETH0.000085063.50151196
Approve198526442024-05-12 8:07:11218 days ago1715501231IN
0xBc31802e...9610665fE
0 ETH0.000093093.84167404
Transfer198216652024-05-08 0:08:23222 days ago1715126903IN
0xBc31802e...9610665fE
0 ETH0.000416065.67485018
Approve189097972024-01-01 3:03:23350 days ago1704078203IN
0xBc31802e...9610665fE
0 ETH0.0004975710.77434535
Approve189060112023-12-31 14:18:59350 days ago1704032339IN
0xBc31802e...9610665fE
0 ETH0.0004362118.00074737
Approve188889222023-12-29 4:40:35353 days ago1703824835IN
0xBc31802e...9610665fE
0 ETH0.0009193819.76450956
Approve188889172023-12-29 4:39:35353 days ago1703824775IN
0xBc31802e...9610665fE
0 ETH0.0009013519.48756191
Approve187783962023-12-13 16:19:59368 days ago1702484399IN
0xBc31802e...9610665fE
0 ETH0.0015049661.95049219
Approve187236532023-12-06 0:15:23376 days ago1701821723IN
0xBc31802e...9610665fE
0 ETH0.0025654855.15149842
Transfer185934282023-11-17 18:36:47394 days ago1700246207IN
0xBc31802e...9610665fE
0 ETH0.0025388934.62846888
Transfer184681962023-10-31 6:02:23412 days ago1698732143IN
0xBc31802e...9610665fE
0 ETH0.0011010715.01776188
Approve184681002023-10-31 5:42:59412 days ago1698730979IN
0xBc31802e...9610665fE
0 ETH0.0004352717.91757961
Approve184358672023-10-26 17:25:59416 days ago1698341159IN
0xBc31802e...9610665fE
0 ETH0.0017589737.81363525
Approve184293212023-10-25 19:26:11417 days ago1698261971IN
0xBc31802e...9610665fE
0 ETH0.0021411245.96947662
Approve184258112023-10-25 7:37:11418 days ago1698219431IN
0xBc31802e...9610665fE
0 ETH0.0004134817.02078602
Approve184098412023-10-23 1:55:35420 days ago1698026135IN
0xBc31802e...9610665fE
0 ETH0.0004798710.30553654
Approve183979252023-10-21 9:55:23422 days ago1697882123IN
0xBc31802e...9610665fE
0 ETH0.000325227.04046779
Approve183971522023-10-21 7:19:59422 days ago1697872799IN
0xBc31802e...9610665fE
0 ETH0.000406348.72407432
Approve183807742023-10-19 0:21:11424 days ago1697674871IN
0xBc31802e...9610665fE
0 ETH0.000289736.22862098
Approve183619372023-10-16 9:07:35427 days ago1697447255IN
0xBc31802e...9610665fE
0 ETH0.000334267.18577468
Approve182990422023-10-07 13:55:59435 days ago1696686959IN
0xBc31802e...9610665fE
0 ETH0.000166346.8643183
Approve182909042023-10-06 10:36:47437 days ago1696588607IN
0xBc31802e...9610665fE
0 ETH0.000322926.94201942
Approve182725102023-10-03 20:53:11439 days ago1696366391IN
0xBc31802e...9610665fE
0 ETH0.0010248722.003877
Approve182703292023-10-03 13:32:23439 days ago1696339943IN
0xBc31802e...9610665fE
0 ETH0.000492110.65334563
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
189097992024-01-01 3:03:47350 days ago1704078227
0xBc31802e...9610665fE
0.00159867 ETH
189097992024-01-01 3:03:47350 days ago1704078227
0xBc31802e...9610665fE
0.00159867 ETH
188889232023-12-29 4:40:47353 days ago1703824847
0xBc31802e...9610665fE
0.00086083 ETH
188889232023-12-29 4:40:47353 days ago1703824847
0xBc31802e...9610665fE
0.00086083 ETH
187236552023-12-06 0:15:47376 days ago1701821747
0xBc31802e...9610665fE
0.00118163 ETH
187236552023-12-06 0:15:47376 days ago1701821747
0xBc31802e...9610665fE
0.00118163 ETH
184427262023-10-27 16:26:23415 days ago1698423983
0xBc31802e...9610665fE
0.00082645 ETH
184427262023-10-27 16:26:23415 days ago1698423983
0xBc31802e...9610665fE
0.00082645 ETH
184358672023-10-26 17:25:59416 days ago1698341159
0xBc31802e...9610665fE
0.00023669 ETH
184358672023-10-26 17:25:59416 days ago1698341159
0xBc31802e...9610665fE
0.00023669 ETH
184098422023-10-23 1:55:47420 days ago1698026147
0xBc31802e...9610665fE
0.00084858 ETH
184098422023-10-23 1:55:47420 days ago1698026147
0xBc31802e...9610665fE
0.00084858 ETH
183979342023-10-21 9:57:11422 days ago1697882231
0xBc31802e...9610665fE
0.00042239 ETH
183979342023-10-21 9:57:11422 days ago1697882231
0xBc31802e...9610665fE
0.00042239 ETH
183971532023-10-21 7:20:11422 days ago1697872811
0xBc31802e...9610665fE
0.0010135 ETH
183971532023-10-21 7:20:11422 days ago1697872811
0xBc31802e...9610665fE
0.0010135 ETH
183807792023-10-19 0:22:11424 days ago1697674931
0xBc31802e...9610665fE
0.00031028 ETH
183807792023-10-19 0:22:11424 days ago1697674931
0xBc31802e...9610665fE
0.00031028 ETH
183765872023-10-18 10:16:11425 days ago1697624171
0xBc31802e...9610665fE
0.00252378 ETH
183765872023-10-18 10:16:11425 days ago1697624171
0xBc31802e...9610665fE
0.00252378 ETH
183724272023-10-17 20:18:47425 days ago1697573927
0xBc31802e...9610665fE
0.00109299 ETH
183724272023-10-17 20:18:47425 days ago1697573927
0xBc31802e...9610665fE
0.00109299 ETH
183619392023-10-16 9:07:59427 days ago1697447279
0xBc31802e...9610665fE
0.00036934 ETH
183619392023-10-16 9:07:59427 days ago1697447279
0xBc31802e...9610665fE
0.00036934 ETH
183324782023-10-12 6:15:11431 days ago1697091311
0xBc31802e...9610665fE
0.00030729 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FRIENDTOOLS

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-29
*/

/**                                              
⠀⢀⣴⣶⣦⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣴⣶⣶⣶⣶⣦⡄⠀⠀⠀⠀⠀
⣴⣿⡿⠋⠻⢿⣿⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⠟⠋⠉⣡⣿⣿⠟⠁⠀⠀⠀⠀⠀
⠹⣿⣧⠀⠀⠀⠉⠛⢿⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⠟⠁⠀⠀⣾⣿⠟⠁⠀⠀⠀⠀⠀⡀⠀
⠀⠹⣿⣷⡀⠀⠀⠀⢸⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⡏⠀⠀⠀⠀⣿⣇⠀⠀⠀⠀⠀⣠⣾⣿⡇
⠀⠀⠘⣿⣷⣤⣤⣄⡀⠙⢿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⡇⠀⠀⠀⠀⠻⣿⣧⣀⣀⣠⣾⣿⠟⣿⣟
⠀⠀⠀⠈⠛⠛⠛⢿⣷⣆⠀⠙⢿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣹⣿⡇⠀⠀⠀⠀⠀⠈⠻⠿⠿⠿⠟⠁⢠⣿⡏
⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣷⣄⠀⠙⢿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⡿⠃
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣿⣷⣄⠀⠻⣿⣷⣄⠀⠀⠀⠀⢀⣴⣿⠟⠁⠀⢸⣿⠆⠀⠀⠀⠀⠀⠀⢀⣠⣴⣿⠟⠁⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣷⣄⠈⠻⣿⣷⣄⣀⣴⣿⠟⠁⢀⣶⣦⠀⠀⣠⣾⣿⣿⣷⣶⣿⣿⠿⠛⠁⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣷⣄⠈⢻⣿⣿⠟⠁⢀⣴⣿⠟⠁⢠⣼⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣿⠟⠁⢀⣴⣿⠟⠁⢀⣼⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⠟⠁⢀⣴⣿⠟⠁⢀⣶⣿⣿⡁⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⡟⠉⢀⣴⣿⠟⠁⢀⣴⣿⠟⠙⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⡿⠁⢀⣴⣿⠟⠁⢀⣴⣿⠟⠁⣠⣾⣿⠟⠻⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⢀⣤⣶⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠿⠿⠉⢀⣴⣿⢿⣿⣦⣶⣿⠟⠁⠀⠀⠈⠻⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⢀⣴⣿⠿⠋⠁⠀⠀⠀⠀⠉⠀⢰⣿⡆⠀⢀⣴⣿⠟⠁⢠⣿⣿⣿⣇⠀⠀⠀⣠⣤⡀⠈⠻⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀
⢠⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⠟⠁⠀⠀⠈⠛⠉⠻⣿⣷⣄⠀⠙⢿⣿⣦⡀⠈⠛⢿⣷⣦⡀⠀⠀⠀⠀
⣾⣿⠁⢀⣴⣶⣶⣶⣦⡀⠀⠀⠀⠀⠀⢸⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣷⣄⠀⠙⢿⣿⣦⡀⠀⠙⢿⣿⣦⡀⠀⠀
⣿⣿⣴⣿⡿⠋⠉⠙⢿⣿⣦⠀⠀⠀⠀⢸⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣦⡀⠀⠙⢿⣿⣦⡀⠀⠙⢿⣿⣦⡀
⢻⣿⡿⠋⠀⠀⠀⠀⠀⣿⣿⠀⠀⠀⠀⣼⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢿⣿⣦⡀⠀⠙⢿⣿⣦⠀⠀⠹⣿⣧
⠈⠉⠀⠀⠀⠀⠀⢀⣴⣿⡿⠀⠀⢀⣼⣿⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣦⡀⠀⠉⠉⠀⠀⢀⣿⡿
⠀⠀⠀⠀⠀⢀⣴⣿⡿⠋⣀⣠⣴⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣷⣤⣀⠀⢀⣠⣾⣿⠃
⠀⠀⠀⠀⠀⠘⠿⠿⣿⣿⠿⠿⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠿⢿⣿⡿⠿⠛⠁⠀
                                            
The complete toolkit for friend.tech offering the ONLY mirror for friendtech chatrooms and the FASTEST sign-ups tracker.

Website: http://friendtools.app/
Twitter: https://twitter.com/friend_tools
Telegram: https://t.me/friendtools
Discord: https://discord.gg/BBgq3jxyUt
Docs: http://docs.friendtools.app/
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.20;

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

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

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

}


contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

}


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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}


contract FRIENDTOOLS is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = false;
    address payable private _taxWallet;

    uint256 private _initialTaxForBuy=25;
    uint256 private _inititalTaxForSell=25;
    uint256 private _thresholdForFinalBuyTax=5;
    uint256 private _thresholdForFinalSellTax=5;
    uint256 private _reduceTaxForBuyAt=20;
    uint256 private _reduceSellTaxAt=20;
    uint256 private _preventSwapBefore=30;
    uint256 private _countForBuy=0;

    uint8 private constant _decimals = 8;
    uint256 private constant _theTotalSupply = 1000000 * 10**_decimals;
    string private constant _name = unicode"friendtools";
    string private constant _tickerSymbol = unicode"FTOOLS";
    uint256 public _maxTxAmount =   10000 * 10**_decimals;
    uint256 public _maxWalletSize = 10000 * 10**_decimals;
    uint256 public _taxSwapThreshold=0 * 10**_decimals;
    uint256 public _maxTaxSwap= 8000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }


    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _theTotalSupply;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

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

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

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

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

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


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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: Transfer amount exceeds permitted limit."));
        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) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "The transfer amount should be more than zero.");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);

            if (transferDelayEnabled) {
                if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                  require(_holderLastTransferTimestamp[tx.origin] < block.number,"Only one transfer per block allowed.");
                  _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                if(_countForBuy<_preventSwapBefore){
                  require(!isContract(to));
                }
                _countForBuy++;
            }


            taxAmount = amount.mul((_countForBuy>_reduceTaxForBuyAt)?_thresholdForFinalBuyTax:_initialTaxForBuy).div(100);
            if(to == uniswapV2Pair && from!= address(this) ){
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                taxAmount = amount.mul((_countForBuy>_reduceSellTaxAt)?_thresholdForFinalSellTax:_inititalTaxForSell).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _countForBuy>_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        if(tokenAmount==0){return;}
        if(!tradingOpen){return;}
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner{
        _maxTxAmount = _theTotalSupply;
        _maxWalletSize=_theTotalSupply;
        transferDelayEnabled=false;
        emit MaxTxAmountUpdated(_theTotalSupply);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _theTotalSupply);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }


    receive() external payable {}

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

    
    
    
}

Contract Security Audit

Contract 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":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","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":[],"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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"}]

60806040526006805460ff1916905560196007819055600890815560056009819055600a9081556014600b819055600c55601e600d555f600e556200004591906200033a565b620000539061271062000351565b600f55620000646008600a6200033a565b620000729061271062000351565b601055620000836008600a6200033a565b6200008f905f62000351565b601155620000a06008600a6200033a565b620000ae90611f4062000351565b6012556014805461ffff60a81b19169055348015620000cb575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060068054610100600160a81b0319166101003302179055620001316008600a6200033a565b6200014090620f424062000351565b335f908152600160208190526040822092909255600390620001695f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260039093528183208054851660019081179091556006546101009004909116835291208054909216179055620001cc3390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002056008600a6200033a565b6200021490620f424062000351565b60405190815260200160405180910390a36200036b565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200027f57815f19048211156200026357620002636200022b565b808516156200027157918102915b93841c939080029062000244565b509250929050565b5f82620002975750600162000334565b81620002a557505f62000334565b8160018114620002be5760028114620002c957620002e9565b600191505062000334565b60ff841115620002dd57620002dd6200022b565b50506001821b62000334565b5060208310610133831016604e8410600b84101617156200030e575081810a62000334565b6200031a83836200023f565b805f19048211156200033057620003306200022b565b0290505b92915050565b5f6200034a60ff84168362000287565b9392505050565b80820281158282048414176200033457620003346200022b565b6118d680620003795f395ff3fe60806040526004361061011e575f3560e01c8063751039fc1161009d578063a9059cbb11610062578063a9059cbb14610335578063bf474bed14610354578063c876d0b914610369578063c9567bf914610382578063dd62ed3e14610396575f80fd5b8063751039fc146102a35780637d1db4a5146102b75780638da5cb5b146102cc5780638f9a55c0146102f257806395d89b4114610307575f80fd5b8063313ce567116100e3578063313ce567146101f35780633bbac5791461020e57806351bc3c851461024557806370a082311461025b578063715018a61461028f575f80fd5b806306fdde0314610129578063095ea7b31461016e5780630faee56f1461019d57806318160ddd146101c057806323b872dd146101d4575f80fd5b3661012557005b5f80fd5b348015610134575f80fd5b5060408051808201909152600b81526a667269656e64746f6f6c7360a81b60208201525b60405161016591906114c2565b60405180910390f35b348015610179575f80fd5b5061018d610188366004611524565b6103da565b6040519015158152602001610165565b3480156101a8575f80fd5b506101b260125481565b604051908152602001610165565b3480156101cb575f80fd5b506101b26103f0565b3480156101df575f80fd5b5061018d6101ee36600461154e565b61040f565b3480156101fe575f80fd5b5060405160088152602001610165565b348015610219575f80fd5b5061018d61022836600461158c565b6001600160a01b03165f9081526004602052604090205460ff1690565b348015610250575f80fd5b50610259610476565b005b348015610266575f80fd5b506101b261027536600461158c565b6001600160a01b03165f9081526001602052604090205490565b34801561029a575f80fd5b506102596104cc565b3480156102ae575f80fd5b50610259610546565b3480156102c2575f80fd5b506101b2600f5481565b3480156102d7575f80fd5b505f546040516001600160a01b039091168152602001610165565b3480156102fd575f80fd5b506101b260105481565b348015610312575f80fd5b5060408051808201909152600681526546544f4f4c5360d01b6020820152610158565b348015610340575f80fd5b5061018d61034f366004611524565b6105fe565b34801561035f575f80fd5b506101b260115481565b348015610374575f80fd5b5060065461018d9060ff1681565b34801561038d575f80fd5b5061025961060a565b3480156103a1575f80fd5b506101b26103b03660046115a7565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f6103e63384846109b2565b5060015b92915050565b5f6103fd6008600a6116d2565b61040a90620f42406116e0565b905090565b5f61041b848484610ad5565b61046c8433610467856040518060600160405280602f8152602001611872602f91396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611121565b6109b2565b5060019392505050565b60065461010090046001600160a01b0316336001600160a01b03161461049a575f80fd5b305f9081526001602052604090205480156104b8576104b881611159565b4780156104c8576104c8816112e2565b5050565b5f546001600160a01b031633146104fe5760405162461bcd60e51b81526004016104f5906116f7565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461056f5760405162461bcd60e51b81526004016104f5906116f7565b61057b6008600a6116d2565b61058890620f42406116e0565b600f556105976008600a6116d2565b6105a490620f42406116e0565b6010556006805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6105de6008600a6116d2565b6105eb90620f42406116e0565b60405190815260200160405180910390a1565b5f6103e6338484610ad5565b5f546001600160a01b031633146106335760405162461bcd60e51b81526004016104f5906116f7565b601454600160a01b900460ff161561068d5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104f5565b601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556106d59030906106c86008600a6116d2565b61046790620f42406116e0565b60135f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610725573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610749919061172c565b6001600160a01b031663c9c653963060135f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107cc919061172c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610816573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083a919061172c565b601480546001600160a01b039283166001600160a01b03199091161790556013541663f305d7194730610881816001600160a01b03165f9081526001602052604090205490565b5f806108945f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156108fa573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061091f9190611747565b505060145460135460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610974573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109989190611772565b506014805462ff00ff60a01b19166201000160a01b179055565b6001600160a01b038316610a145760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104f5565b6001600160a01b038216610a755760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104f5565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b395760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104f5565b6001600160a01b038216610b9b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104f5565b5f8111610c005760405162461bcd60e51b815260206004820152602d60248201527f546865207472616e7366657220616d6f756e742073686f756c64206265206d6f60448201526c3932903a3430b7103d32b9379760991b60648201526084016104f5565b5f80546001600160a01b03858116911614801590610c2b57505f546001600160a01b03848116911614155b15610fe4576001600160a01b0384165f9081526004602052604090205460ff16158015610c7057506001600160a01b0383165f9081526004602052604090205460ff16155b610c78575f80fd5b60065460ff1615610d2f576013546001600160a01b03848116911614801590610caf57506014546001600160a01b03848116911614155b15610d2f57325f908152600560205260409020544311610d1d5760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f6044820152633bb2b21760e11b60648201526084016104f5565b325f9081526005602052604090204390555b6014546001600160a01b038581169116148015610d5a57506013546001600160a01b03848116911614155b8015610d7e57506001600160a01b0383165f9081526003602052604090205460ff16155b15610e7757600f54821115610dd15760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b60448201526064016104f5565b60105482610df3856001600160a01b03165f9081526001602052604090205490565b610dfd9190611791565b1115610e4b5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016104f5565b600d54600e541015610e6257823b15610e62575f80fd5b600e8054905f610e71836117a4565b91905055505b610ea36064610e9d600b54600e5411610e9257600754610e96565b6009545b859061131d565b906113a2565b6014549091506001600160a01b038481169116148015610ecc57506001600160a01b0384163014155b15610f4757600f54821115610f1f5760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b60448201526064016104f5565b610f446064610e9d600c54600e5411610f3a57600854610e96565b600a54859061131d565b90505b305f90815260016020526040902054601454600160a81b900460ff16158015610f7d57506014546001600160a01b038581169116145b8015610f925750601454600160b01b900460ff165b8015610f9f575060115481115b8015610fae5750600d54600e54115b15610fe257610fd0610fcb84610fc6846012546113e3565b6113e3565b611159565b478015610fe057610fe0476112e2565b505b505b801561105c57305f9081526001602052604090205461100390826113f7565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110539085815260200190565b60405180910390a35b6001600160a01b0384165f9081526001602052604090205461107e9083611455565b6001600160a01b0385165f908152600160205260409020556110c16110a38383611455565b6001600160a01b0385165f90815260016020526040902054906113f7565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61110a8585611455565b60405190815260200160405180910390a350505050565b5f81848411156111445760405162461bcd60e51b81526004016104f591906114c2565b505f61115084866117bc565b95945050505050565b6014805460ff60a81b1916600160a81b17905580156112d257601454600160a01b900460ff16156112d2576040805160028082526060820183525f9260208301908036833701905050905030815f815181106111b7576111b76117cf565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561120e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611232919061172c565b81600181518110611245576112456117cf565b6001600160a01b03928316602091820292909201015260135461126b91309116846109b2565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac947906112a39085905f908690309042906004016117e3565b5f604051808303815f87803b1580156112ba575f80fd5b505af11580156112cc573d5f803e3d5ffd5b50505050505b506014805460ff60a81b19169055565b6006546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f193505050501580156104c8573d5f803e3d5ffd5b5f825f0361132c57505f6103ea565b5f61133783856116e0565b9050826113448583611852565b1461139b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104f5565b9392505050565b5f61139b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611496565b5f8183116113f1578261139b565b50919050565b5f806114038385611791565b90508381101561139b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104f5565b5f61139b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611121565b5f81836114b65760405162461bcd60e51b81526004016104f591906114c2565b505f6111508486611852565b5f6020808352835180828501525f5b818110156114ed578581018301518582016040015282016114d1565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611521575f80fd5b50565b5f8060408385031215611535575f80fd5b82356115408161150d565b946020939093013593505050565b5f805f60608486031215611560575f80fd5b833561156b8161150d565b9250602084013561157b8161150d565b929592945050506040919091013590565b5f6020828403121561159c575f80fd5b813561139b8161150d565b5f80604083850312156115b8575f80fd5b82356115c38161150d565b915060208301356115d38161150d565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561162c57815f1904821115611612576116126115de565b8085161561161f57918102915b93841c93908002906115f7565b509250929050565b5f82611642575060016103ea565b8161164e57505f6103ea565b8160018114611664576002811461166e5761168a565b60019150506103ea565b60ff84111561167f5761167f6115de565b50506001821b6103ea565b5060208310610133831016604e8410600b84101617156116ad575081810a6103ea565b6116b783836115f2565b805f19048211156116ca576116ca6115de565b029392505050565b5f61139b60ff841683611634565b80820281158282048414176103ea576103ea6115de565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f6020828403121561173c575f80fd5b815161139b8161150d565b5f805f60608486031215611759575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611782575f80fd5b8151801515811461139b575f80fd5b808201808211156103ea576103ea6115de565b5f600182016117b5576117b56115de565b5060010190565b818103818111156103ea576103ea6115de565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118315784516001600160a01b03168352938301939183019160010161180c565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261186c57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a205472616e7366657220616d6f756e742065786365656473207065726d6974746564206c696d69742ea264697066735822122079da9450a9a3cb1a4bc8d3d42961e3a2666f501f7c152a18ab58e6dd46878b2064736f6c63430008140033

Deployed Bytecode

0x60806040526004361061011e575f3560e01c8063751039fc1161009d578063a9059cbb11610062578063a9059cbb14610335578063bf474bed14610354578063c876d0b914610369578063c9567bf914610382578063dd62ed3e14610396575f80fd5b8063751039fc146102a35780637d1db4a5146102b75780638da5cb5b146102cc5780638f9a55c0146102f257806395d89b4114610307575f80fd5b8063313ce567116100e3578063313ce567146101f35780633bbac5791461020e57806351bc3c851461024557806370a082311461025b578063715018a61461028f575f80fd5b806306fdde0314610129578063095ea7b31461016e5780630faee56f1461019d57806318160ddd146101c057806323b872dd146101d4575f80fd5b3661012557005b5f80fd5b348015610134575f80fd5b5060408051808201909152600b81526a667269656e64746f6f6c7360a81b60208201525b60405161016591906114c2565b60405180910390f35b348015610179575f80fd5b5061018d610188366004611524565b6103da565b6040519015158152602001610165565b3480156101a8575f80fd5b506101b260125481565b604051908152602001610165565b3480156101cb575f80fd5b506101b26103f0565b3480156101df575f80fd5b5061018d6101ee36600461154e565b61040f565b3480156101fe575f80fd5b5060405160088152602001610165565b348015610219575f80fd5b5061018d61022836600461158c565b6001600160a01b03165f9081526004602052604090205460ff1690565b348015610250575f80fd5b50610259610476565b005b348015610266575f80fd5b506101b261027536600461158c565b6001600160a01b03165f9081526001602052604090205490565b34801561029a575f80fd5b506102596104cc565b3480156102ae575f80fd5b50610259610546565b3480156102c2575f80fd5b506101b2600f5481565b3480156102d7575f80fd5b505f546040516001600160a01b039091168152602001610165565b3480156102fd575f80fd5b506101b260105481565b348015610312575f80fd5b5060408051808201909152600681526546544f4f4c5360d01b6020820152610158565b348015610340575f80fd5b5061018d61034f366004611524565b6105fe565b34801561035f575f80fd5b506101b260115481565b348015610374575f80fd5b5060065461018d9060ff1681565b34801561038d575f80fd5b5061025961060a565b3480156103a1575f80fd5b506101b26103b03660046115a7565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f6103e63384846109b2565b5060015b92915050565b5f6103fd6008600a6116d2565b61040a90620f42406116e0565b905090565b5f61041b848484610ad5565b61046c8433610467856040518060600160405280602f8152602001611872602f91396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611121565b6109b2565b5060019392505050565b60065461010090046001600160a01b0316336001600160a01b03161461049a575f80fd5b305f9081526001602052604090205480156104b8576104b881611159565b4780156104c8576104c8816112e2565b5050565b5f546001600160a01b031633146104fe5760405162461bcd60e51b81526004016104f5906116f7565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461056f5760405162461bcd60e51b81526004016104f5906116f7565b61057b6008600a6116d2565b61058890620f42406116e0565b600f556105976008600a6116d2565b6105a490620f42406116e0565b6010556006805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6105de6008600a6116d2565b6105eb90620f42406116e0565b60405190815260200160405180910390a1565b5f6103e6338484610ad5565b5f546001600160a01b031633146106335760405162461bcd60e51b81526004016104f5906116f7565b601454600160a01b900460ff161561068d5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104f5565b601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556106d59030906106c86008600a6116d2565b61046790620f42406116e0565b60135f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610725573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610749919061172c565b6001600160a01b031663c9c653963060135f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107cc919061172c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610816573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083a919061172c565b601480546001600160a01b039283166001600160a01b03199091161790556013541663f305d7194730610881816001600160a01b03165f9081526001602052604090205490565b5f806108945f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156108fa573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061091f9190611747565b505060145460135460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610974573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109989190611772565b506014805462ff00ff60a01b19166201000160a01b179055565b6001600160a01b038316610a145760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104f5565b6001600160a01b038216610a755760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104f5565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b395760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104f5565b6001600160a01b038216610b9b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104f5565b5f8111610c005760405162461bcd60e51b815260206004820152602d60248201527f546865207472616e7366657220616d6f756e742073686f756c64206265206d6f60448201526c3932903a3430b7103d32b9379760991b60648201526084016104f5565b5f80546001600160a01b03858116911614801590610c2b57505f546001600160a01b03848116911614155b15610fe4576001600160a01b0384165f9081526004602052604090205460ff16158015610c7057506001600160a01b0383165f9081526004602052604090205460ff16155b610c78575f80fd5b60065460ff1615610d2f576013546001600160a01b03848116911614801590610caf57506014546001600160a01b03848116911614155b15610d2f57325f908152600560205260409020544311610d1d5760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f6044820152633bb2b21760e11b60648201526084016104f5565b325f9081526005602052604090204390555b6014546001600160a01b038581169116148015610d5a57506013546001600160a01b03848116911614155b8015610d7e57506001600160a01b0383165f9081526003602052604090205460ff16155b15610e7757600f54821115610dd15760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b60448201526064016104f5565b60105482610df3856001600160a01b03165f9081526001602052604090205490565b610dfd9190611791565b1115610e4b5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016104f5565b600d54600e541015610e6257823b15610e62575f80fd5b600e8054905f610e71836117a4565b91905055505b610ea36064610e9d600b54600e5411610e9257600754610e96565b6009545b859061131d565b906113a2565b6014549091506001600160a01b038481169116148015610ecc57506001600160a01b0384163014155b15610f4757600f54821115610f1f5760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b60448201526064016104f5565b610f446064610e9d600c54600e5411610f3a57600854610e96565b600a54859061131d565b90505b305f90815260016020526040902054601454600160a81b900460ff16158015610f7d57506014546001600160a01b038581169116145b8015610f925750601454600160b01b900460ff165b8015610f9f575060115481115b8015610fae5750600d54600e54115b15610fe257610fd0610fcb84610fc6846012546113e3565b6113e3565b611159565b478015610fe057610fe0476112e2565b505b505b801561105c57305f9081526001602052604090205461100390826113f7565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110539085815260200190565b60405180910390a35b6001600160a01b0384165f9081526001602052604090205461107e9083611455565b6001600160a01b0385165f908152600160205260409020556110c16110a38383611455565b6001600160a01b0385165f90815260016020526040902054906113f7565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61110a8585611455565b60405190815260200160405180910390a350505050565b5f81848411156111445760405162461bcd60e51b81526004016104f591906114c2565b505f61115084866117bc565b95945050505050565b6014805460ff60a81b1916600160a81b17905580156112d257601454600160a01b900460ff16156112d2576040805160028082526060820183525f9260208301908036833701905050905030815f815181106111b7576111b76117cf565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561120e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611232919061172c565b81600181518110611245576112456117cf565b6001600160a01b03928316602091820292909201015260135461126b91309116846109b2565b60135460405163791ac94760e01b81526001600160a01b039091169063791ac947906112a39085905f908690309042906004016117e3565b5f604051808303815f87803b1580156112ba575f80fd5b505af11580156112cc573d5f803e3d5ffd5b50505050505b506014805460ff60a81b19169055565b6006546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f193505050501580156104c8573d5f803e3d5ffd5b5f825f0361132c57505f6103ea565b5f61133783856116e0565b9050826113448583611852565b1461139b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104f5565b9392505050565b5f61139b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611496565b5f8183116113f1578261139b565b50919050565b5f806114038385611791565b90508381101561139b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104f5565b5f61139b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611121565b5f81836114b65760405162461bcd60e51b81526004016104f591906114c2565b505f6111508486611852565b5f6020808352835180828501525f5b818110156114ed578581018301518582016040015282016114d1565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611521575f80fd5b50565b5f8060408385031215611535575f80fd5b82356115408161150d565b946020939093013593505050565b5f805f60608486031215611560575f80fd5b833561156b8161150d565b9250602084013561157b8161150d565b929592945050506040919091013590565b5f6020828403121561159c575f80fd5b813561139b8161150d565b5f80604083850312156115b8575f80fd5b82356115c38161150d565b915060208301356115d38161150d565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561162c57815f1904821115611612576116126115de565b8085161561161f57918102915b93841c93908002906115f7565b509250929050565b5f82611642575060016103ea565b8161164e57505f6103ea565b8160018114611664576002811461166e5761168a565b60019150506103ea565b60ff84111561167f5761167f6115de565b50506001821b6103ea565b5060208310610133831016604e8410600b84101617156116ad575081810a6103ea565b6116b783836115f2565b805f19048211156116ca576116ca6115de565b029392505050565b5f61139b60ff841683611634565b80820281158282048414176103ea576103ea6115de565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f6020828403121561173c575f80fd5b815161139b8161150d565b5f805f60608486031215611759575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215611782575f80fd5b8151801515811461139b575f80fd5b808201808211156103ea576103ea6115de565b5f600182016117b5576117b56115de565b5060010190565b818103818111156103ea576103ea6115de565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118315784516001600160a01b03168352938301939183019160010161180c565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261186c57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a205472616e7366657220616d6f756e742065786365656473207065726d6974746564206c696d69742ea264697066735822122079da9450a9a3cb1a4bc8d3d42961e3a2666f501f7c152a18ab58e6dd46878b2064736f6c63430008140033

Deployed Bytecode Sourcemap

7046:8612:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9038:83;;;;;;;;;;-1:-1:-1;9108:5:0;;;;;;;;;;;;-1:-1:-1;;;9108:5:0;;;;9038:83;;;;;;;:::i;:::-;;;;;;;;9887:161;;;;;;;;;;-1:-1:-1;9887:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;9887:161:0;1023:187:1;8299:48:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;8299:48:0;1215:177:1;9321:103:0;;;;;;;;;;;;;:::i;10056:320::-;;;;;;;;;;-1:-1:-1;10056:320:0;;;;;:::i;:::-;;:::i;9230:83::-;;;;;;;;;;-1:-1:-1;9230:83:0;;7920:1;2000:36:1;;1988:2;1973:18;9230:83:0;1858:184:1;14267:83:0;;;;;;;;;;-1:-1:-1;14267:83:0;;;;;:::i;:::-;-1:-1:-1;;;;;14335:7:0;14314:4;14335:7;;;:4;:7;;;;;;;;;14267:83;15287:348;;;;;;;;;;;;;:::i;:::-;;9434:119;;;;;;;;;;-1:-1:-1;9434:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;9527:18:0;9500:7;9527:18;;;:9;:18;;;;;;;9434:119;6123:148;;;;;;;;;;;;;:::i;13939:220::-;;;;;;;;;;;;;:::i;8122:53::-;;;;;;;;;;;;;;;;5909:79;;;;;;;;;;-1:-1:-1;5947:7:0;5974:6;5909:79;;-1:-1:-1;;;;;5974:6:0;;;2445:51:1;;2433:2;2418:18;5909:79:0;2299:203:1;8182:53:0;;;;;;;;;;;;;;;;9129:93;;;;;;;;;;-1:-1:-1;9201:13:0;;;;;;;;;;;;-1:-1:-1;;;9201:13:0;;;;9129:93;;9561:167;;;;;;;;;;-1:-1:-1;9561:167:0;;;;;:::i;:::-;;:::i;8242:50::-;;;;;;;;;;;;;;;;7439:40;;;;;;;;;;-1:-1:-1;7439:40:0;;;;;;;;14358:679;;;;;;;;;;;;;:::i;9736:143::-;;;;;;;;;;-1:-1:-1;9736:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;9844:18:0;;;9817:7;9844:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9736:143;9887:161;9962:4;9979:39;3742:10;10002:7;10011:6;9979:8;:39::i;:::-;-1:-1:-1;10036:4:0;9887:161;;;;;:::o;9321:103::-;9374:7;7981:13;7920:1;7981:2;:13;:::i;:::-;7971:23;;:7;:23;:::i;:::-;9394:22;;9321:103;:::o;10056:320::-;10154:4;10171:36;10181:6;10189:9;10200:6;10171:9;:36::i;:::-;10218:128;10227:6;3742:10;10249:96;10287:6;10249:96;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10249:19:0;;;;;;:11;:19;;;;;;;;3742:10;10249:33;;;;;;;;;;:37;:96::i;:::-;10218:8;:128::i;:::-;-1:-1:-1;10364:4:0;10056:320;;;;;:::o;15287:348::-;15351:10;;;;;-1:-1:-1;;;;;15351:10:0;3742;-1:-1:-1;;;;;15337:24:0;;15329:33;;;;;;15412:4;15373:20;9527:18;;;:9;:18;;;;;;15432:14;;15429:73;;15460:30;15477:12;15460:16;:30::i;:::-;15531:21;15566:12;;15563:65;;15592:24;15605:10;15592:12;:24::i;:::-;15318:317;;15287:348::o;6123:148::-;6036:6;;-1:-1:-1;;;;;6036:6:0;3742:10;6036:22;6028:67;;;;-1:-1:-1;;;6028:67:0;;;;;;;:::i;:::-;;;;;;;;;6230:1:::1;6214:6:::0;;6193:40:::1;::::0;-1:-1:-1;;;;;6214:6:0;;::::1;::::0;6193:40:::1;::::0;6230:1;;6193:40:::1;6261:1;6244:19:::0;;-1:-1:-1;;;;;;6244:19:0::1;::::0;;6123:148::o;13939:220::-;6036:6;;-1:-1:-1;;;;;6036:6:0;3742:10;6036:22;6028:67;;;;-1:-1:-1;;;6028:67:0;;;;;;;:::i;:::-;7981:13:::1;7920:1;7981:2;:13;:::i;:::-;7971:23;::::0;:7:::1;:23;:::i;:::-;13992:12;:30:::0;7981:13:::1;7920:1;7981:2;:13;:::i;:::-;7971:23;::::0;:7:::1;:23;:::i;:::-;14033:14;:30:::0;14074:20:::1;:26:::0;;-1:-1:-1;;14074:26:0::1;::::0;;14116:35:::1;7981:13;7920:1;-1:-1:-1::0;7981:13:0::1;:::i;:::-;7971:23;::::0;:7:::1;:23;:::i;:::-;14116:35;::::0;1361:25:1;;;1349:2;1334:18;14116:35:0::1;;;;;;;13939:220::o:0;9561:167::-;9639:4;9656:42;3742:10;9680:9;9691:6;9656:9;:42::i;14358:679::-;6036:6;;-1:-1:-1;;;;;6036:6:0;3742:10;6036:22;6028:67;;;;-1:-1:-1;;;6028:67:0;;;;;;;:::i;:::-;14422:11:::1;::::0;-1:-1:-1;;;14422:11:0;::::1;;;14421:12;14413:47;;;::::0;-1:-1:-1;;;14413:47:0;;5151:2:1;14413:47:0::1;::::0;::::1;5133:21:1::0;5190:2;5170:18;;;5163:30;5229:25;5209:18;;;5202:53;5272:18;;14413:47:0::1;4949:347:1::0;14413:47:0::1;14471:15;:80:::0;;-1:-1:-1;;;;;;14471:80:0::1;14508:42;14471:80:::0;;::::1;::::0;;;14562:66:::1;::::0;14579:4:::1;::::0;7981:13:::1;7920:1;7981:2;:13;:::i;:::-;7971:23;::::0;:7:::1;:23;:::i;14562:66::-;14673:15;;;;;;;;;-1:-1:-1::0;;;;;14673:15:0::1;-1:-1:-1::0;;;;;14673:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14655:55:0::1;;14719:4;14726:15;;;;;;;;;-1:-1:-1::0;;;;;14726:15:0::1;-1:-1:-1::0;;;;;14726:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14655:94;::::0;-1:-1:-1;;;;;;14655:94:0::1;::::0;;;;;;-1:-1:-1;;;;;5787:15:1;;;14655:94:0::1;::::0;::::1;5769:34:1::0;5839:15;;5819:18;;;5812:43;5704:18;;14655:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14639:13;:110:::0;;-1:-1:-1;;;;;14639:110:0;;::::1;-1:-1:-1::0;;;;;;14639:110:0;;::::1;;::::0;;14760:15:::1;::::0;::::1;:31;14799:21;14830:4;14836:24;14830:4:::0;-1:-1:-1;;;;;9527:18:0;9500:7;9527:18;;;:9;:18;;;;;;;9434:119;14836:24:::1;14861:1;14863::::0;14865:7:::1;5947::::0;5974:6;-1:-1:-1;;;;;5974:6:0;;5909:79;14865:7:::1;14760:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;14760:129:0;;;-1:-1:-1;;;;;6225:15:1;;;14760:129:0::1;::::0;::::1;6207:34:1::0;6257:18;;;6250:34;;;;6300:18;;;6293:34;;;;6343:18;;;6336:34;6407:15;;;6386:19;;;6379:44;14873:15:0::1;6439:19:1::0;;;6432:35;6141:19;;14760:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14907:13:0::1;::::0;14938:15:::1;::::0;14900:71:::1;::::0;-1:-1:-1;;;14900:71:0;;-1:-1:-1;;;;;14938:15:0;;::::1;14900:71;::::0;::::1;6963:51:1::0;-1:-1:-1;;7030:18:1;;;7023:34;14907:13:0;::::1;::::0;-1:-1:-1;14900:29:0::1;::::0;6936:18:1;;14900:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;14982:11:0::1;:18:::0;;-1:-1:-1;;;;15011:18:0;-1:-1:-1;;;15011:18:0;;;14358:679::o;10384:335::-;-1:-1:-1;;;;;10477:19:0;;10469:68;;;;-1:-1:-1;;;10469:68:0;;7552:2:1;10469:68:0;;;7534:21:1;7591:2;7571:18;;;7564:30;7630:34;7610:18;;;7603:62;-1:-1:-1;;;7681:18:1;;;7674:34;7725:19;;10469:68:0;7350:400:1;10469:68:0;-1:-1:-1;;;;;10556:21:0;;10548:68;;;;-1:-1:-1;;;10548:68:0;;7957:2:1;10548:68:0;;;7939:21:1;7996:2;7976:18;;;7969:30;8035:34;8015:18;;;8008:62;-1:-1:-1;;;8086:18:1;;;8079:32;8128:19;;10548:68:0;7755:398:1;10548:68:0;-1:-1:-1;;;;;10627:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10679:32;;1361:25:1;;;10679:32:0;;1334:18:1;10679:32:0;;;;;;;10384:335;;;:::o;10729:2531::-;-1:-1:-1;;;;;10817:18:0;;10809:68;;;;-1:-1:-1;;;10809:68:0;;8360:2:1;10809:68:0;;;8342:21:1;8399:2;8379:18;;;8372:30;8438:34;8418:18;;;8411:62;-1:-1:-1;;;8489:18:1;;;8482:35;8534:19;;10809:68:0;8158:401:1;10809:68:0;-1:-1:-1;;;;;10896:16:0;;10888:64;;;;-1:-1:-1;;;10888:64:0;;8766:2:1;10888:64:0;;;8748:21:1;8805:2;8785:18;;;8778:30;8844:34;8824:18;;;8817:62;-1:-1:-1;;;8895:18:1;;;8888:33;8938:19;;10888:64:0;8564:399:1;10888:64:0;10980:1;10971:6;:10;10963:68;;;;-1:-1:-1;;;10963:68:0;;9170:2:1;10963:68:0;;;9152:21:1;9209:2;9189:18;;;9182:30;9248:34;9228:18;;;9221:62;-1:-1:-1;;;9299:18:1;;;9292:43;9352:19;;10963:68:0;8968:409:1;10963:68:0;11042:17;5974:6;;-1:-1:-1;;;;;11076:15:0;;;5974:6;;11076:15;;;;:32;;-1:-1:-1;5947:7:0;5974:6;-1:-1:-1;;;;;11095:13:0;;;5974:6;;11095:13;;11076:32;11072:1832;;;-1:-1:-1;;;;;11134:10:0;;;;;;:4;:10;;;;;;;;11133:11;:24;;;;-1:-1:-1;;;;;;11149:8:0;;;;;;:4;:8;;;;;;;;11148:9;11133:24;11125:33;;;;;;11179:20;;;;11175:346;;;11238:15;;-1:-1:-1;;;;;11224:30:0;;;11238:15;;11224:30;;;;:62;;-1:-1:-1;11272:13:0;;-1:-1:-1;;;;;11258:28:0;;;11272:13;;11258:28;;11224:62;11220:286;;;11346:9;11317:39;;;;:28;:39;;;;;;11359:12;-1:-1:-1;11309:102:0;;;;-1:-1:-1;;;11309:102:0;;9584:2:1;11309:102:0;;;9566:21:1;9623:2;9603:18;;;9596:30;9662:34;9642:18;;;9635:62;-1:-1:-1;;;9713:18:1;;;9706:34;9757:19;;11309:102:0;9382:400:1;11309:102:0;11461:9;11432:39;;;;:28;:39;;;;;11474:12;11432:54;;11220:286;11549:13;;-1:-1:-1;;;;;11541:21:0;;;11549:13;;11541:21;:55;;;;-1:-1:-1;11580:15:0;;-1:-1:-1;;;;;11566:30:0;;;11580:15;;11566:30;;11541:55;:83;;;;-1:-1:-1;;;;;;11602:22:0;;;;;;:18;:22;;;;;;;;11600:24;11541:83;11537:434;;;11664:12;;11654:6;:22;;11646:60;;;;-1:-1:-1;;;11646:60:0;;9989:2:1;11646:60:0;;;9971:21:1;10028:2;10008:18;;;10001:30;-1:-1:-1;;;10047:18:1;;;10040:55;10112:18;;11646:60:0;9787:349:1;11646:60:0;11759:14;;11749:6;11733:13;11743:2;-1:-1:-1;;;;;9527:18:0;9500:7;9527:18;;;:9;:18;;;;;;;9434:119;11733:13;:22;;;;:::i;:::-;:40;;11725:79;;;;-1:-1:-1;;;11725:79:0;;10473:2:1;11725:79:0;;;10455:21:1;10512:2;10492:18;;;10485:30;10551:28;10531:18;;;10524:56;10597:18;;11725:79:0;10271:350:1;11725:79:0;11839:18;;11826:12;;:31;11823:100;;;15215:20;;15263:8;11879:24;;;;;;11941:12;:14;;;:12;:14;;;:::i;:::-;;;;;;11537:434;12001:97;12094:3;12001:88;12026:18;;12013:12;;:31;12012:76;;12071:17;;12012:76;;;12046:24;;12012:76;12001:6;;:10;:88::i;:::-;:92;;:97::i;:::-;12122:13;;11989:109;;-1:-1:-1;;;;;;12116:19:0;;;12122:13;;12116:19;:43;;;;-1:-1:-1;;;;;;12139:20:0;;12154:4;12139:20;;12116:43;12113:272;;;12198:12;;12188:6;:22;;12180:60;;;;-1:-1:-1;;;12180:60:0;;9989:2:1;12180:60:0;;;9971:21:1;10028:2;10008:18;;;10001:30;-1:-1:-1;;;10047:18:1;;;10040:55;10112:18;;12180:60:0;9787:349:1;12180:60:0;12271:98;12365:3;12271:89;12296:16;;12283:12;;:29;12282:77;;12340:19;;12282:77;;;12314:25;;12271:6;;:10;:89::i;:98::-;12259:110;;12113:272;12450:4;12401:28;9527:18;;;:9;:18;;;;;;12476:6;;-1:-1:-1;;;12476:6:0;;;;12475:7;:30;;;;-1:-1:-1;12492:13:0;;-1:-1:-1;;;;;12486:19:0;;;12492:13;;12486:19;12475:30;:45;;;;-1:-1:-1;12509:11:0;;-1:-1:-1;;;12509:11:0;;;;12475:45;:87;;;;;12545:17;;12524:20;:38;12475:87;:122;;;;;12579:18;;12566:12;;:31;12475:122;12471:422;;;12618:67;12635:49;12639:6;12646:37;12650:20;12671:11;;12646:3;:37::i;:::-;12635:3;:49::i;:::-;12618:16;:67::i;:::-;12733:21;12776:22;;12773:105;;12823:35;12836:21;12823:12;:35::i;:::-;12599:294;12471:422;11110:1794;11072:1832;12919:11;;12916:161;;12987:4;12969:24;;;;:9;:24;;;;;;:39;;12998:9;12969:28;:39::i;:::-;12962:4;12944:24;;;;:9;:24;;;;;;;:64;;;;13026:39;;-1:-1:-1;;;;;13026:39:0;;;;;;;13055:9;1361:25:1;;1349:2;1334:18;;1215:177;13026:39:0;;;;;;;;12916:161;-1:-1:-1;;;;;13103:15:0;;;;;;:9;:15;;;;;;:27;;13123:6;13103:19;:27::i;:::-;-1:-1:-1;;;;;13087:15:0;;;;;;:9;:15;;;;;:43;13155:40;13173:21;:6;13184:9;13173:10;:21::i;:::-;-1:-1:-1;;;;;13155:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;13141:13:0;;;;;;;:9;:13;;;;;:54;;;;13211:41;;;13230:21;:6;13241:9;13230:10;:21::i;:::-;13211:41;;1361:25:1;;;1349:2;1334:18;13211:41:0;;;;;;;10798:2462;10729:2531;;;:::o;4799:190::-;4885:7;4921:12;4913:6;;;;4905:29;;;;-1:-1:-1;;;4905:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4945:9:0;4957:5;4961:1;4957;:5;:::i;:::-;4945:17;4799:190;-1:-1:-1;;;;;4799:190:0:o;13376:555::-;8629:6;:13;;-1:-1:-1;;;;8629:13:0;-1:-1:-1;;;8629:13:0;;;13454:27;;13473:7:::1;13454:27;13495:11;::::0;-1:-1:-1;;;13495:11:0;::::1;;;13491:25:::0;13508:7:::1;13491:25;13550:16;::::0;;13564:1:::1;13550:16:::0;;;;;::::1;::::0;;13526:21:::1;::::0;13550:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13550:16:0::1;13526:40;;13595:4;13577;13582:1;13577:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13577:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13621:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;13621:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;13577:7;;13621:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13611:4;13616:1;13611:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13611:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;13686:15:::1;::::0;13654:62:::1;::::0;13671:4:::1;::::0;13686:15:::1;13704:11:::0;13654:8:::1;:62::i;:::-;13727:15;::::0;:196:::1;::::0;-1:-1:-1;;;13727:196:0;;-1:-1:-1;;;;;13727:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;13808:11;;13727:15:::1;::::0;13850:4;;13877::::1;::::0;13897:15:::1;::::0;13727:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13443:488;8653:1;-1:-1:-1::0;8665:6:0;:14;;-1:-1:-1;;;;8665:14:0;;;13376:555::o;14167:92::-;14224:10;;:27;;:10;;;;-1:-1:-1;;;;;14224:10:0;;:27;;;;;;;;;;;;:10;:27;;;;;;;;;;;;;;;;;;;4997:246;5055:7;5079:1;5084;5079:6;5075:47;;-1:-1:-1;5109:1:0;5102:8;;5075:47;5132:9;5144:5;5148:1;5144;:5;:::i;:::-;5132:17;-1:-1:-1;5177:1:0;5168:5;5172:1;5132:17;5168:5;:::i;:::-;:10;5160:56;;;;-1:-1:-1;;;5160:56:0;;12572:2:1;5160:56:0;;;12554:21:1;12611:2;12591:18;;;12584:30;12650:34;12630:18;;;12623:62;-1:-1:-1;;;12701:18:1;;;12694:31;12742:19;;5160:56:0;12370:397:1;5160:56:0;5234:1;4997:246;-1:-1:-1;;;4997:246:0:o;5251:132::-;5309:7;5336:39;5340:1;5343;5336:39;;;;;;;;;;;;;;;;;:3;:39::i;13270:98::-;13327:7;13354:1;13352;:3;13351:9;;13359:1;13351:9;;;-1:-1:-1;13357:1:0;13270:98;-1:-1:-1;13270:98:0:o;4468:179::-;4526:7;;4558:5;4562:1;4558;:5;:::i;:::-;4546:17;;4587:1;4582;:6;;4574:46;;;;-1:-1:-1;;;4574:46:0;;12974:2:1;4574:46:0;;;12956:21:1;13013:2;12993:18;;;12986:30;13052:29;13032:18;;;13025:57;13099:18;;4574:46:0;12772:351:1;4655:136:0;4713:7;4740:43;4744:1;4747;4740:43;;;;;;;;;;;;;;;;;:3;:43::i;5391:189::-;5477:7;5512:12;5505:5;5497:28;;;;-1:-1:-1;;;5497:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5536:9:0;5548:5;5552:1;5548;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:127::-;2961:10;2956:3;2952:20;2949:1;2942:31;2992:4;2989:1;2982:15;3016:4;3013:1;3006:15;3032:422;3121:1;3164:5;3121:1;3178:270;3199:7;3189:8;3186:21;3178:270;;;3258:4;3254:1;3250:6;3246:17;3240:4;3237:27;3234:53;;;3267:18;;:::i;:::-;3317:7;3307:8;3303:22;3300:55;;;3337:16;;;;3300:55;3416:22;;;;3376:15;;;;3178:270;;;3182:3;3032:422;;;;;:::o;3459:806::-;3508:5;3538:8;3528:80;;-1:-1:-1;3579:1:1;3593:5;;3528:80;3627:4;3617:76;;-1:-1:-1;3664:1:1;3678:5;;3617:76;3709:4;3727:1;3722:59;;;;3795:1;3790:130;;;;3702:218;;3722:59;3752:1;3743:10;;3766:5;;;3790:130;3827:3;3817:8;3814:17;3811:43;;;3834:18;;:::i;:::-;-1:-1:-1;;3890:1:1;3876:16;;3905:5;;3702:218;;4004:2;3994:8;3991:16;3985:3;3979:4;3976:13;3972:36;3966:2;3956:8;3953:16;3948:2;3942:4;3939:12;3935:35;3932:77;3929:159;;;-1:-1:-1;4041:19:1;;;4073:5;;3929:159;4120:34;4145:8;4139:4;4120:34;:::i;:::-;4190:6;4186:1;4182:6;4178:19;4169:7;4166:32;4163:58;;;4201:18;;:::i;:::-;4239:20;;3459:806;-1:-1:-1;;;3459:806:1:o;4270:140::-;4328:5;4357:47;4398:4;4388:8;4384:19;4378:4;4357:47;:::i;4415:168::-;4488:9;;;4519;;4536:15;;;4530:22;;4516:37;4506:71;;4557:18;;:::i;4588:356::-;4790:2;4772:21;;;4809:18;;;4802:30;4868:34;4863:2;4848:18;;4841:62;4935:2;4920:18;;4588:356::o;5301:251::-;5371:6;5424:2;5412:9;5403:7;5399:23;5395:32;5392:52;;;5440:1;5437;5430:12;5392:52;5472:9;5466:16;5491:31;5516:5;5491:31;:::i;6478:306::-;6566:6;6574;6582;6635:2;6623:9;6614:7;6610:23;6606:32;6603:52;;;6651:1;6648;6641:12;6603:52;6680:9;6674:16;6664:26;;6730:2;6719:9;6715:18;6709:25;6699:35;;6774:2;6763:9;6759:18;6753:25;6743:35;;6478:306;;;;;:::o;7068:277::-;7135:6;7188:2;7176:9;7167:7;7163:23;7159:32;7156:52;;;7204:1;7201;7194:12;7156:52;7236:9;7230:16;7289:5;7282:13;7275:21;7268:5;7265:32;7255:60;;7311:1;7308;7301:12;10141:125;10206:9;;;10227:10;;;10224:36;;;10240:18;;:::i;10626:135::-;10665:3;10686:17;;;10683:43;;10706:18;;:::i;:::-;-1:-1:-1;10753:1:1;10742:13;;10626:135::o;10766:128::-;10833:9;;;10854:11;;;10851:37;;;10868:18;;:::i;11031:127::-;11092:10;11087:3;11083:20;11080:1;11073:31;11123:4;11120:1;11113:15;11147:4;11144:1;11137:15;11163:980;11425:4;11473:3;11462:9;11458:19;11504:6;11493:9;11486:25;11530:2;11568:6;11563:2;11552:9;11548:18;11541:34;11611:3;11606:2;11595:9;11591:18;11584:31;11635:6;11670;11664:13;11701:6;11693;11686:22;11739:3;11728:9;11724:19;11717:26;;11778:2;11770:6;11766:15;11752:29;;11799:1;11809:195;11823:6;11820:1;11817:13;11809:195;;;11888:13;;-1:-1:-1;;;;;11884:39:1;11872:52;;11979:15;;;;11944:12;;;;11920:1;11838:9;11809:195;;;-1:-1:-1;;;;;;;12060:32:1;;;;12055:2;12040:18;;12033:60;-1:-1:-1;;;12124:3:1;12109:19;12102:35;12021:3;11163:980;-1:-1:-1;;;11163:980:1:o;12148:217::-;12188:1;12214;12204:132;;12258:10;12253:3;12249:20;12246:1;12239:31;12293:4;12290:1;12283:15;12321:4;12318:1;12311:15;12204:132;-1:-1:-1;12350:9:1;;12148:217::o

Swarm Source

ipfs://79da9450a9a3cb1a4bc8d3d42961e3a2666f501f7c152a18ab58e6dd46878b20

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  ]
[ 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.